catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java
index dff0d14..21ea18e 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java
@@ -46,8 +46,9 @@
 			nameMappings = new HashMap<AbstractElement, String>() {
 				private static final long serialVersionUID = 1L;
 				{
-					put(grammarAccess.getTriggerPolicyAccess().getAlternatives(), "rule__TriggerPolicy__Alternatives");
-					put(grammarAccess.getSchedulerAccess().getAlternatives(), "rule__Scheduler__Alternatives");
+					put(grammarAccess.getSignalDefinitionAccess().getAlternatives(), "rule__SignalDefinition__Alternatives");
+					put(grammarAccess.getWatcherDefinitionAccess().getAlternatives(), "rule__WatcherDefinition__Alternatives");
+					put(grammarAccess.getSchedulerTypeAccess().getAlternatives(), "rule__SchedulerType__Alternatives");
 					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2(), "rule__XImportDeclaration__Alternatives_2");
 					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3(), "rule__XImportDeclaration__Alternatives_2_0_3");
 					put(grammarAccess.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
@@ -98,8 +99,8 @@
 					put(grammarAccess.getSignalPackageAccess().getGroup(), "rule__SignalPackage__Group__0");
 					put(grammarAccess.getSignalPackageAccess().getGroup_3(), "rule__SignalPackage__Group_3__0");
 					put(grammarAccess.getSignalWatcherAccess().getGroup(), "rule__SignalWatcher__Group__0");
-					put(grammarAccess.getSignalHandlerAccess().getGroup(), "rule__SignalHandler__Group__0");
-					put(grammarAccess.getTriggerFileAccess().getGroup(), "rule__TriggerFile__Group__0");
+					put(grammarAccess.getWatcherWithFileMaskAccess().getGroup(), "rule__WatcherWithFileMask__Group__0");
+					put(grammarAccess.getWatcherWithFileNameAccess().getGroup(), "rule__WatcherWithFileName__Group__0");
 					put(grammarAccess.getSignalSchedulerAccess().getGroup(), "rule__SignalScheduler__Group__0");
 					put(grammarAccess.getCronSchedulerAccess().getGroup(), "rule__CronScheduler__Group__0");
 					put(grammarAccess.getHourlySchedulerAccess().getGroup(), "rule__HourlyScheduler__Group__0");
@@ -310,16 +311,22 @@
 					put(grammarAccess.getSignalModelAccess().getImportSectionAssignment_0(), "rule__SignalModel__ImportSectionAssignment_0");
 					put(grammarAccess.getSignalModelAccess().getPackagesAssignment_1(), "rule__SignalModel__PackagesAssignment_1");
 					put(grammarAccess.getSignalPackageAccess().getNameAssignment_2(), "rule__SignalPackage__NameAssignment_2");
-					put(grammarAccess.getSignalPackageAccess().getWatchersAssignment_3_1(), "rule__SignalPackage__WatchersAssignment_3_1");
+					put(grammarAccess.getSignalPackageAccess().getSignalsAssignment_3_1(), "rule__SignalPackage__SignalsAssignment_3_1");
 					put(grammarAccess.getSignalWatcherAccess().getNameAssignment_2(), "rule__SignalWatcher__NameAssignment_2");
-					put(grammarAccess.getSignalWatcherAccess().getDirectoryAssignment_4(), "rule__SignalWatcher__DirectoryAssignment_4");
-					put(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6(), "rule__SignalWatcher__HandlersAssignment_6");
-					put(grammarAccess.getSignalHandlerAccess().getNameAssignment_2(), "rule__SignalHandler__NameAssignment_2");
-					put(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3(), "rule__SignalHandler__InterchangesAssignment_3");
-					put(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4(), "rule__SignalHandler__ExecutiontypeAssignment_4");
-					put(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5(), "rule__SignalHandler__TriggerpolicyAssignment_5");
-					put(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1(), "rule__TriggerFile__FilemaskAssignment_1");
-					put(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1(), "rule__SignalScheduler__SchedulerAssignment_1");
+					put(grammarAccess.getSignalWatcherAccess().getDefinitionAssignment_3(), "rule__SignalWatcher__DefinitionAssignment_3");
+					put(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskAssignment_2(), "rule__WatcherWithFileMask__FilemaskAssignment_2");
+					put(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeAssignment_3(), "rule__WatcherWithFileMask__ExecutiontypeAssignment_3");
+					put(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupAssignment_5(), "rule__WatcherWithFileMask__InterchangegroupAssignment_5");
+					put(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeAssignment_7(), "rule__WatcherWithFileMask__InterchangeAssignment_7");
+					put(grammarAccess.getWatcherWithFileNameAccess().getFilenameAssignment_2(), "rule__WatcherWithFileName__FilenameAssignment_2");
+					put(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeAssignment_3(), "rule__WatcherWithFileName__ExecutiontypeAssignment_3");
+					put(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupAssignment_5(), "rule__WatcherWithFileName__InterchangegroupAssignment_5");
+					put(grammarAccess.getWatcherWithFileNameAccess().getInterchangesAssignment_7(), "rule__WatcherWithFileName__InterchangesAssignment_7");
+					put(grammarAccess.getSignalSchedulerAccess().getNameAssignment_2(), "rule__SignalScheduler__NameAssignment_2");
+					put(grammarAccess.getSignalSchedulerAccess().getSchedulertypeAssignment_3(), "rule__SignalScheduler__SchedulertypeAssignment_3");
+					put(grammarAccess.getSignalSchedulerAccess().getExecutiontypeAssignment_4(), "rule__SignalScheduler__ExecutiontypeAssignment_4");
+					put(grammarAccess.getSignalSchedulerAccess().getInterchangegroupAssignment_6(), "rule__SignalScheduler__InterchangegroupAssignment_6");
+					put(grammarAccess.getSignalSchedulerAccess().getInterchangesAssignment_8(), "rule__SignalScheduler__InterchangesAssignment_8");
 					put(grammarAccess.getCronSchedulerAccess().getExpressionAssignment_1(), "rule__CronScheduler__ExpressionAssignment_1");
 					put(grammarAccess.getHourlySchedulerAccess().getMinuteAssignment_1(), "rule__HourlyScheduler__MinuteAssignment_1");
 					put(grammarAccess.getDailySchedulerAccess().getHourAssignment_1(), "rule__DailyScheduler__HourAssignment_1");
@@ -332,7 +339,7 @@
 					put(grammarAccess.getMonthlySchedulerAccess().getMinuteAssignment_5(), "rule__MonthlyScheduler__MinuteAssignment_5");
 					put(grammarAccess.getSignalDatainterchangeAccess().getDataActionAssignment_0(), "rule__SignalDatainterchange__DataActionAssignment_0");
 					put(grammarAccess.getSignalDatainterchangeAccess().getDataRefAssignment_1(), "rule__SignalDatainterchange__DataRefAssignment_1");
-					put(grammarAccess.getSignalDatainterchangeAccess().getFileNameAssignment_3(), "rule__SignalDatainterchange__FileNameAssignment_3");
+					put(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeAssignment_2(), "rule__SignalDatainterchange__BaseinterchangeAssignment_2");
 					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0(), "rule__XImportDeclaration__StaticAssignment_2_0_0");
 					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1(), "rule__XImportDeclaration__ExtensionAssignment_2_0_1");
 					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2");
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g
index 78f901d..a8a9774 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -113,6 +115,31 @@
 	restoreStackSize(stackSize);
 }
 
+// Entry rule entryRuleSignalDefinition
+entryRuleSignalDefinition
+:
+{ before(grammarAccess.getSignalDefinitionRule()); }
+	 ruleSignalDefinition
+{ after(grammarAccess.getSignalDefinitionRule()); } 
+	 EOF 
+;
+
+// Rule SignalDefinition
+ruleSignalDefinition 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getSignalDefinitionAccess().getAlternatives()); }
+		(rule__SignalDefinition__Alternatives)
+		{ after(grammarAccess.getSignalDefinitionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 // Entry rule entryRuleSignalWatcher
 entryRuleSignalWatcher
 :
@@ -138,75 +165,75 @@
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRuleSignalHandler
-entryRuleSignalHandler
+// Entry rule entryRuleWatcherDefinition
+entryRuleWatcherDefinition
 :
-{ before(grammarAccess.getSignalHandlerRule()); }
-	 ruleSignalHandler
-{ after(grammarAccess.getSignalHandlerRule()); } 
+{ before(grammarAccess.getWatcherDefinitionRule()); }
+	 ruleWatcherDefinition
+{ after(grammarAccess.getWatcherDefinitionRule()); } 
 	 EOF 
 ;
 
-// Rule SignalHandler
-ruleSignalHandler 
+// Rule WatcherDefinition
+ruleWatcherDefinition 
 	@init {
 		int stackSize = keepStackSize();
 	}
 	:
 	(
-		{ before(grammarAccess.getSignalHandlerAccess().getGroup()); }
-		(rule__SignalHandler__Group__0)
-		{ after(grammarAccess.getSignalHandlerAccess().getGroup()); }
+		{ before(grammarAccess.getWatcherDefinitionAccess().getAlternatives()); }
+		(rule__WatcherDefinition__Alternatives)
+		{ after(grammarAccess.getWatcherDefinitionAccess().getAlternatives()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRuleTriggerPolicy
-entryRuleTriggerPolicy
+// Entry rule entryRuleWatcherWithFileMask
+entryRuleWatcherWithFileMask
 :
-{ before(grammarAccess.getTriggerPolicyRule()); }
-	 ruleTriggerPolicy
-{ after(grammarAccess.getTriggerPolicyRule()); } 
+{ before(grammarAccess.getWatcherWithFileMaskRule()); }
+	 ruleWatcherWithFileMask
+{ after(grammarAccess.getWatcherWithFileMaskRule()); } 
 	 EOF 
 ;
 
-// Rule TriggerPolicy
-ruleTriggerPolicy 
+// Rule WatcherWithFileMask
+ruleWatcherWithFileMask 
 	@init {
 		int stackSize = keepStackSize();
 	}
 	:
 	(
-		{ before(grammarAccess.getTriggerPolicyAccess().getAlternatives()); }
-		(rule__TriggerPolicy__Alternatives)
-		{ after(grammarAccess.getTriggerPolicyAccess().getAlternatives()); }
+		{ before(grammarAccess.getWatcherWithFileMaskAccess().getGroup()); }
+		(rule__WatcherWithFileMask__Group__0)
+		{ after(grammarAccess.getWatcherWithFileMaskAccess().getGroup()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRuleTriggerFile
-entryRuleTriggerFile
+// Entry rule entryRuleWatcherWithFileName
+entryRuleWatcherWithFileName
 :
-{ before(grammarAccess.getTriggerFileRule()); }
-	 ruleTriggerFile
-{ after(grammarAccess.getTriggerFileRule()); } 
+{ before(grammarAccess.getWatcherWithFileNameRule()); }
+	 ruleWatcherWithFileName
+{ after(grammarAccess.getWatcherWithFileNameRule()); } 
 	 EOF 
 ;
 
-// Rule TriggerFile
-ruleTriggerFile 
+// Rule WatcherWithFileName
+ruleWatcherWithFileName 
 	@init {
 		int stackSize = keepStackSize();
 	}
 	:
 	(
-		{ before(grammarAccess.getTriggerFileAccess().getGroup()); }
-		(rule__TriggerFile__Group__0)
-		{ after(grammarAccess.getTriggerFileAccess().getGroup()); }
+		{ before(grammarAccess.getWatcherWithFileNameAccess().getGroup()); }
+		(rule__WatcherWithFileName__Group__0)
+		{ after(grammarAccess.getWatcherWithFileNameAccess().getGroup()); }
 	)
 ;
 finally {
@@ -238,25 +265,25 @@
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRuleScheduler
-entryRuleScheduler
+// Entry rule entryRuleSchedulerType
+entryRuleSchedulerType
 :
-{ before(grammarAccess.getSchedulerRule()); }
-	 ruleScheduler
-{ after(grammarAccess.getSchedulerRule()); } 
+{ before(grammarAccess.getSchedulerTypeRule()); }
+	 ruleSchedulerType
+{ after(grammarAccess.getSchedulerTypeRule()); } 
 	 EOF 
 ;
 
-// Rule Scheduler
-ruleScheduler 
+// Rule SchedulerType
+ruleSchedulerType 
 	@init {
 		int stackSize = keepStackSize();
 	}
 	:
 	(
-		{ before(grammarAccess.getSchedulerAccess().getAlternatives()); }
-		(rule__Scheduler__Alternatives)
-		{ after(grammarAccess.getSchedulerAccess().getAlternatives()); }
+		{ before(grammarAccess.getSchedulerTypeAccess().getAlternatives()); }
+		(rule__SchedulerType__Alternatives)
+		{ after(grammarAccess.getSchedulerTypeAccess().getAlternatives()); }
 	)
 ;
 finally {
@@ -2533,60 +2560,81 @@
 	restoreStackSize(stackSize);
 }
 
-rule__TriggerPolicy__Alternatives
+rule__SignalDefinition__Alternatives
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); }
-		ruleTriggerFile
-		{ after(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); }
+		{ before(grammarAccess.getSignalDefinitionAccess().getSignalWatcherParserRuleCall_0()); }
+		ruleSignalWatcher
+		{ after(grammarAccess.getSignalDefinitionAccess().getSignalWatcherParserRuleCall_0()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); }
+		{ before(grammarAccess.getSignalDefinitionAccess().getSignalSchedulerParserRuleCall_1()); }
 		ruleSignalScheduler
-		{ after(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); }
+		{ after(grammarAccess.getSignalDefinitionAccess().getSignalSchedulerParserRuleCall_1()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__Scheduler__Alternatives
+rule__WatcherDefinition__Alternatives
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); }
+		{ before(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileMaskParserRuleCall_0()); }
+		ruleWatcherWithFileMask
+		{ after(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileMaskParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileNameParserRuleCall_1()); }
+		ruleWatcherWithFileName
+		{ after(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileNameParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SchedulerType__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSchedulerTypeAccess().getCronSchedulerParserRuleCall_0()); }
 		ruleCronScheduler
-		{ after(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); }
+		{ after(grammarAccess.getSchedulerTypeAccess().getCronSchedulerParserRuleCall_0()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); }
+		{ before(grammarAccess.getSchedulerTypeAccess().getHourlySchedulerParserRuleCall_1()); }
 		ruleHourlyScheduler
-		{ after(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); }
+		{ after(grammarAccess.getSchedulerTypeAccess().getHourlySchedulerParserRuleCall_1()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); }
+		{ before(grammarAccess.getSchedulerTypeAccess().getDailySchedulerParserRuleCall_2()); }
 		ruleDailyScheduler
-		{ after(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); }
+		{ after(grammarAccess.getSchedulerTypeAccess().getDailySchedulerParserRuleCall_2()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); }
+		{ before(grammarAccess.getSchedulerTypeAccess().getWeeklySchedulerParserRuleCall_3()); }
 		ruleWeeklyScheduler
-		{ after(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); }
+		{ after(grammarAccess.getSchedulerTypeAccess().getWeeklySchedulerParserRuleCall_3()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); }
+		{ before(grammarAccess.getSchedulerTypeAccess().getMonthlySchedulerParserRuleCall_4()); }
 		ruleMonthlyScheduler
-		{ after(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); }
+		{ after(grammarAccess.getSchedulerTypeAccess().getMonthlySchedulerParserRuleCall_4()); }
 	)
 ;
 finally {
@@ -3767,13 +3815,13 @@
 :
 	(
 		{ before(grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0()); }
-		('Import')
+		('import')
 		{ after(grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0()); }
 	)
 	|
 	(
 		{ before(grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1()); }
-		('Export')
+		('export')
 		{ after(grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1()); }
 	)
 ;
@@ -4060,9 +4108,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalPackageAccess().getWatchersAssignment_3_1()); }
-	(rule__SignalPackage__WatchersAssignment_3_1)*
-	{ after(grammarAccess.getSignalPackageAccess().getWatchersAssignment_3_1()); }
+	{ before(grammarAccess.getSignalPackageAccess().getSignalsAssignment_3_1()); }
+	(rule__SignalPackage__SignalsAssignment_3_1)*
+	{ after(grammarAccess.getSignalPackageAccess().getSignalsAssignment_3_1()); }
 )
 ;
 finally {
@@ -4183,7 +4231,6 @@
 	}
 :
 	rule__SignalWatcher__Group__3__Impl
-	rule__SignalWatcher__Group__4
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4195,116 +4242,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3()); }
-	'directory'
-	{ after(grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__4
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__SignalWatcher__Group__4__Impl
-	rule__SignalWatcher__Group__5
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__4__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getSignalWatcherAccess().getDirectoryAssignment_4()); }
-	(rule__SignalWatcher__DirectoryAssignment_4)
-	{ after(grammarAccess.getSignalWatcherAccess().getDirectoryAssignment_4()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__5
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__SignalWatcher__Group__5__Impl
-	rule__SignalWatcher__Group__6
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__5__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); }
-	'{'
-	{ after(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__6
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__SignalWatcher__Group__6__Impl
-	rule__SignalWatcher__Group__7
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__6__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); }
-	(rule__SignalWatcher__HandlersAssignment_6)*
-	{ after(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__7
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__SignalWatcher__Group__7__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__7__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); }
-	'}'
-	{ after(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); }
+	{ before(grammarAccess.getSignalWatcherAccess().getDefinitionAssignment_3()); }
+	(rule__SignalWatcher__DefinitionAssignment_3)
+	{ after(grammarAccess.getSignalWatcherAccess().getDefinitionAssignment_3()); }
 )
 ;
 finally {
@@ -4312,161 +4252,242 @@
 }
 
 
-rule__SignalHandler__Group__0
+rule__WatcherWithFileMask__Group__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__0__Impl
-	rule__SignalHandler__Group__1
+	rule__WatcherWithFileMask__Group__0__Impl
+	rule__WatcherWithFileMask__Group__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__0__Impl
+rule__WatcherWithFileMask__Group__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getSignalHandlerAction_0()); }
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getWatcherWithFileMaskAction_0()); }
 	()
-	{ after(grammarAccess.getSignalHandlerAccess().getSignalHandlerAction_0()); }
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getWatcherWithFileMaskAction_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__1
+rule__WatcherWithFileMask__Group__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__1__Impl
-	rule__SignalHandler__Group__2
+	rule__WatcherWithFileMask__Group__1__Impl
+	rule__WatcherWithFileMask__Group__2
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__1__Impl
+rule__WatcherWithFileMask__Group__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1()); }
-	'handler'
-	{ after(grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1()); }
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskKeyword_1()); }
+	'filemask'
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskKeyword_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__2
+rule__WatcherWithFileMask__Group__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__2__Impl
-	rule__SignalHandler__Group__3
+	rule__WatcherWithFileMask__Group__2__Impl
+	rule__WatcherWithFileMask__Group__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__2__Impl
+rule__WatcherWithFileMask__Group__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getNameAssignment_2()); }
-	(rule__SignalHandler__NameAssignment_2)
-	{ after(grammarAccess.getSignalHandlerAccess().getNameAssignment_2()); }
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskAssignment_2()); }
+	(rule__WatcherWithFileMask__FilemaskAssignment_2)
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskAssignment_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__3
+rule__WatcherWithFileMask__Group__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__3__Impl
-	rule__SignalHandler__Group__4
+	rule__WatcherWithFileMask__Group__3__Impl
+	rule__WatcherWithFileMask__Group__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__3__Impl
+rule__WatcherWithFileMask__Group__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); }
-	(rule__SignalHandler__InterchangesAssignment_3)*
-	{ after(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); }
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeAssignment_3()); }
+	(rule__WatcherWithFileMask__ExecutiontypeAssignment_3)
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeAssignment_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__4
+rule__WatcherWithFileMask__Group__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__4__Impl
-	rule__SignalHandler__Group__5
+	rule__WatcherWithFileMask__Group__4__Impl
+	rule__WatcherWithFileMask__Group__5
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__4__Impl
+rule__WatcherWithFileMask__Group__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); }
-	(rule__SignalHandler__ExecutiontypeAssignment_4)
-	{ after(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); }
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getFromKeyword_4()); }
+	'from'
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getFromKeyword_4()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__5
+rule__WatcherWithFileMask__Group__5
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__5__Impl
+	rule__WatcherWithFileMask__Group__5__Impl
+	rule__WatcherWithFileMask__Group__6
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__5__Impl
+rule__WatcherWithFileMask__Group__5__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); }
-	(rule__SignalHandler__TriggerpolicyAssignment_5)
-	{ after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); }
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupAssignment_5()); }
+	(rule__WatcherWithFileMask__InterchangegroupAssignment_5)
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileMask__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileMask__Group__6__Impl
+	rule__WatcherWithFileMask__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileMask__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getLeftCurlyBracketKeyword_6()); }
+	'{'
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getLeftCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileMask__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileMask__Group__7__Impl
+	rule__WatcherWithFileMask__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileMask__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeAssignment_7()); }
+	(rule__WatcherWithFileMask__InterchangeAssignment_7)
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileMask__Group__8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileMask__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileMask__Group__8__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileMaskAccess().getRightCurlyBracketKeyword_8()); }
+	'}'
+	{ after(grammarAccess.getWatcherWithFileMaskAccess().getRightCurlyBracketKeyword_8()); }
 )
 ;
 finally {
@@ -4474,53 +4495,242 @@
 }
 
 
-rule__TriggerFile__Group__0
+rule__WatcherWithFileName__Group__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__TriggerFile__Group__0__Impl
-	rule__TriggerFile__Group__1
+	rule__WatcherWithFileName__Group__0__Impl
+	rule__WatcherWithFileName__Group__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__TriggerFile__Group__0__Impl
+rule__WatcherWithFileName__Group__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); }
-	'forFileMask'
-	{ after(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); }
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getWatcherWithFileNameAction_0()); }
+	()
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getWatcherWithFileNameAction_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__TriggerFile__Group__1
+rule__WatcherWithFileName__Group__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__TriggerFile__Group__1__Impl
+	rule__WatcherWithFileName__Group__1__Impl
+	rule__WatcherWithFileName__Group__2
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__TriggerFile__Group__1__Impl
+rule__WatcherWithFileName__Group__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); }
-	(rule__TriggerFile__FilemaskAssignment_1)
-	{ after(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); }
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getFilenameKeyword_1()); }
+	'filename'
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getFilenameKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileName__Group__2__Impl
+	rule__WatcherWithFileName__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getFilenameAssignment_2()); }
+	(rule__WatcherWithFileName__FilenameAssignment_2)
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getFilenameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileName__Group__3__Impl
+	rule__WatcherWithFileName__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeAssignment_3()); }
+	(rule__WatcherWithFileName__ExecutiontypeAssignment_3)
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileName__Group__4__Impl
+	rule__WatcherWithFileName__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getFromKeyword_4()); }
+	'from'
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getFromKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileName__Group__5__Impl
+	rule__WatcherWithFileName__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupAssignment_5()); }
+	(rule__WatcherWithFileName__InterchangegroupAssignment_5)
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileName__Group__6__Impl
+	rule__WatcherWithFileName__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getLeftCurlyBracketKeyword_6()); }
+	'{'
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getLeftCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileName__Group__7__Impl
+	rule__WatcherWithFileName__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getInterchangesAssignment_7()); }
+	(rule__WatcherWithFileName__InterchangesAssignment_7)*
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getInterchangesAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WatcherWithFileName__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__Group__8__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWatcherWithFileNameAccess().getRightCurlyBracketKeyword_8()); }
+	'}'
+	{ after(grammarAccess.getWatcherWithFileNameAccess().getRightCurlyBracketKeyword_8()); }
 )
 ;
 finally {
@@ -4546,9 +4756,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); }
-	'scheduleFor'
-	{ after(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); }
+	{ before(grammarAccess.getSignalSchedulerAccess().getSignalSchedulerAction_0()); }
+	()
+	{ after(grammarAccess.getSignalSchedulerAccess().getSignalSchedulerAction_0()); }
 )
 ;
 finally {
@@ -4561,6 +4771,7 @@
 	}
 :
 	rule__SignalScheduler__Group__1__Impl
+	rule__SignalScheduler__Group__2
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4572,9 +4783,224 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); }
-	(rule__SignalScheduler__SchedulerAssignment_1)
-	{ after(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); }
+	{ before(grammarAccess.getSignalSchedulerAccess().getSchedulerKeyword_1()); }
+	'scheduler'
+	{ after(grammarAccess.getSignalSchedulerAccess().getSchedulerKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__2__Impl
+	rule__SignalScheduler__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getNameAssignment_2()); }
+	(rule__SignalScheduler__NameAssignment_2)
+	{ after(grammarAccess.getSignalSchedulerAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__3__Impl
+	rule__SignalScheduler__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getSchedulertypeAssignment_3()); }
+	(rule__SignalScheduler__SchedulertypeAssignment_3)
+	{ after(grammarAccess.getSignalSchedulerAccess().getSchedulertypeAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__4__Impl
+	rule__SignalScheduler__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getExecutiontypeAssignment_4()); }
+	(rule__SignalScheduler__ExecutiontypeAssignment_4)?
+	{ after(grammarAccess.getSignalSchedulerAccess().getExecutiontypeAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__5__Impl
+	rule__SignalScheduler__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getFromKeyword_5()); }
+	'from'
+	{ after(grammarAccess.getSignalSchedulerAccess().getFromKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__6__Impl
+	rule__SignalScheduler__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getInterchangegroupAssignment_6()); }
+	(rule__SignalScheduler__InterchangegroupAssignment_6)
+	{ after(grammarAccess.getSignalSchedulerAccess().getInterchangegroupAssignment_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__7__Impl
+	rule__SignalScheduler__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getLeftCurlyBracketKeyword_7()); }
+	'{'
+	{ after(grammarAccess.getSignalSchedulerAccess().getLeftCurlyBracketKeyword_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__8__Impl
+	rule__SignalScheduler__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__8__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getInterchangesAssignment_8()); }
+	(rule__SignalScheduler__InterchangesAssignment_8)*
+	{ after(grammarAccess.getSignalSchedulerAccess().getInterchangesAssignment_8()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__9
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignalScheduler__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__Group__9__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignalSchedulerAccess().getRightCurlyBracketKeyword_9()); }
+	'}'
+	{ after(grammarAccess.getSignalSchedulerAccess().getRightCurlyBracketKeyword_9()); }
 )
 ;
 finally {
@@ -4654,9 +5080,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); }
-	'hourlyAt'
-	{ after(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); }
+	{ before(grammarAccess.getHourlySchedulerAccess().getHourlyatKeyword_0()); }
+	'hourlyat'
+	{ after(grammarAccess.getHourlySchedulerAccess().getHourlyatKeyword_0()); }
 )
 ;
 finally {
@@ -4708,9 +5134,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); }
-	'dailyAt'
-	{ after(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); }
+	{ before(grammarAccess.getDailySchedulerAccess().getDailyatKeyword_0()); }
+	'dailyat'
+	{ after(grammarAccess.getDailySchedulerAccess().getDailyatKeyword_0()); }
 )
 ;
 finally {
@@ -4816,9 +5242,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); }
-	'weeklyOn'
-	{ after(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); }
+	{ before(grammarAccess.getWeeklySchedulerAccess().getWeeklyonKeyword_0()); }
+	'weeklyon'
+	{ after(grammarAccess.getWeeklySchedulerAccess().getWeeklyonKeyword_0()); }
 )
 ;
 finally {
@@ -4978,9 +5404,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); }
-	'monthlyOn'
-	{ after(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); }
+	{ before(grammarAccess.getMonthlySchedulerAccess().getMonthlyonKeyword_0()); }
+	'monthlyon'
+	{ after(grammarAccess.getMonthlySchedulerAccess().getMonthlyonKeyword_0()); }
 )
 ;
 finally {
@@ -5182,7 +5608,6 @@
 	}
 :
 	rule__SignalDatainterchange__Group__2__Impl
-	rule__SignalDatainterchange__Group__3
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -5194,35 +5619,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2()); }
-	'fileName'
-	{ after(grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalDatainterchange__Group__3
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__SignalDatainterchange__Group__3__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalDatainterchange__Group__3__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getSignalDatainterchangeAccess().getFileNameAssignment_3()); }
-	(rule__SignalDatainterchange__FileNameAssignment_3)
-	{ after(grammarAccess.getSignalDatainterchangeAccess().getFileNameAssignment_3()); }
+	{ before(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeAssignment_2()); }
+	(rule__SignalDatainterchange__BaseinterchangeAssignment_2)?
+	{ after(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeAssignment_2()); }
 )
 ;
 finally {
@@ -18195,15 +18594,15 @@
 	restoreStackSize(stackSize);
 }
 
-rule__SignalPackage__WatchersAssignment_3_1
+rule__SignalPackage__SignalsAssignment_3_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalPackageAccess().getWatchersSignalWatcherParserRuleCall_3_1_0()); }
-		ruleSignalWatcher
-		{ after(grammarAccess.getSignalPackageAccess().getWatchersSignalWatcherParserRuleCall_3_1_0()); }
+		{ before(grammarAccess.getSignalPackageAccess().getSignalsSignalDefinitionParserRuleCall_3_1_0()); }
+		ruleSignalDefinition
+		{ after(grammarAccess.getSignalPackageAccess().getSignalsSignalDefinitionParserRuleCall_3_1_0()); }
 	)
 ;
 finally {
@@ -18225,120 +18624,222 @@
 	restoreStackSize(stackSize);
 }
 
-rule__SignalWatcher__DirectoryAssignment_4
+rule__SignalWatcher__DefinitionAssignment_3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalWatcherAccess().getDirectorySTRINGTerminalRuleCall_4_0()); }
+		{ before(grammarAccess.getSignalWatcherAccess().getDefinitionWatcherDefinitionParserRuleCall_3_0()); }
+		ruleWatcherDefinition
+		{ after(grammarAccess.getSignalWatcherAccess().getDefinitionWatcherDefinitionParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileMask__FilemaskAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskSTRINGTerminalRuleCall_2_0()); }
 		RULE_STRING
-		{ after(grammarAccess.getSignalWatcherAccess().getDirectorySTRINGTerminalRuleCall_4_0()); }
+		{ after(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskSTRINGTerminalRuleCall_2_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalWatcher__HandlersAssignment_6
+rule__WatcherWithFileMask__ExecutiontypeAssignment_3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); }
-		ruleSignalHandler
-		{ after(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalHandler__NameAssignment_2
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
-		ruleTRANSLATABLEID
-		{ after(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalHandler__InterchangesAssignment_3
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); }
-		ruleSignalDatainterchange
-		{ after(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalHandler__ExecutiontypeAssignment_4
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); }
+		{ before(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); }
 		ruleSignalExecutionTypeEnum
-		{ after(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); }
+		{ after(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__TriggerpolicyAssignment_5
+rule__WatcherWithFileMask__InterchangegroupAssignment_5
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); }
-		ruleTriggerPolicy
-		{ after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); }
+		{ before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); }
+		(
+			{ before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); }
+		)
+		{ after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__TriggerFile__FilemaskAssignment_1
+rule__WatcherWithFileMask__InterchangeAssignment_7
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); }
+		{ before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeSignalDatainterchangeParserRuleCall_7_0()); }
+		ruleSignalDatainterchange
+		{ after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeSignalDatainterchangeParserRuleCall_7_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__FilenameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWatcherWithFileNameAccess().getFilenameSTRINGTerminalRuleCall_2_0()); }
 		RULE_STRING
-		{ after(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); }
+		{ after(grammarAccess.getWatcherWithFileNameAccess().getFilenameSTRINGTerminalRuleCall_2_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalScheduler__SchedulerAssignment_1
+rule__WatcherWithFileName__ExecutiontypeAssignment_3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); }
-		ruleScheduler
-		{ after(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); }
+		{ before(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); }
+		ruleSignalExecutionTypeEnum
+		{ after(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__InterchangegroupAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); }
+		(
+			{ before(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); }
+		)
+		{ after(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WatcherWithFileName__InterchangesAssignment_7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWatcherWithFileNameAccess().getInterchangesSignalDatainterchangeParserRuleCall_7_0()); }
+		ruleSignalDatainterchange
+		{ after(grammarAccess.getWatcherWithFileNameAccess().getInterchangesSignalDatainterchangeParserRuleCall_7_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSignalSchedulerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getSignalSchedulerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__SchedulertypeAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSignalSchedulerAccess().getSchedulertypeSchedulerTypeParserRuleCall_3_0()); }
+		ruleSchedulerType
+		{ after(grammarAccess.getSignalSchedulerAccess().getSchedulertypeSchedulerTypeParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__ExecutiontypeAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSignalSchedulerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); }
+		ruleSignalExecutionTypeEnum
+		{ after(grammarAccess.getSignalSchedulerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__InterchangegroupAssignment_6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupCrossReference_6_0()); }
+		(
+			{ before(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_6_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_6_0_1()); }
+		)
+		{ after(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupCrossReference_6_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignalScheduler__InterchangesAssignment_8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSignalSchedulerAccess().getInterchangesSignalDatainterchangeParserRuleCall_8_0()); }
+		ruleSignalDatainterchange
+		{ after(grammarAccess.getSignalSchedulerAccess().getInterchangesSignalDatainterchangeParserRuleCall_8_0()); }
 	)
 ;
 finally {
@@ -18529,15 +19030,19 @@
 	restoreStackSize(stackSize);
 }
 
-rule__SignalDatainterchange__FileNameAssignment_3
+rule__SignalDatainterchange__BaseinterchangeAssignment_2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0()); }
-		RULE_STRING
-		{ after(grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0()); }
+		{ before(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); }
+		(
+			{ before(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); }
+			'applyon'
+			{ after(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); }
+		)
+		{ after(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); }
 	)
 ;
 finally {
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens
index 6e97cc8..55d2d03 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens
@@ -1,20 +1,20 @@
 '!'=40
 '!='=22
 '!=='=24
-'#'=84
+'#'=82
 '%'=39
 '%='=20
 '&&'=15
-'&'=106
-'('=80
-')'=81
+'&'=104
+'('=78
+')'=79
 '*'=36
 '**'=37
 '*='=18
 '+'=34
 '++'=41
 '+='=16
-','=82
+','=80
 '-'=35
 '--'=42
 '-='=17
@@ -24,9 +24,9 @@
 '..<'=29
 '/'=38
 '/='=19
-':'=73
-'::'=108
-';'=78
+':'=72
+'::'=107
+';'=76
 '<'=27
 '<>'=32
 '='=13
@@ -35,69 +35,68 @@
 '=>'=31
 '>'=26
 '>='=25
-'?'=105
-'?.'=109
+'?'=103
+'?.'=108
 '?:'=33
-'@'=79
-'Export'=52
-'Import'=51
-'['=85
-']'=83
-'as'=87
-'at'=75
-'case'=92
-'catch'=104
-'cron'=70
-'dailyAt'=72
-'default'=91
-'directory'=66
-'do'=95
-'else'=89
+'@'=77
+'['=83
+']'=81
+'applyon'=105
+'as'=85
+'at'=74
+'case'=90
+'catch'=102
+'cron'=69
+'dailyat'=71
+'default'=89
+'do'=93
+'else'=87
+'export'=51
 'extends'=45
 'extension'=48
 'false'=50
-'fileName'=77
-'finally'=102
-'for'=93
-'forFileMask'=68
-'friday'=60
-'handler'=67
-'hourlyAt'=71
-'if'=88
+'filemask'=65
+'filename'=67
+'finally'=100
+'for'=91
+'friday'=59
+'from'=66
+'hourlyat'=70
+'if'=86
 'import'=47
-'instanceof'=86
-'monday'=56
-'monthlyOn'=76
-'new'=96
-'ns'=107
-'null'=97
-'package'=62
-'parallel'=54
-'return'=100
-'saturday'=61
-'scheduleFor'=69
-'sequential'=53
+'instanceof'=84
+'monday'=55
+'monthlyon'=75
+'new'=94
+'ns'=106
+'null'=95
+'package'=61
+'parallel'=53
+'return'=98
+'saturday'=60
+'scheduler'=68
+'sequential'=52
 'static'=46
-'sunday'=55
+'sunday'=54
 'super'=49
-'switch'=90
-'synchronized'=103
-'throw'=99
-'thursday'=59
-'true'=112
-'try'=101
-'tuesday'=57
-'typeof'=98
+'switch'=88
+'synchronized'=101
+'throw'=97
+'thursday'=58
+'true'=111
+'try'=99
+'tuesday'=56
+'typeof'=96
 'val'=44
-'var'=111
-'watcher'=65
-'wednesday'=58
-'weeklyOn'=74
-'while'=94
-'{'=63
-'|'=110
+'var'=110
+'watcher'=64
+'wednesday'=57
+'weeklyon'=73
+'while'=92
+'{'=62
+'|'=109
 '||'=14
-'}'=64
+'}'=63
 RULE_ANY_OTHER=12
 RULE_DECIMAL=7
 RULE_HEX=5
@@ -119,7 +118,6 @@
 T__109=109
 T__110=110
 T__111=111
-T__112=112
 T__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java
index 6af2ff4..ec16fb5 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java
@@ -1,20 +1,3 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- * generated by Xtext 2.11.0
- *
- */
 package org.eclipse.osbp.xtext.signal.ide.contentassist.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -123,7 +106,6 @@
     public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
-    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
@@ -946,10 +928,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:49:7: ( 'Import' )
-            // InternalSignalDSL.g:49:9: 'Import'
+            // InternalSignalDSL.g:49:7: ( 'export' )
+            // InternalSignalDSL.g:49:9: 'export'
             {
-            match("Import"); 
+            match("export"); 
 
 
             }
@@ -967,10 +949,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:50:7: ( 'Export' )
-            // InternalSignalDSL.g:50:9: 'Export'
+            // InternalSignalDSL.g:50:7: ( 'sequential' )
+            // InternalSignalDSL.g:50:9: 'sequential'
             {
-            match("Export"); 
+            match("sequential"); 
 
 
             }
@@ -988,10 +970,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:51:7: ( 'sequential' )
-            // InternalSignalDSL.g:51:9: 'sequential'
+            // InternalSignalDSL.g:51:7: ( 'parallel' )
+            // InternalSignalDSL.g:51:9: 'parallel'
             {
-            match("sequential"); 
+            match("parallel"); 
 
 
             }
@@ -1009,10 +991,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:52:7: ( 'parallel' )
-            // InternalSignalDSL.g:52:9: 'parallel'
+            // InternalSignalDSL.g:52:7: ( 'sunday' )
+            // InternalSignalDSL.g:52:9: 'sunday'
             {
-            match("parallel"); 
+            match("sunday"); 
 
 
             }
@@ -1030,10 +1012,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:53:7: ( 'sunday' )
-            // InternalSignalDSL.g:53:9: 'sunday'
+            // InternalSignalDSL.g:53:7: ( 'monday' )
+            // InternalSignalDSL.g:53:9: 'monday'
             {
-            match("sunday"); 
+            match("monday"); 
 
 
             }
@@ -1051,10 +1033,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:54:7: ( 'monday' )
-            // InternalSignalDSL.g:54:9: 'monday'
+            // InternalSignalDSL.g:54:7: ( 'tuesday' )
+            // InternalSignalDSL.g:54:9: 'tuesday'
             {
-            match("monday"); 
+            match("tuesday"); 
 
 
             }
@@ -1072,10 +1054,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:55:7: ( 'tuesday' )
-            // InternalSignalDSL.g:55:9: 'tuesday'
+            // InternalSignalDSL.g:55:7: ( 'wednesday' )
+            // InternalSignalDSL.g:55:9: 'wednesday'
             {
-            match("tuesday"); 
+            match("wednesday"); 
 
 
             }
@@ -1093,10 +1075,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:56:7: ( 'wednesday' )
-            // InternalSignalDSL.g:56:9: 'wednesday'
+            // InternalSignalDSL.g:56:7: ( 'thursday' )
+            // InternalSignalDSL.g:56:9: 'thursday'
             {
-            match("wednesday"); 
+            match("thursday"); 
 
 
             }
@@ -1114,10 +1096,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:57:7: ( 'thursday' )
-            // InternalSignalDSL.g:57:9: 'thursday'
+            // InternalSignalDSL.g:57:7: ( 'friday' )
+            // InternalSignalDSL.g:57:9: 'friday'
             {
-            match("thursday"); 
+            match("friday"); 
 
 
             }
@@ -1135,10 +1117,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:58:7: ( 'friday' )
-            // InternalSignalDSL.g:58:9: 'friday'
+            // InternalSignalDSL.g:58:7: ( 'saturday' )
+            // InternalSignalDSL.g:58:9: 'saturday'
             {
-            match("friday"); 
+            match("saturday"); 
 
 
             }
@@ -1156,10 +1138,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:59:7: ( 'saturday' )
-            // InternalSignalDSL.g:59:9: 'saturday'
+            // InternalSignalDSL.g:59:7: ( 'package' )
+            // InternalSignalDSL.g:59:9: 'package'
             {
-            match("saturday"); 
+            match("package"); 
 
 
             }
@@ -1177,11 +1159,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:60:7: ( 'package' )
-            // InternalSignalDSL.g:60:9: 'package'
+            // InternalSignalDSL.g:60:7: ( '{' )
+            // InternalSignalDSL.g:60:9: '{'
             {
-            match("package"); 
-
+            match('{'); 
 
             }
 
@@ -1198,10 +1179,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:61:7: ( '{' )
-            // InternalSignalDSL.g:61:9: '{'
+            // InternalSignalDSL.g:61:7: ( '}' )
+            // InternalSignalDSL.g:61:9: '}'
             {
-            match('{'); 
+            match('}'); 
 
             }
 
@@ -1218,10 +1199,11 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:62:7: ( '}' )
-            // InternalSignalDSL.g:62:9: '}'
+            // InternalSignalDSL.g:62:7: ( 'watcher' )
+            // InternalSignalDSL.g:62:9: 'watcher'
             {
-            match('}'); 
+            match("watcher"); 
+
 
             }
 
@@ -1238,10 +1220,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:63:7: ( 'watcher' )
-            // InternalSignalDSL.g:63:9: 'watcher'
+            // InternalSignalDSL.g:63:7: ( 'filemask' )
+            // InternalSignalDSL.g:63:9: 'filemask'
             {
-            match("watcher"); 
+            match("filemask"); 
 
 
             }
@@ -1259,10 +1241,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:64:7: ( 'directory' )
-            // InternalSignalDSL.g:64:9: 'directory'
+            // InternalSignalDSL.g:64:7: ( 'from' )
+            // InternalSignalDSL.g:64:9: 'from'
             {
-            match("directory"); 
+            match("from"); 
 
 
             }
@@ -1280,10 +1262,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:65:7: ( 'handler' )
-            // InternalSignalDSL.g:65:9: 'handler'
+            // InternalSignalDSL.g:65:7: ( 'filename' )
+            // InternalSignalDSL.g:65:9: 'filename'
             {
-            match("handler"); 
+            match("filename"); 
 
 
             }
@@ -1301,10 +1283,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:66:7: ( 'forFileMask' )
-            // InternalSignalDSL.g:66:9: 'forFileMask'
+            // InternalSignalDSL.g:66:7: ( 'scheduler' )
+            // InternalSignalDSL.g:66:9: 'scheduler'
             {
-            match("forFileMask"); 
+            match("scheduler"); 
 
 
             }
@@ -1322,10 +1304,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:67:7: ( 'scheduleFor' )
-            // InternalSignalDSL.g:67:9: 'scheduleFor'
+            // InternalSignalDSL.g:67:7: ( 'cron' )
+            // InternalSignalDSL.g:67:9: 'cron'
             {
-            match("scheduleFor"); 
+            match("cron"); 
 
 
             }
@@ -1343,10 +1325,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:68:7: ( 'cron' )
-            // InternalSignalDSL.g:68:9: 'cron'
+            // InternalSignalDSL.g:68:7: ( 'hourlyat' )
+            // InternalSignalDSL.g:68:9: 'hourlyat'
             {
-            match("cron"); 
+            match("hourlyat"); 
 
 
             }
@@ -1364,10 +1346,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:69:7: ( 'hourlyAt' )
-            // InternalSignalDSL.g:69:9: 'hourlyAt'
+            // InternalSignalDSL.g:69:7: ( 'dailyat' )
+            // InternalSignalDSL.g:69:9: 'dailyat'
             {
-            match("hourlyAt"); 
+            match("dailyat"); 
 
 
             }
@@ -1385,11 +1367,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:70:7: ( 'dailyAt' )
-            // InternalSignalDSL.g:70:9: 'dailyAt'
+            // InternalSignalDSL.g:70:7: ( ':' )
+            // InternalSignalDSL.g:70:9: ':'
             {
-            match("dailyAt"); 
-
+            match(':'); 
 
             }
 
@@ -1406,10 +1387,11 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:71:7: ( ':' )
-            // InternalSignalDSL.g:71:9: ':'
+            // InternalSignalDSL.g:71:7: ( 'weeklyon' )
+            // InternalSignalDSL.g:71:9: 'weeklyon'
             {
-            match(':'); 
+            match("weeklyon"); 
+
 
             }
 
@@ -1426,10 +1408,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:72:7: ( 'weeklyOn' )
-            // InternalSignalDSL.g:72:9: 'weeklyOn'
+            // InternalSignalDSL.g:72:7: ( 'at' )
+            // InternalSignalDSL.g:72:9: 'at'
             {
-            match("weeklyOn"); 
+            match("at"); 
 
 
             }
@@ -1447,10 +1429,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:73:7: ( 'at' )
-            // InternalSignalDSL.g:73:9: 'at'
+            // InternalSignalDSL.g:73:7: ( 'monthlyon' )
+            // InternalSignalDSL.g:73:9: 'monthlyon'
             {
-            match("at"); 
+            match("monthlyon"); 
 
 
             }
@@ -1468,11 +1450,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:74:7: ( 'monthlyOn' )
-            // InternalSignalDSL.g:74:9: 'monthlyOn'
+            // InternalSignalDSL.g:74:7: ( ';' )
+            // InternalSignalDSL.g:74:9: ';'
             {
-            match("monthlyOn"); 
-
+            match(';'); 
 
             }
 
@@ -1489,11 +1470,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:75:7: ( 'fileName' )
-            // InternalSignalDSL.g:75:9: 'fileName'
+            // InternalSignalDSL.g:75:7: ( '@' )
+            // InternalSignalDSL.g:75:9: '@'
             {
-            match("fileName"); 
-
+            match('@'); 
 
             }
 
@@ -1510,10 +1490,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:76:7: ( ';' )
-            // InternalSignalDSL.g:76:9: ';'
+            // InternalSignalDSL.g:76:7: ( '(' )
+            // InternalSignalDSL.g:76:9: '('
             {
-            match(';'); 
+            match('('); 
 
             }
 
@@ -1530,10 +1510,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:77:7: ( '@' )
-            // InternalSignalDSL.g:77:9: '@'
+            // InternalSignalDSL.g:77:7: ( ')' )
+            // InternalSignalDSL.g:77:9: ')'
             {
-            match('@'); 
+            match(')'); 
 
             }
 
@@ -1550,10 +1530,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:78:7: ( '(' )
-            // InternalSignalDSL.g:78:9: '('
+            // InternalSignalDSL.g:78:7: ( ',' )
+            // InternalSignalDSL.g:78:9: ','
             {
-            match('('); 
+            match(','); 
 
             }
 
@@ -1570,10 +1550,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:79:7: ( ')' )
-            // InternalSignalDSL.g:79:9: ')'
+            // InternalSignalDSL.g:79:7: ( ']' )
+            // InternalSignalDSL.g:79:9: ']'
             {
-            match(')'); 
+            match(']'); 
 
             }
 
@@ -1590,10 +1570,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:80:7: ( ',' )
-            // InternalSignalDSL.g:80:9: ','
+            // InternalSignalDSL.g:80:7: ( '#' )
+            // InternalSignalDSL.g:80:9: '#'
             {
-            match(','); 
+            match('#'); 
 
             }
 
@@ -1610,10 +1590,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:81:7: ( ']' )
-            // InternalSignalDSL.g:81:9: ']'
+            // InternalSignalDSL.g:81:7: ( '[' )
+            // InternalSignalDSL.g:81:9: '['
             {
-            match(']'); 
+            match('['); 
 
             }
 
@@ -1630,10 +1610,11 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:82:7: ( '#' )
-            // InternalSignalDSL.g:82:9: '#'
+            // InternalSignalDSL.g:82:7: ( 'instanceof' )
+            // InternalSignalDSL.g:82:9: 'instanceof'
             {
-            match('#'); 
+            match("instanceof"); 
+
 
             }
 
@@ -1650,10 +1631,11 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:83:7: ( '[' )
-            // InternalSignalDSL.g:83:9: '['
+            // InternalSignalDSL.g:83:7: ( 'as' )
+            // InternalSignalDSL.g:83:9: 'as'
             {
-            match('['); 
+            match("as"); 
+
 
             }
 
@@ -1670,10 +1652,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:84:7: ( 'instanceof' )
-            // InternalSignalDSL.g:84:9: 'instanceof'
+            // InternalSignalDSL.g:84:7: ( 'if' )
+            // InternalSignalDSL.g:84:9: 'if'
             {
-            match("instanceof"); 
+            match("if"); 
 
 
             }
@@ -1691,10 +1673,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:85:7: ( 'as' )
-            // InternalSignalDSL.g:85:9: 'as'
+            // InternalSignalDSL.g:85:7: ( 'else' )
+            // InternalSignalDSL.g:85:9: 'else'
             {
-            match("as"); 
+            match("else"); 
 
 
             }
@@ -1712,10 +1694,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:86:7: ( 'if' )
-            // InternalSignalDSL.g:86:9: 'if'
+            // InternalSignalDSL.g:86:7: ( 'switch' )
+            // InternalSignalDSL.g:86:9: 'switch'
             {
-            match("if"); 
+            match("switch"); 
 
 
             }
@@ -1733,10 +1715,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:87:7: ( 'else' )
-            // InternalSignalDSL.g:87:9: 'else'
+            // InternalSignalDSL.g:87:7: ( 'default' )
+            // InternalSignalDSL.g:87:9: 'default'
             {
-            match("else"); 
+            match("default"); 
 
 
             }
@@ -1754,10 +1736,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:88:7: ( 'switch' )
-            // InternalSignalDSL.g:88:9: 'switch'
+            // InternalSignalDSL.g:88:7: ( 'case' )
+            // InternalSignalDSL.g:88:9: 'case'
             {
-            match("switch"); 
+            match("case"); 
 
 
             }
@@ -1775,10 +1757,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:89:7: ( 'default' )
-            // InternalSignalDSL.g:89:9: 'default'
+            // InternalSignalDSL.g:89:7: ( 'for' )
+            // InternalSignalDSL.g:89:9: 'for'
             {
-            match("default"); 
+            match("for"); 
 
 
             }
@@ -1796,10 +1778,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:90:7: ( 'case' )
-            // InternalSignalDSL.g:90:9: 'case'
+            // InternalSignalDSL.g:90:7: ( 'while' )
+            // InternalSignalDSL.g:90:9: 'while'
             {
-            match("case"); 
+            match("while"); 
 
 
             }
@@ -1817,10 +1799,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:91:7: ( 'for' )
-            // InternalSignalDSL.g:91:9: 'for'
+            // InternalSignalDSL.g:91:7: ( 'do' )
+            // InternalSignalDSL.g:91:9: 'do'
             {
-            match("for"); 
+            match("do"); 
 
 
             }
@@ -1838,10 +1820,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:92:7: ( 'while' )
-            // InternalSignalDSL.g:92:9: 'while'
+            // InternalSignalDSL.g:92:7: ( 'new' )
+            // InternalSignalDSL.g:92:9: 'new'
             {
-            match("while"); 
+            match("new"); 
 
 
             }
@@ -1859,10 +1841,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:93:7: ( 'do' )
-            // InternalSignalDSL.g:93:9: 'do'
+            // InternalSignalDSL.g:93:7: ( 'null' )
+            // InternalSignalDSL.g:93:9: 'null'
             {
-            match("do"); 
+            match("null"); 
 
 
             }
@@ -1880,10 +1862,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:94:7: ( 'new' )
-            // InternalSignalDSL.g:94:9: 'new'
+            // InternalSignalDSL.g:94:7: ( 'typeof' )
+            // InternalSignalDSL.g:94:9: 'typeof'
             {
-            match("new"); 
+            match("typeof"); 
 
 
             }
@@ -1901,10 +1883,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:95:7: ( 'null' )
-            // InternalSignalDSL.g:95:9: 'null'
+            // InternalSignalDSL.g:95:7: ( 'throw' )
+            // InternalSignalDSL.g:95:9: 'throw'
             {
-            match("null"); 
+            match("throw"); 
 
 
             }
@@ -1922,10 +1904,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:96:7: ( 'typeof' )
-            // InternalSignalDSL.g:96:9: 'typeof'
+            // InternalSignalDSL.g:96:7: ( 'return' )
+            // InternalSignalDSL.g:96:9: 'return'
             {
-            match("typeof"); 
+            match("return"); 
 
 
             }
@@ -1943,10 +1925,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:97:7: ( 'throw' )
-            // InternalSignalDSL.g:97:9: 'throw'
+            // InternalSignalDSL.g:97:7: ( 'try' )
+            // InternalSignalDSL.g:97:9: 'try'
             {
-            match("throw"); 
+            match("try"); 
 
 
             }
@@ -1964,10 +1946,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:98:8: ( 'return' )
-            // InternalSignalDSL.g:98:10: 'return'
+            // InternalSignalDSL.g:98:8: ( 'finally' )
+            // InternalSignalDSL.g:98:10: 'finally'
             {
-            match("return"); 
+            match("finally"); 
 
 
             }
@@ -1985,10 +1967,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:99:8: ( 'try' )
-            // InternalSignalDSL.g:99:10: 'try'
+            // InternalSignalDSL.g:99:8: ( 'synchronized' )
+            // InternalSignalDSL.g:99:10: 'synchronized'
             {
-            match("try"); 
+            match("synchronized"); 
 
 
             }
@@ -2006,10 +1988,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:100:8: ( 'finally' )
-            // InternalSignalDSL.g:100:10: 'finally'
+            // InternalSignalDSL.g:100:8: ( 'catch' )
+            // InternalSignalDSL.g:100:10: 'catch'
             {
-            match("finally"); 
+            match("catch"); 
 
 
             }
@@ -2027,11 +2009,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:101:8: ( 'synchronized' )
-            // InternalSignalDSL.g:101:10: 'synchronized'
+            // InternalSignalDSL.g:101:8: ( '?' )
+            // InternalSignalDSL.g:101:10: '?'
             {
-            match("synchronized"); 
-
+            match('?'); 
 
             }
 
@@ -2048,11 +2029,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:102:8: ( 'catch' )
-            // InternalSignalDSL.g:102:10: 'catch'
+            // InternalSignalDSL.g:102:8: ( '&' )
+            // InternalSignalDSL.g:102:10: '&'
             {
-            match("catch"); 
-
+            match('&'); 
 
             }
 
@@ -2069,10 +2049,11 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:103:8: ( '?' )
-            // InternalSignalDSL.g:103:10: '?'
+            // InternalSignalDSL.g:103:8: ( 'applyon' )
+            // InternalSignalDSL.g:103:10: 'applyon'
             {
-            match('?'); 
+            match("applyon"); 
+
 
             }
 
@@ -2089,10 +2070,11 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:104:8: ( '&' )
-            // InternalSignalDSL.g:104:10: '&'
+            // InternalSignalDSL.g:104:8: ( 'ns' )
+            // InternalSignalDSL.g:104:10: 'ns'
             {
-            match('&'); 
+            match("ns"); 
+
 
             }
 
@@ -2109,10 +2091,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:105:8: ( 'ns' )
-            // InternalSignalDSL.g:105:10: 'ns'
+            // InternalSignalDSL.g:105:8: ( '::' )
+            // InternalSignalDSL.g:105:10: '::'
             {
-            match("ns"); 
+            match("::"); 
 
 
             }
@@ -2130,10 +2112,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:106:8: ( '::' )
-            // InternalSignalDSL.g:106:10: '::'
+            // InternalSignalDSL.g:106:8: ( '?.' )
+            // InternalSignalDSL.g:106:10: '?.'
             {
-            match("::"); 
+            match("?."); 
 
 
             }
@@ -2151,11 +2133,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:107:8: ( '?.' )
-            // InternalSignalDSL.g:107:10: '?.'
+            // InternalSignalDSL.g:107:8: ( '|' )
+            // InternalSignalDSL.g:107:10: '|'
             {
-            match("?."); 
-
+            match('|'); 
 
             }
 
@@ -2172,10 +2153,11 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:108:8: ( '|' )
-            // InternalSignalDSL.g:108:10: '|'
+            // InternalSignalDSL.g:108:8: ( 'var' )
+            // InternalSignalDSL.g:108:10: 'var'
             {
-            match('|'); 
+            match("var"); 
+
 
             }
 
@@ -2192,29 +2174,8 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:109:8: ( 'var' )
-            // InternalSignalDSL.g:109:10: 'var'
-            {
-            match("var"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__111"
-
-    // $ANTLR start "T__112"
-    public final void mT__112() throws RecognitionException {
-        try {
-            int _type = T__112;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:110:8: ( 'true' )
-            // InternalSignalDSL.g:110:10: 'true'
+            // InternalSignalDSL.g:109:8: ( 'true' )
+            // InternalSignalDSL.g:109:10: 'true'
             {
             match("true"); 
 
@@ -2227,17 +2188,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__112"
+    // $ANTLR end "T__111"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21005:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalSignalDSL.g:21005:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:21510:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalSignalDSL.g:21510:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalSignalDSL.g:21005:12: ( '0x' | '0X' )
+            // InternalSignalDSL.g:21510:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2265,7 +2226,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalSignalDSL.g:21005:13: '0x'
+                    // InternalSignalDSL.g:21510:13: '0x'
                     {
                     match("0x"); 
 
@@ -2273,7 +2234,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:21005:18: '0X'
+                    // InternalSignalDSL.g:21510:18: '0X'
                     {
                     match("0X"); 
 
@@ -2283,7 +2244,7 @@
 
             }
 
-            // InternalSignalDSL.g:21005:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalSignalDSL.g:21510:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2321,7 +2282,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalSignalDSL.g:21005:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:21510:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2330,10 +2291,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalSignalDSL.g:21005:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:21510:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalSignalDSL.g:21005:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:21510:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2351,7 +2312,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalSignalDSL.g:21005:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalSignalDSL.g:21510:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2375,7 +2336,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:21005:84: ( 'l' | 'L' )
+                            // InternalSignalDSL.g:21510:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2414,11 +2375,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21007:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalSignalDSL.g:21007:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:21512:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalSignalDSL.g:21512:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalSignalDSL.g:21007:21: ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:21512:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2467,11 +2428,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21009:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalSignalDSL.g:21009:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:21514:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalSignalDSL.g:21514:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalSignalDSL.g:21009:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalSignalDSL.g:21514:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2480,7 +2441,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalSignalDSL.g:21009:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalSignalDSL.g:21514:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2491,7 +2452,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalSignalDSL.g:21009:36: ( '+' | '-' )?
+                    // InternalSignalDSL.g:21514:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2524,7 +2485,7 @@
 
             }
 
-            // InternalSignalDSL.g:21009:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:21514:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2536,7 +2497,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalSignalDSL.g:21009:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalSignalDSL.g:21514:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2560,7 +2521,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:21009:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalSignalDSL.g:21514:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
                     {
                     if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
                         input.consume();
@@ -2593,10 +2554,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21011:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalSignalDSL.g:21011:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:21516:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalSignalDSL.g:21516:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalSignalDSL.g:21011:11: ( '^' )?
+            // InternalSignalDSL.g:21516:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2605,7 +2566,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalSignalDSL.g:21011:11: '^'
+                    // InternalSignalDSL.g:21516:11: '^'
                     {
                     match('^'); 
 
@@ -2623,7 +2584,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalSignalDSL.g:21011:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:21516:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2672,10 +2633,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21013:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalSignalDSL.g:21013:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:21518:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalSignalDSL.g:21518:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalSignalDSL.g:21013:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:21518:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2693,10 +2654,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalSignalDSL.g:21013:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalSignalDSL.g:21518:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalSignalDSL.g:21013:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalSignalDSL.g:21518:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2712,7 +2673,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:21013:21: '\\\\' .
+                    	    // InternalSignalDSL.g:21518:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2720,7 +2681,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:21013:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalSignalDSL.g:21518:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2740,7 +2701,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:21013:44: ( '\"' )?
+                    // InternalSignalDSL.g:21518:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2749,7 +2710,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalSignalDSL.g:21013:44: '\"'
+                            // InternalSignalDSL.g:21518:44: '\"'
                             {
                             match('\"'); 
 
@@ -2762,10 +2723,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:21013:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalSignalDSL.g:21518:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalSignalDSL.g:21013:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalSignalDSL.g:21518:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -2781,7 +2742,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:21013:55: '\\\\' .
+                    	    // InternalSignalDSL.g:21518:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2789,7 +2750,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:21013:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalSignalDSL.g:21518:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2809,7 +2770,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:21013:79: ( '\\'' )?
+                    // InternalSignalDSL.g:21518:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2818,7 +2779,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalSignalDSL.g:21013:79: '\\''
+                            // InternalSignalDSL.g:21518:79: '\\''
                             {
                             match('\''); 
 
@@ -2849,12 +2810,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21015:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalSignalDSL.g:21015:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalSignalDSL.g:21520:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalSignalDSL.g:21520:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalSignalDSL.g:21015:24: ( options {greedy=false; } : . )*
+            // InternalSignalDSL.g:21520:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2879,7 +2840,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalSignalDSL.g:21015:52: .
+            	    // InternalSignalDSL.g:21520:52: .
             	    {
             	    matchAny(); 
 
@@ -2909,12 +2870,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21017:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalSignalDSL.g:21017:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:21522:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalSignalDSL.g:21522:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalSignalDSL.g:21017:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalSignalDSL.g:21522:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -2927,7 +2888,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalSignalDSL.g:21017:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalSignalDSL.g:21522: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();
@@ -2947,7 +2908,7 @@
                 }
             } while (true);
 
-            // InternalSignalDSL.g:21017:40: ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:21522:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -2956,9 +2917,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalSignalDSL.g:21017:41: ( '\\r' )? '\\n'
+                    // InternalSignalDSL.g:21522:41: ( '\\r' )? '\\n'
                     {
-                    // InternalSignalDSL.g:21017:41: ( '\\r' )?
+                    // InternalSignalDSL.g:21522:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -2967,7 +2928,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalSignalDSL.g:21017:41: '\\r'
+                            // InternalSignalDSL.g:21522:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2999,10 +2960,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21019:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalSignalDSL.g:21019:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:21524:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalSignalDSL.g:21524:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalSignalDSL.g:21019:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:21524:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3056,8 +3017,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21021:16: ( . )
-            // InternalSignalDSL.g:21021:18: .
+            // InternalSignalDSL.g:21526:16: ( . )
+            // InternalSignalDSL.g:21526:18: .
             {
             matchAny(); 
 
@@ -3072,8 +3033,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalSignalDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=109;
+        // InternalSignalDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=108;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -3770,70 +3731,63 @@
                 }
                 break;
             case 100 :
-                // InternalSignalDSL.g:1:616: T__112
-                {
-                mT__112(); 
-
-                }
-                break;
-            case 101 :
-                // InternalSignalDSL.g:1:623: RULE_HEX
+                // InternalSignalDSL.g:1:616: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 102 :
-                // InternalSignalDSL.g:1:632: RULE_INT
+            case 101 :
+                // InternalSignalDSL.g:1:625: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 103 :
-                // InternalSignalDSL.g:1:641: RULE_DECIMAL
+            case 102 :
+                // InternalSignalDSL.g:1:634: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 104 :
-                // InternalSignalDSL.g:1:654: RULE_ID
+            case 103 :
+                // InternalSignalDSL.g:1:647: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 105 :
-                // InternalSignalDSL.g:1:662: RULE_STRING
+            case 104 :
+                // InternalSignalDSL.g:1:655: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 106 :
-                // InternalSignalDSL.g:1:674: RULE_ML_COMMENT
+            case 105 :
+                // InternalSignalDSL.g:1:667: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 107 :
-                // InternalSignalDSL.g:1:690: RULE_SL_COMMENT
+            case 106 :
+                // InternalSignalDSL.g:1:683: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 108 :
-                // InternalSignalDSL.g:1:706: RULE_WS
+            case 107 :
+                // InternalSignalDSL.g:1:699: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 109 :
-                // InternalSignalDSL.g:1:714: RULE_ANY_OTHER
+            case 108 :
+                // InternalSignalDSL.g:1:707: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3847,50 +3801,48 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\64\1\66\1\70\1\73\1\77\1\102\1\106\1\110\1\112\1\114\1\116\1\120\1\123\13\125\2\uffff\3\125\1\174\1\125\10\uffff\2\125\2\u008d\1\61\5\uffff\1\u0092\26\uffff\1\u0094\5\uffff\1\u0096\4\uffff\1\125\1\uffff\13\125\1\u00a5\17\125\2\uffff\3\125\1\u00bd\4\125\2\uffff\1\u00c3\1\u00c4\10\uffff\2\125\1\u00c7\1\125\1\uffff\1\u008d\12\uffff\1\u00c9\1\u00ca\14\125\1\uffff\2\125\1\u00da\13\125\1\u00e7\10\125\1\uffff\5\125\2\uffff\1\u00f5\1\125\1\uffff\1\125\2\uffff\1\125\1\u00f9\15\125\1\uffff\14\125\1\uffff\1\u0113\11\125\1\u011d\1\u011e\1\125\1\uffff\1\u0120\2\125\1\uffff\1\125\1\u0125\10\125\1\u012e\14\125\1\u013b\1\125\1\uffff\3\125\1\u0140\5\125\2\uffff\1\u0146\1\uffff\3\125\1\u014a\1\uffff\1\u014b\3\125\1\u014f\1\125\1\u0151\1\125\1\uffff\1\u0153\3\125\1\u0157\1\u0158\2\125\1\u015b\3\125\1\uffff\1\u015f\3\125\1\uffff\5\125\1\uffff\1\u0168\1\u0169\1\125\2\uffff\3\125\1\uffff\1\125\1\uffff\1\125\1\uffff\2\125\1\u0172\2\uffff\1\125\1\u0174\1\uffff\1\125\1\u0176\1\125\1\uffff\2\125\1\u017a\1\125\1\u017c\1\u017d\1\u017e\1\125\2\uffff\2\125\1\u0182\4\125\1\u0187\1\uffff\1\u0188\1\uffff\1\125\1\uffff\1\u018a\1\125\1\u018c\1\uffff\1\125\3\uffff\1\u018e\1\u018f\1\125\1\uffff\4\125\2\uffff\1\u0195\1\uffff\1\u0196\1\uffff\1\u0197\2\uffff\1\u0198\2\125\1\u019b\1\125\4\uffff\1\u019d\1\125\1\uffff\1\u019f\1\uffff\1\u01a0\2\uffff";
+        "\1\uffff\1\62\1\64\1\66\1\71\1\75\1\100\1\104\1\106\1\110\1\112\1\114\1\116\1\121\11\123\2\uffff\3\123\1\166\1\123\10\uffff\2\123\2\u0088\1\57\5\uffff\1\u008d\26\uffff\1\u008f\5\uffff\1\u0091\4\uffff\1\123\1\uffff\13\123\1\u00a1\15\123\2\uffff\5\123\1\u00bb\2\uffff\1\u00bc\1\u00bd\1\123\10\uffff\2\123\1\u00c1\1\123\1\uffff\1\u0088\12\uffff\1\u00c3\1\u00c4\15\123\1\uffff\5\123\1\u00d7\7\123\1\u00e0\13\123\3\uffff\1\123\1\u00ed\1\123\1\uffff\1\123\2\uffff\2\123\1\u00f2\14\123\1\u00ff\2\123\1\uffff\10\123\1\uffff\1\u010b\4\123\1\u0110\1\u0111\5\123\1\uffff\1\u0117\3\123\1\uffff\1\123\1\u011d\10\123\1\u0126\1\123\1\uffff\11\123\1\u0131\1\123\1\uffff\3\123\1\u0136\2\uffff\1\u0137\4\123\1\uffff\3\123\1\u013f\1\u0140\1\uffff\1\u0141\3\123\1\u0145\1\123\1\u0147\1\123\1\uffff\1\u0149\5\123\1\u014f\3\123\1\uffff\1\u0153\3\123\2\uffff\4\123\1\u015b\1\u015c\1\123\3\uffff\3\123\1\uffff\1\123\1\uffff\1\123\1\uffff\2\123\1\u0165\1\123\1\u0167\1\uffff\1\123\1\u0169\1\123\1\uffff\2\123\1\u016d\1\123\1\u016f\1\u0170\1\u0171\2\uffff\2\123\1\u0174\3\123\1\u0178\1\u0179\1\uffff\1\u017a\1\uffff\1\123\1\uffff\1\u017c\1\123\1\u017e\1\uffff\1\u017f\3\uffff\1\u0180\1\123\1\uffff\1\u0182\2\123\3\uffff\1\u0185\1\uffff\1\u0186\3\uffff\1\u0187\1\uffff\1\123\1\u0189\3\uffff\1\123\1\uffff\1\u018b\1\uffff";
     static final String DFA21_eofS =
-        "\u01a1\uffff";
+        "\u018c\uffff";
     static final String DFA21_minS =
-        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\141\1\146\1\141\1\155\1\170\1\141\1\157\1\150\1\141\2\uffff\3\141\1\72\1\163\10\uffff\2\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\164\1\163\1\141\1\156\1\161\1\164\1\150\1\151\1\156\1\160\1\163\1\44\1\154\1\151\1\162\1\154\2\160\1\143\1\156\1\145\1\162\1\160\1\165\1\144\1\164\1\151\2\uffff\1\162\1\151\1\146\1\44\1\156\1\165\1\157\1\163\2\uffff\2\44\10\uffff\1\167\1\154\1\44\1\164\1\uffff\1\60\12\uffff\2\44\2\145\1\164\1\145\1\144\2\165\1\145\1\164\1\143\1\157\1\164\1\uffff\1\163\1\144\1\44\1\145\1\141\2\157\1\141\1\153\1\144\1\163\1\162\1\157\1\145\1\44\1\145\1\156\1\153\1\143\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\156\1\145\1\143\2\uffff\1\44\1\154\1\uffff\1\165\2\uffff\1\156\1\44\1\151\1\162\1\141\1\145\1\162\1\144\1\143\1\150\1\162\1\141\1\145\1\141\1\151\1\uffff\1\116\1\154\2\162\1\154\2\141\1\150\1\144\1\163\1\167\1\157\1\uffff\1\44\1\145\1\154\1\150\1\145\1\143\1\171\1\165\2\154\2\44\1\150\1\uffff\1\44\1\162\1\144\1\uffff\1\143\1\44\1\171\1\156\1\144\1\165\1\150\1\162\1\164\1\156\1\44\1\171\1\154\1\141\1\154\2\164\1\154\1\147\1\171\1\154\1\141\1\144\1\44\1\146\1\uffff\1\163\1\171\1\145\1\44\1\164\1\101\1\154\1\145\1\171\2\uffff\1\44\1\uffff\1\156\1\163\1\151\1\44\1\uffff\1\44\1\164\1\141\1\154\1\44\1\157\1\44\1\143\1\uffff\1\44\1\145\1\155\1\171\2\44\2\145\1\44\2\171\1\141\1\uffff\1\44\1\144\1\117\1\162\1\uffff\1\157\2\164\1\162\1\101\1\uffff\2\44\1\157\2\uffff\1\151\1\171\1\145\1\uffff\1\156\1\uffff\1\145\1\uffff\1\115\1\145\1\44\2\uffff\1\154\1\44\1\uffff\1\117\1\44\1\171\1\uffff\1\141\1\156\1\44\1\162\3\44\1\164\2\uffff\1\156\1\141\1\44\1\106\1\151\1\157\1\141\1\44\1\uffff\1\44\1\uffff\1\156\1\uffff\1\44\1\171\1\44\1\uffff\1\171\3\uffff\2\44\1\154\1\uffff\1\157\1\172\1\146\1\163\2\uffff\1\44\1\uffff\1\44\1\uffff\1\44\2\uffff\1\44\1\162\1\145\1\44\1\153\4\uffff\1\44\1\144\1\uffff\1\44\1\uffff\1\44\2\uffff";
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\141\1\146\2\141\1\157\1\150\1\141\2\uffff\1\141\1\157\1\141\1\72\1\160\10\uffff\2\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\160\1\163\1\141\1\156\1\161\1\164\1\150\1\151\1\156\1\160\1\163\1\44\1\154\1\151\1\154\1\162\1\143\1\156\1\145\1\162\1\160\1\165\1\144\1\164\1\151\2\uffff\1\157\1\163\1\165\1\151\1\146\1\44\2\uffff\2\44\1\160\10\uffff\1\167\1\154\1\44\1\164\1\uffff\1\60\12\uffff\2\44\1\145\1\157\1\145\1\164\1\145\1\144\2\165\1\145\1\164\1\143\1\157\1\164\1\uffff\1\163\1\144\1\155\1\145\1\141\1\44\1\141\1\153\1\144\1\163\1\162\1\157\1\145\1\44\1\145\1\156\1\153\1\143\1\154\1\156\1\145\1\143\1\162\1\154\1\141\3\uffff\1\154\1\44\1\154\1\uffff\1\165\2\uffff\1\156\1\162\1\44\1\151\1\162\1\141\1\145\1\162\1\144\1\143\1\150\1\162\1\141\1\145\1\141\1\44\1\155\1\154\1\uffff\1\154\2\141\1\150\1\144\1\163\1\167\1\157\1\uffff\1\44\1\145\1\154\1\150\1\145\2\44\1\150\1\154\1\171\1\165\1\171\1\uffff\1\44\1\162\1\144\1\164\1\uffff\1\143\1\44\1\171\1\156\1\144\1\165\1\150\1\162\1\164\1\156\1\44\1\171\1\uffff\2\141\2\154\1\147\1\171\1\154\1\141\1\144\1\44\1\146\1\uffff\1\163\1\171\1\145\1\44\2\uffff\1\44\1\171\1\141\1\154\1\157\1\uffff\1\156\1\163\1\151\2\44\1\uffff\1\44\1\164\1\141\1\154\1\44\1\157\1\44\1\143\1\uffff\1\44\1\163\1\155\1\171\2\145\1\44\2\171\1\141\1\uffff\1\44\1\144\1\157\1\162\2\uffff\1\141\2\164\1\156\2\44\1\157\3\uffff\1\151\1\171\1\145\1\uffff\1\156\1\uffff\1\145\1\uffff\1\153\1\145\1\44\1\154\1\44\1\uffff\1\157\1\44\1\171\1\uffff\1\141\1\156\1\44\1\164\3\44\2\uffff\1\156\1\141\1\44\1\162\1\151\1\157\2\44\1\uffff\1\44\1\uffff\1\156\1\uffff\1\44\1\171\1\44\1\uffff\1\44\3\uffff\1\44\1\154\1\uffff\1\44\1\172\1\146\3\uffff\1\44\1\uffff\1\44\3\uffff\1\44\1\uffff\1\145\1\44\3\uffff\1\144\1\uffff\1\44\1\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1\170\1\171\1\156\1\162\1\155\1\170\1\141\1\157\1\171\1\150\2\uffff\2\157\1\162\1\72\1\164\10\uffff\1\165\1\145\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\1\164\1\163\1\141\1\160\1\161\1\164\1\150\1\151\1\156\1\160\1\163\1\172\1\154\1\151\1\162\1\156\2\160\1\162\1\156\1\145\1\165\1\160\1\171\1\145\1\164\1\151\2\uffff\1\162\1\151\1\146\1\172\1\156\1\165\1\157\1\164\2\uffff\2\172\10\uffff\1\167\1\154\1\172\1\164\1\uffff\1\154\12\uffff\2\172\2\145\1\164\1\145\1\144\2\165\1\145\1\164\1\143\1\157\1\164\1\uffff\1\163\1\144\1\172\1\145\1\141\2\157\1\141\1\153\1\164\1\163\1\162\1\157\1\145\1\172\1\145\1\156\1\153\1\143\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\156\1\145\1\143\2\uffff\1\172\1\154\1\uffff\1\165\2\uffff\1\156\1\172\1\151\1\162\1\141\1\145\1\162\1\144\1\143\1\150\1\162\1\141\1\145\1\141\1\151\1\uffff\1\116\1\154\2\162\1\154\2\141\1\150\1\144\1\163\1\167\1\157\1\uffff\1\172\1\145\1\154\1\150\1\145\1\143\1\171\1\165\2\154\2\172\1\150\1\uffff\1\172\1\162\1\163\1\uffff\1\143\1\172\1\171\1\156\1\144\1\165\1\150\1\162\1\164\1\156\1\172\1\171\1\154\1\141\1\154\2\164\1\154\1\147\1\171\1\154\1\141\1\144\1\172\1\146\1\uffff\1\163\1\171\1\145\1\172\1\164\1\101\1\154\1\145\1\171\2\uffff\1\172\1\uffff\1\156\1\163\1\151\1\172\1\uffff\1\172\1\164\1\141\1\154\1\172\1\157\1\172\1\143\1\uffff\1\172\1\145\1\155\1\171\2\172\2\145\1\172\2\171\1\141\1\uffff\1\172\1\144\1\117\1\162\1\uffff\1\157\2\164\1\162\1\101\1\uffff\2\172\1\157\2\uffff\1\151\1\171\1\145\1\uffff\1\156\1\uffff\1\145\1\uffff\1\115\1\145\1\172\2\uffff\1\154\1\172\1\uffff\1\117\1\172\1\171\1\uffff\1\141\1\156\1\172\1\162\3\172\1\164\2\uffff\1\156\1\141\1\172\1\106\1\151\1\157\1\141\1\172\1\uffff\1\172\1\uffff\1\156\1\uffff\1\172\1\171\1\172\1\uffff\1\171\3\uffff\2\172\1\154\1\uffff\1\157\1\172\1\146\1\163\2\uffff\1\172\1\uffff\1\172\1\uffff\1\172\2\uffff\1\172\1\162\1\145\1\172\1\153\4\uffff\1\172\1\144\1\uffff\1\172\1\uffff\1\172\2\uffff";
+        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1\170\1\171\1\156\1\162\1\141\1\157\1\171\1\150\2\uffff\1\162\2\157\1\72\1\164\10\uffff\1\165\1\145\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\1\164\1\163\1\141\1\160\1\161\1\164\1\150\1\151\1\156\1\160\1\163\1\172\1\154\1\157\1\156\2\162\1\156\1\145\1\165\1\160\1\171\1\145\1\164\1\151\2\uffff\1\157\1\164\1\165\1\151\1\146\1\172\2\uffff\2\172\1\160\10\uffff\1\167\1\154\1\172\1\164\1\uffff\1\154\12\uffff\2\172\1\145\1\157\1\145\1\164\1\145\1\144\2\165\1\145\1\164\1\143\1\157\1\164\1\uffff\1\163\1\144\1\155\1\145\1\141\1\172\1\141\1\153\1\164\1\163\1\162\1\157\1\145\1\172\1\145\1\156\1\153\1\143\1\154\1\156\1\145\1\143\1\162\1\154\1\141\3\uffff\1\154\1\172\1\154\1\uffff\1\165\2\uffff\1\156\1\162\1\172\1\151\1\162\1\141\1\145\1\162\1\144\1\143\1\150\1\162\1\141\1\145\1\141\1\172\1\156\1\154\1\uffff\1\154\2\141\1\150\1\144\1\163\1\167\1\157\1\uffff\1\172\1\145\1\154\1\150\1\145\2\172\1\150\1\154\1\171\1\165\1\171\1\uffff\1\172\1\162\1\163\1\164\1\uffff\1\143\1\172\1\171\1\156\1\144\1\165\1\150\1\162\1\164\1\156\1\172\1\171\1\uffff\2\141\2\154\1\147\1\171\1\154\1\141\1\144\1\172\1\146\1\uffff\1\163\1\171\1\145\1\172\2\uffff\1\172\1\171\1\141\1\154\1\157\1\uffff\1\156\1\163\1\151\2\172\1\uffff\1\172\1\164\1\141\1\154\1\172\1\157\1\172\1\143\1\uffff\1\172\1\163\1\155\1\171\2\145\1\172\2\171\1\141\1\uffff\1\172\1\144\1\157\1\162\2\uffff\1\141\2\164\1\156\2\172\1\157\3\uffff\1\151\1\171\1\145\1\uffff\1\156\1\uffff\1\145\1\uffff\1\153\1\145\1\172\1\154\1\172\1\uffff\1\157\1\172\1\171\1\uffff\1\141\1\156\1\172\1\164\3\172\2\uffff\1\156\1\141\1\172\1\162\1\151\1\157\2\172\1\uffff\1\172\1\uffff\1\156\1\uffff\1\172\1\171\1\172\1\uffff\1\172\3\uffff\1\172\1\154\1\uffff\2\172\1\146\3\uffff\1\172\1\uffff\1\172\3\uffff\1\172\1\uffff\1\145\1\172\3\uffff\1\144\1\uffff\1\172\1\uffff";
     static final String DFA21_acceptS =
-        "\31\uffff\1\63\1\64\5\uffff\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111\5\uffff\1\150\2\151\1\154\1\155\1\uffff\1\23\1\1\1\2\1\142\1\3\1\136\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\152\1\153\1\32\1\10\1\33\1\uffff\1\34\1\15\1\16\1\24\1\17\1\uffff\1\37\1\25\1\141\1\135\1\uffff\1\150\33\uffff\1\63\1\64\10\uffff\1\140\1\75\2\uffff\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111\4\uffff\1\145\1\uffff\1\146\1\147\1\151\1\154\1\13\1\11\1\14\1\12\1\21\1\22\16\uffff\1\114\27\uffff\1\123\5\uffff\1\77\1\113\2\uffff\1\137\1\uffff\1\40\1\143\17\uffff\1\121\14\uffff\1\131\15\uffff\1\124\3\uffff\1\115\31\uffff\1\144\11\uffff\1\72\1\120\1\uffff\1\125\4\uffff\1\45\10\uffff\1\46\14\uffff\1\127\4\uffff\1\122\5\uffff\1\134\3\uffff\1\42\1\53\3\uffff\1\116\1\uffff\1\43\1\uffff\1\60\3\uffff\1\47\1\50\2\uffff\1\54\3\uffff\1\126\10\uffff\1\130\1\41\10\uffff\1\132\1\uffff\1\62\1\uffff\1\55\3\uffff\1\65\1\uffff\1\74\1\117\1\67\3\uffff\1\61\4\uffff\1\101\1\52\1\uffff\1\57\1\uffff\1\76\1\uffff\1\73\1\44\5\uffff\1\100\1\56\1\66\1\51\2\uffff\1\112\1\uffff\1\71\1\uffff\1\70\1\133";
+        "\27\uffff\1\62\1\63\5\uffff\1\100\1\101\1\102\1\103\1\104\1\105\1\106\1\107\5\uffff\1\147\2\150\1\153\1\154\1\uffff\1\23\1\1\1\2\1\141\1\3\1\134\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\151\1\152\1\32\1\10\1\33\1\uffff\1\34\1\15\1\16\1\24\1\17\1\uffff\1\37\1\25\1\140\1\133\1\uffff\1\147\31\uffff\1\62\1\63\6\uffff\1\137\1\74\3\uffff\1\100\1\101\1\102\1\103\1\104\1\105\1\106\1\107\4\uffff\1\144\1\uffff\1\145\1\146\1\150\1\153\1\13\1\11\1\14\1\12\1\21\1\22\17\uffff\1\112\31\uffff\1\121\1\76\1\111\3\uffff\1\136\1\uffff\1\40\1\142\22\uffff\1\117\10\uffff\1\127\14\uffff\1\122\4\uffff\1\113\14\uffff\1\66\13\uffff\1\143\4\uffff\1\71\1\116\5\uffff\1\123\5\uffff\1\45\10\uffff\1\46\12\uffff\1\125\4\uffff\1\120\1\132\7\uffff\1\47\1\42\1\52\3\uffff\1\114\1\uffff\1\43\1\uffff\1\57\5\uffff\1\53\3\uffff\1\124\7\uffff\1\126\1\41\10\uffff\1\130\1\uffff\1\61\1\uffff\1\54\3\uffff\1\64\1\uffff\1\73\1\115\1\135\2\uffff\1\60\3\uffff\1\65\1\67\1\51\1\uffff\1\56\1\uffff\1\75\1\72\1\44\1\uffff\1\70\2\uffff\1\77\1\55\1\50\1\uffff\1\110\1\uffff\1\131";
     static final String DFA21_specialS =
-        "\1\0\u01a0\uffff}>";
+        "\1\0\u018b\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\61\2\60\2\61\1\60\22\61\1\60\1\11\1\56\1\46\1\55\1\10\1\3\1\57\1\42\1\43\1\6\1\4\1\44\1\5\1\14\1\7\1\52\11\53\1\36\1\40\1\13\1\1\1\12\1\15\1\41\4\55\1\24\3\55\1\23\21\55\1\47\1\61\1\45\1\54\1\55\1\61\1\37\1\55\1\35\1\33\1\17\1\22\1\55\1\34\1\21\3\55\1\26\1\50\1\55\1\25\1\55\1\51\1\20\1\27\1\55\1\16\1\30\3\55\1\31\1\2\1\32\uff82\61",
-            "\1\62\1\63",
+            "\11\57\2\56\2\57\1\56\22\57\1\56\1\11\1\54\1\44\1\53\1\10\1\3\1\55\1\40\1\41\1\6\1\4\1\42\1\5\1\14\1\7\1\50\11\51\1\34\1\36\1\13\1\1\1\12\1\15\1\37\32\53\1\45\1\57\1\43\1\52\1\53\1\57\1\35\1\53\1\31\1\33\1\17\1\22\1\53\1\32\1\21\3\53\1\24\1\46\1\53\1\23\1\53\1\47\1\20\1\25\1\53\1\16\1\26\3\53\1\27\1\2\1\30\uff82\57",
+            "\1\60\1\61",
+            "\1\63",
             "\1\65",
-            "\1\67",
-            "\1\72\21\uffff\1\71",
-            "\1\76\17\uffff\1\74\1\75",
-            "\1\101\22\uffff\1\100",
-            "\1\104\4\uffff\1\105\15\uffff\1\103",
+            "\1\70\21\uffff\1\67",
+            "\1\74\17\uffff\1\72\1\73",
+            "\1\77\22\uffff\1\76",
+            "\1\102\4\uffff\1\103\15\uffff\1\101",
+            "\1\105",
             "\1\107",
             "\1\111",
             "\1\113",
             "\1\115",
-            "\1\117",
-            "\1\122\13\uffff\1\121",
-            "\1\124",
-            "\1\127\13\uffff\1\126",
-            "\1\133\1\uffff\1\134\1\uffff\1\132\16\uffff\1\130\1\131\1\uffff\1\135\1\uffff\1\136",
-            "\1\141\6\uffff\1\137\1\140",
-            "\1\142\7\uffff\1\145\5\uffff\1\144\2\uffff\1\143",
-            "\1\146",
-            "\1\147",
-            "\1\150",
-            "\1\151",
-            "\1\153\11\uffff\1\155\2\uffff\1\152\3\uffff\1\154",
-            "\1\157\3\uffff\1\156\2\uffff\1\160",
+            "\1\120\13\uffff\1\117",
+            "\1\122",
+            "\1\125\13\uffff\1\124",
+            "\1\131\1\uffff\1\132\1\uffff\1\130\16\uffff\1\126\1\127\1\uffff\1\133\1\uffff\1\134",
+            "\1\137\6\uffff\1\135\1\136",
+            "\1\140\7\uffff\1\142\5\uffff\1\143\2\uffff\1\141",
+            "\1\144",
+            "\1\145",
+            "\1\147\11\uffff\1\151\2\uffff\1\146\3\uffff\1\150",
+            "\1\153\3\uffff\1\152\2\uffff\1\154",
             "",
             "",
-            "\1\164\3\uffff\1\165\3\uffff\1\163\5\uffff\1\166",
-            "\1\167\15\uffff\1\170",
-            "\1\172\20\uffff\1\171",
-            "\1\173",
-            "\1\176\1\175",
+            "\1\160\20\uffff\1\157",
+            "\1\161",
+            "\1\162\3\uffff\1\163\11\uffff\1\164",
+            "\1\165",
+            "\1\171\2\uffff\1\170\1\167",
             "",
             "",
             "",
@@ -3899,17 +3851,17 @@
             "",
             "",
             "",
-            "\1\u0087\15\uffff\1\u0089\1\uffff\1\u0088",
-            "\1\u008a",
-            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b\6\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b",
-            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
-            "\1\125\34\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0082\15\uffff\1\u0084\1\uffff\1\u0083",
+            "\1\u0085",
+            "\12\u0087\10\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\13\uffff\1\u0086\6\uffff\1\u0087\2\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\13\uffff\1\u0086",
+            "\12\u0087\10\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\22\uffff\1\u0087\2\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089",
+            "\1\123\34\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
             "",
             "",
             "",
             "",
-            "\1\u0091",
+            "\1\u008c",
             "",
             "",
             "",
@@ -3932,60 +3884,71 @@
             "",
             "",
             "",
-            "\1\u0093",
+            "\1\u008e",
             "",
             "",
             "",
             "",
             "",
-            "\1\u0095",
+            "\1\u0090",
             "",
             "",
             "",
             "",
-            "\1\u0097\5\uffff\1\u0098",
+            "\1\u0092\5\uffff\1\u0093",
             "",
-            "\1\u0099",
+            "\1\u0095\3\uffff\1\u0094",
+            "\1\u0096",
+            "\1\u0097",
+            "\1\u0099\1\uffff\1\u0098",
             "\1\u009a",
             "\1\u009b",
-            "\1\u009d\1\uffff\1\u009c",
+            "\1\u009c",
+            "\1\u009d",
             "\1\u009e",
             "\1\u009f",
             "\1\u00a0",
-            "\1\u00a1",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u00a2",
-            "\1\u00a3",
-            "\1\u00a4",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u00a6",
+            "\1\u00a3\5\uffff\1\u00a4",
+            "\1\u00a5\1\uffff\1\u00a6",
             "\1\u00a7",
-            "\1\u00a8",
-            "\1\u00a9\1\uffff\1\u00aa",
+            "\1\u00a9\16\uffff\1\u00a8",
+            "\1\u00aa",
             "\1\u00ab",
-            "\1\u00ac",
-            "\1\u00ae\16\uffff\1\u00ad",
-            "\1\u00af",
-            "\1\u00b0",
-            "\1\u00b2\2\uffff\1\u00b1",
+            "\1\u00ad\2\uffff\1\u00ac",
+            "\1\u00ae",
+            "\1\u00b0\3\uffff\1\u00af",
+            "\1\u00b1\1\u00b2",
             "\1\u00b3",
-            "\1\u00b5\3\uffff\1\u00b4",
+            "\1\u00b4",
+            "",
+            "",
+            "\1\u00b5",
             "\1\u00b6\1\u00b7",
             "\1\u00b8",
             "\1\u00b9",
-            "",
-            "",
             "\1\u00ba",
-            "\1\u00bb",
-            "\1\u00bc",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u00be",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00bf",
             "\1\u00c0",
-            "\1\u00c1\1\u00c2",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\u00c2",
             "",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\12\u0087\10\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\22\uffff\1\u0087\2\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089",
             "",
             "",
             "",
@@ -3994,24 +3957,16 @@
             "",
             "",
             "",
+            "",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u00c5",
             "\1\u00c6",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u00c7",
             "\1\u00c8",
-            "",
-            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u00c9",
+            "\1\u00ca",
             "\1\u00cb",
             "\1\u00cc",
             "\1\u00cd",
@@ -4019,262 +3974,240 @@
             "\1\u00cf",
             "\1\u00d0",
             "\1\u00d1",
+            "",
             "\1\u00d2",
             "\1\u00d3",
             "\1\u00d4",
             "\1\u00d5",
             "\1\u00d6",
-            "",
-            "\1\u00d7",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u00d8",
-            "\1\125\13\uffff\12\125\7\uffff\5\125\1\u00d9\24\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u00db",
+            "\1\u00d9",
+            "\1\u00da\17\uffff\1\u00db",
             "\1\u00dc",
             "\1\u00dd",
             "\1\u00de",
             "\1\u00df",
-            "\1\u00e0",
-            "\1\u00e1\17\uffff\1\u00e2",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\u00e1",
+            "\1\u00e2",
             "\1\u00e3",
             "\1\u00e4",
             "\1\u00e5",
             "\1\u00e6",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u00e7",
             "\1\u00e8",
             "\1\u00e9",
             "\1\u00ea",
             "\1\u00eb",
+            "",
+            "",
+            "",
             "\1\u00ec",
-            "\1\u00ed",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u00ee",
+            "",
             "\1\u00ef",
             "",
+            "",
             "\1\u00f0",
             "\1\u00f1",
-            "\1\u00f2",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u00f3",
             "\1\u00f4",
-            "",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u00f5",
             "\1\u00f6",
-            "",
             "\1\u00f7",
-            "",
-            "",
             "\1\u00f8",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u00f9",
             "\1\u00fa",
             "\1\u00fb",
             "\1\u00fc",
             "\1\u00fd",
             "\1\u00fe",
-            "\1\u00ff",
-            "\1\u0100",
-            "\1\u0101",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\u0100\1\u0101",
             "\1\u0102",
+            "",
             "\1\u0103",
             "\1\u0104",
             "\1\u0105",
             "\1\u0106",
-            "",
             "\1\u0107",
             "\1\u0108",
             "\1\u0109",
             "\1\u010a",
-            "\1\u010b",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u010c",
             "\1\u010d",
             "\1\u010e",
             "\1\u010f",
-            "\1\u0110",
-            "\1\u0111",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0112",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0113",
             "\1\u0114",
             "\1\u0115",
             "\1\u0116",
-            "\1\u0117",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0118",
-            "\1\u0119",
-            "\1\u011a",
+            "\1\u0119\16\uffff\1\u011a",
             "\1\u011b",
+            "",
             "\1\u011c",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\u011e",
             "\1\u011f",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0120",
             "\1\u0121",
-            "\1\u0122\16\uffff\1\u0123",
-            "",
+            "\1\u0122",
+            "\1\u0123",
             "\1\u0124",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u0126",
+            "\1\u0125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0127",
+            "",
             "\1\u0128",
             "\1\u0129",
             "\1\u012a",
             "\1\u012b",
             "\1\u012c",
             "\1\u012d",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u012e",
             "\1\u012f",
             "\1\u0130",
-            "\1\u0131",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0132",
+            "",
             "\1\u0133",
             "\1\u0134",
             "\1\u0135",
-            "\1\u0136",
-            "\1\u0137",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0138",
             "\1\u0139",
             "\1\u013a",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u013c",
+            "\1\u013b",
             "",
+            "\1\u013c",
             "\1\u013d",
             "\1\u013e",
-            "\1\u013f",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u0141",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0142",
             "\1\u0143",
             "\1\u0144",
-            "\1\u0145",
-            "",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
-            "\1\u0147",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\u0146",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0148",
-            "\1\u0149",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\u014a",
+            "\1\u014b",
             "\1\u014c",
             "\1\u014d",
             "\1\u014e",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0150",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0151",
             "\1\u0152",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0154",
             "\1\u0155",
             "\1\u0156",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "",
+            "\1\u0157",
+            "\1\u0158",
             "\1\u0159",
             "\1\u015a",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u015c",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u015d",
-            "\1\u015e",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "",
+            "\1\u015e",
+            "\1\u015f",
             "\1\u0160",
+            "",
             "\1\u0161",
+            "",
             "\1\u0162",
             "",
             "\1\u0163",
             "\1\u0164",
-            "\1\u0165",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0166",
-            "\1\u0167",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0168",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u016a",
             "",
-            "",
             "\1\u016b",
             "\1\u016c",
-            "\1\u016d",
-            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u016e",
-            "",
-            "\1\u016f",
-            "",
-            "\1\u0170",
-            "\1\u0171",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
             "",
+            "\1\u0172",
             "\1\u0173",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0175",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0176",
             "\1\u0177",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
-            "\1\u0178",
-            "\1\u0179",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "",
             "\1\u017b",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u017f",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "\1\u017d",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
             "",
-            "\1\u0180",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0181",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "\1\u0183",
             "\1\u0184",
-            "\1\u0185",
-            "\1\u0186",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
-            "\1\u0189",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u018b",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
-            "\1\u018d",
             "",
             "",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u0190",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
-            "\1\u0191",
-            "\1\u0192",
-            "\1\u0193",
-            "\1\u0194",
-            "",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "",
-            "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u0199",
-            "\1\u019a",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u019c",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
             "",
             "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
-            "\1\u019e",
+            "\1\u0188",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "",
-            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "",
+            "\1\u018a",
+            "",
+            "\1\123\13\uffff\12\123\7\uffff\32\123\4\uffff\1\123\1\uffff\32\123",
             ""
     };
 
@@ -4308,7 +4241,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | 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;
@@ -4354,67 +4287,63 @@
 
                         else if ( (LA21_0=='f') ) {s = 18;}
 
-                        else if ( (LA21_0=='I') ) {s = 19;}
+                        else if ( (LA21_0=='p') ) {s = 19;}
 
-                        else if ( (LA21_0=='E') ) {s = 20;}
+                        else if ( (LA21_0=='m') ) {s = 20;}
 
-                        else if ( (LA21_0=='p') ) {s = 21;}
+                        else if ( (LA21_0=='t') ) {s = 21;}
 
-                        else if ( (LA21_0=='m') ) {s = 22;}
+                        else if ( (LA21_0=='w') ) {s = 22;}
 
-                        else if ( (LA21_0=='t') ) {s = 23;}
+                        else if ( (LA21_0=='{') ) {s = 23;}
 
-                        else if ( (LA21_0=='w') ) {s = 24;}
+                        else if ( (LA21_0=='}') ) {s = 24;}
 
-                        else if ( (LA21_0=='{') ) {s = 25;}
+                        else if ( (LA21_0=='c') ) {s = 25;}
 
-                        else if ( (LA21_0=='}') ) {s = 26;}
+                        else if ( (LA21_0=='h') ) {s = 26;}
 
                         else if ( (LA21_0=='d') ) {s = 27;}
 
-                        else if ( (LA21_0=='h') ) {s = 28;}
+                        else if ( (LA21_0==':') ) {s = 28;}
 
-                        else if ( (LA21_0=='c') ) {s = 29;}
+                        else if ( (LA21_0=='a') ) {s = 29;}
 
-                        else if ( (LA21_0==':') ) {s = 30;}
+                        else if ( (LA21_0==';') ) {s = 30;}
 
-                        else if ( (LA21_0=='a') ) {s = 31;}
+                        else if ( (LA21_0=='@') ) {s = 31;}
 
-                        else if ( (LA21_0==';') ) {s = 32;}
+                        else if ( (LA21_0=='(') ) {s = 32;}
 
-                        else if ( (LA21_0=='@') ) {s = 33;}
+                        else if ( (LA21_0==')') ) {s = 33;}
 
-                        else if ( (LA21_0=='(') ) {s = 34;}
+                        else if ( (LA21_0==',') ) {s = 34;}
 
-                        else if ( (LA21_0==')') ) {s = 35;}
+                        else if ( (LA21_0==']') ) {s = 35;}
 
-                        else if ( (LA21_0==',') ) {s = 36;}
+                        else if ( (LA21_0=='#') ) {s = 36;}
 
-                        else if ( (LA21_0==']') ) {s = 37;}
+                        else if ( (LA21_0=='[') ) {s = 37;}
 
-                        else if ( (LA21_0=='#') ) {s = 38;}
+                        else if ( (LA21_0=='n') ) {s = 38;}
 
-                        else if ( (LA21_0=='[') ) {s = 39;}
+                        else if ( (LA21_0=='r') ) {s = 39;}
 
-                        else if ( (LA21_0=='n') ) {s = 40;}
+                        else if ( (LA21_0=='0') ) {s = 40;}
 
-                        else if ( (LA21_0=='r') ) {s = 41;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 41;}
 
-                        else if ( (LA21_0=='0') ) {s = 42;}
+                        else if ( (LA21_0=='^') ) {s = 42;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 43;}
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 43;}
 
-                        else if ( (LA21_0=='^') ) {s = 44;}
+                        else if ( (LA21_0=='\"') ) {s = 44;}
 
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='D')||(LA21_0>='F' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 45;}
+                        else if ( (LA21_0=='\'') ) {s = 45;}
 
-                        else if ( (LA21_0=='\"') ) {s = 46;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 46;}
 
-                        else if ( (LA21_0=='\'') ) {s = 47;}
-
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 48;}
-
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 49;}
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 47;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java
index f15fe03..0a40aa5 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java
@@ -40,7 +40,7 @@
 @SuppressWarnings("all")
 public class InternalSignalDSLParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'Import'", "'Export'", "'sequential'", "'parallel'", "'sunday'", "'monday'", "'tuesday'", "'wednesday'", "'thursday'", "'friday'", "'saturday'", "'package'", "'{'", "'}'", "'watcher'", "'directory'", "'handler'", "'forFileMask'", "'scheduleFor'", "'cron'", "'hourlyAt'", "'dailyAt'", "':'", "'weeklyOn'", "'at'", "'monthlyOn'", "'fileName'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'export'", "'sequential'", "'parallel'", "'sunday'", "'monday'", "'tuesday'", "'wednesday'", "'thursday'", "'friday'", "'saturday'", "'package'", "'{'", "'}'", "'watcher'", "'filemask'", "'from'", "'filename'", "'scheduler'", "'cron'", "'hourlyat'", "'dailyat'", "':'", "'weeklyon'", "'at'", "'monthlyon'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'applyon'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
     };
     public static final int RULE_HEX=5;
     public static final int T__50=50;
@@ -136,7 +136,6 @@
     public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
-    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
@@ -189,11 +188,11 @@
 
 
     // $ANTLR start "entryRuleSignalModel"
-    // InternalSignalDSL.g:67:1: entryRuleSignalModel : ruleSignalModel EOF ;
+    // InternalSignalDSL.g:69:1: entryRuleSignalModel : ruleSignalModel EOF ;
     public final void entryRuleSignalModel() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:68:1: ( ruleSignalModel EOF )
-            // InternalSignalDSL.g:69:1: ruleSignalModel EOF
+            // InternalSignalDSL.g:70:1: ( ruleSignalModel EOF )
+            // InternalSignalDSL.g:71:1: ruleSignalModel EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelRule()); 
@@ -223,23 +222,23 @@
 
 
     // $ANTLR start "ruleSignalModel"
-    // InternalSignalDSL.g:76:1: ruleSignalModel : ( ( rule__SignalModel__Group__0 ) ) ;
+    // InternalSignalDSL.g:78:1: ruleSignalModel : ( ( rule__SignalModel__Group__0 ) ) ;
     public final void ruleSignalModel() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:80:2: ( ( ( rule__SignalModel__Group__0 ) ) )
-            // InternalSignalDSL.g:81:2: ( ( rule__SignalModel__Group__0 ) )
+            // InternalSignalDSL.g:82:2: ( ( ( rule__SignalModel__Group__0 ) ) )
+            // InternalSignalDSL.g:83:2: ( ( rule__SignalModel__Group__0 ) )
             {
-            // InternalSignalDSL.g:81:2: ( ( rule__SignalModel__Group__0 ) )
-            // InternalSignalDSL.g:82:3: ( rule__SignalModel__Group__0 )
+            // InternalSignalDSL.g:83:2: ( ( rule__SignalModel__Group__0 ) )
+            // InternalSignalDSL.g:84:3: ( rule__SignalModel__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:83:3: ( rule__SignalModel__Group__0 )
-            // InternalSignalDSL.g:83:4: rule__SignalModel__Group__0
+            // InternalSignalDSL.g:85:3: ( rule__SignalModel__Group__0 )
+            // InternalSignalDSL.g:85:4: rule__SignalModel__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SignalModel__Group__0();
@@ -274,11 +273,11 @@
 
 
     // $ANTLR start "entryRuleSignalPackage"
-    // InternalSignalDSL.g:92:1: entryRuleSignalPackage : ruleSignalPackage EOF ;
+    // InternalSignalDSL.g:94:1: entryRuleSignalPackage : ruleSignalPackage EOF ;
     public final void entryRuleSignalPackage() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:93:1: ( ruleSignalPackage EOF )
-            // InternalSignalDSL.g:94:1: ruleSignalPackage EOF
+            // InternalSignalDSL.g:95:1: ( ruleSignalPackage EOF )
+            // InternalSignalDSL.g:96:1: ruleSignalPackage EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageRule()); 
@@ -308,23 +307,23 @@
 
 
     // $ANTLR start "ruleSignalPackage"
-    // InternalSignalDSL.g:101:1: ruleSignalPackage : ( ( rule__SignalPackage__Group__0 ) ) ;
+    // InternalSignalDSL.g:103:1: ruleSignalPackage : ( ( rule__SignalPackage__Group__0 ) ) ;
     public final void ruleSignalPackage() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:105:2: ( ( ( rule__SignalPackage__Group__0 ) ) )
-            // InternalSignalDSL.g:106:2: ( ( rule__SignalPackage__Group__0 ) )
+            // InternalSignalDSL.g:107:2: ( ( ( rule__SignalPackage__Group__0 ) ) )
+            // InternalSignalDSL.g:108:2: ( ( rule__SignalPackage__Group__0 ) )
             {
-            // InternalSignalDSL.g:106:2: ( ( rule__SignalPackage__Group__0 ) )
-            // InternalSignalDSL.g:107:3: ( rule__SignalPackage__Group__0 )
+            // InternalSignalDSL.g:108:2: ( ( rule__SignalPackage__Group__0 ) )
+            // InternalSignalDSL.g:109:3: ( rule__SignalPackage__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:108:3: ( rule__SignalPackage__Group__0 )
-            // InternalSignalDSL.g:108:4: rule__SignalPackage__Group__0
+            // InternalSignalDSL.g:110:3: ( rule__SignalPackage__Group__0 )
+            // InternalSignalDSL.g:110:4: rule__SignalPackage__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SignalPackage__Group__0();
@@ -358,12 +357,97 @@
     // $ANTLR end "ruleSignalPackage"
 
 
+    // $ANTLR start "entryRuleSignalDefinition"
+    // InternalSignalDSL.g:119:1: entryRuleSignalDefinition : ruleSignalDefinition EOF ;
+    public final void entryRuleSignalDefinition() throws RecognitionException {
+        try {
+            // InternalSignalDSL.g:120:1: ( ruleSignalDefinition EOF )
+            // InternalSignalDSL.g:121:1: ruleSignalDefinition EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalDefinitionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleSignalDefinition();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalDefinitionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSignalDefinition"
+
+
+    // $ANTLR start "ruleSignalDefinition"
+    // InternalSignalDSL.g:128:1: ruleSignalDefinition : ( ( rule__SignalDefinition__Alternatives ) ) ;
+    public final void ruleSignalDefinition() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:132:2: ( ( ( rule__SignalDefinition__Alternatives ) ) )
+            // InternalSignalDSL.g:133:2: ( ( rule__SignalDefinition__Alternatives ) )
+            {
+            // InternalSignalDSL.g:133:2: ( ( rule__SignalDefinition__Alternatives ) )
+            // InternalSignalDSL.g:134:3: ( rule__SignalDefinition__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalDefinitionAccess().getAlternatives()); 
+            }
+            // InternalSignalDSL.g:135:3: ( rule__SignalDefinition__Alternatives )
+            // InternalSignalDSL.g:135:4: rule__SignalDefinition__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalDefinition__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalDefinitionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSignalDefinition"
+
+
     // $ANTLR start "entryRuleSignalWatcher"
-    // InternalSignalDSL.g:117:1: entryRuleSignalWatcher : ruleSignalWatcher EOF ;
+    // InternalSignalDSL.g:144:1: entryRuleSignalWatcher : ruleSignalWatcher EOF ;
     public final void entryRuleSignalWatcher() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:118:1: ( ruleSignalWatcher EOF )
-            // InternalSignalDSL.g:119:1: ruleSignalWatcher EOF
+            // InternalSignalDSL.g:145:1: ( ruleSignalWatcher EOF )
+            // InternalSignalDSL.g:146:1: ruleSignalWatcher EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherRule()); 
@@ -393,23 +477,23 @@
 
 
     // $ANTLR start "ruleSignalWatcher"
-    // InternalSignalDSL.g:126:1: ruleSignalWatcher : ( ( rule__SignalWatcher__Group__0 ) ) ;
+    // InternalSignalDSL.g:153:1: ruleSignalWatcher : ( ( rule__SignalWatcher__Group__0 ) ) ;
     public final void ruleSignalWatcher() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:130:2: ( ( ( rule__SignalWatcher__Group__0 ) ) )
-            // InternalSignalDSL.g:131:2: ( ( rule__SignalWatcher__Group__0 ) )
+            // InternalSignalDSL.g:157:2: ( ( ( rule__SignalWatcher__Group__0 ) ) )
+            // InternalSignalDSL.g:158:2: ( ( rule__SignalWatcher__Group__0 ) )
             {
-            // InternalSignalDSL.g:131:2: ( ( rule__SignalWatcher__Group__0 ) )
-            // InternalSignalDSL.g:132:3: ( rule__SignalWatcher__Group__0 )
+            // InternalSignalDSL.g:158:2: ( ( rule__SignalWatcher__Group__0 ) )
+            // InternalSignalDSL.g:159:3: ( rule__SignalWatcher__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:133:3: ( rule__SignalWatcher__Group__0 )
-            // InternalSignalDSL.g:133:4: rule__SignalWatcher__Group__0
+            // InternalSignalDSL.g:160:3: ( rule__SignalWatcher__Group__0 )
+            // InternalSignalDSL.g:160:4: rule__SignalWatcher__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SignalWatcher__Group__0();
@@ -443,23 +527,23 @@
     // $ANTLR end "ruleSignalWatcher"
 
 
-    // $ANTLR start "entryRuleSignalHandler"
-    // InternalSignalDSL.g:142:1: entryRuleSignalHandler : ruleSignalHandler EOF ;
-    public final void entryRuleSignalHandler() throws RecognitionException {
+    // $ANTLR start "entryRuleWatcherDefinition"
+    // InternalSignalDSL.g:169:1: entryRuleWatcherDefinition : ruleWatcherDefinition EOF ;
+    public final void entryRuleWatcherDefinition() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:143:1: ( ruleSignalHandler EOF )
-            // InternalSignalDSL.g:144:1: ruleSignalHandler EOF
+            // InternalSignalDSL.g:170:1: ( ruleWatcherDefinition EOF )
+            // InternalSignalDSL.g:171:1: ruleWatcherDefinition EOF
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerRule()); 
+               before(grammarAccess.getWatcherDefinitionRule()); 
             }
             pushFollow(FOLLOW_1);
-            ruleSignalHandler();
+            ruleWatcherDefinition();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerRule()); 
+               after(grammarAccess.getWatcherDefinitionRule()); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return ;
 
@@ -474,30 +558,30 @@
         }
         return ;
     }
-    // $ANTLR end "entryRuleSignalHandler"
+    // $ANTLR end "entryRuleWatcherDefinition"
 
 
-    // $ANTLR start "ruleSignalHandler"
-    // InternalSignalDSL.g:151:1: ruleSignalHandler : ( ( rule__SignalHandler__Group__0 ) ) ;
-    public final void ruleSignalHandler() throws RecognitionException {
+    // $ANTLR start "ruleWatcherDefinition"
+    // InternalSignalDSL.g:178:1: ruleWatcherDefinition : ( ( rule__WatcherDefinition__Alternatives ) ) ;
+    public final void ruleWatcherDefinition() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:155:2: ( ( ( rule__SignalHandler__Group__0 ) ) )
-            // InternalSignalDSL.g:156:2: ( ( rule__SignalHandler__Group__0 ) )
+            // InternalSignalDSL.g:182:2: ( ( ( rule__WatcherDefinition__Alternatives ) ) )
+            // InternalSignalDSL.g:183:2: ( ( rule__WatcherDefinition__Alternatives ) )
             {
-            // InternalSignalDSL.g:156:2: ( ( rule__SignalHandler__Group__0 ) )
-            // InternalSignalDSL.g:157:3: ( rule__SignalHandler__Group__0 )
+            // InternalSignalDSL.g:183:2: ( ( rule__WatcherDefinition__Alternatives ) )
+            // InternalSignalDSL.g:184:3: ( rule__WatcherDefinition__Alternatives )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getGroup()); 
+               before(grammarAccess.getWatcherDefinitionAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:158:3: ( rule__SignalHandler__Group__0 )
-            // InternalSignalDSL.g:158:4: rule__SignalHandler__Group__0
+            // InternalSignalDSL.g:185:3: ( rule__WatcherDefinition__Alternatives )
+            // InternalSignalDSL.g:185:4: rule__WatcherDefinition__Alternatives
             {
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__0();
+            rule__WatcherDefinition__Alternatives();
 
             state._fsp--;
             if (state.failed) return ;
@@ -505,7 +589,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getGroup()); 
+               after(grammarAccess.getWatcherDefinitionAccess().getAlternatives()); 
             }
 
             }
@@ -525,26 +609,26 @@
         }
         return ;
     }
-    // $ANTLR end "ruleSignalHandler"
+    // $ANTLR end "ruleWatcherDefinition"
 
 
-    // $ANTLR start "entryRuleTriggerPolicy"
-    // InternalSignalDSL.g:167:1: entryRuleTriggerPolicy : ruleTriggerPolicy EOF ;
-    public final void entryRuleTriggerPolicy() throws RecognitionException {
+    // $ANTLR start "entryRuleWatcherWithFileMask"
+    // InternalSignalDSL.g:194:1: entryRuleWatcherWithFileMask : ruleWatcherWithFileMask EOF ;
+    public final void entryRuleWatcherWithFileMask() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:168:1: ( ruleTriggerPolicy EOF )
-            // InternalSignalDSL.g:169:1: ruleTriggerPolicy EOF
+            // InternalSignalDSL.g:195:1: ( ruleWatcherWithFileMask EOF )
+            // InternalSignalDSL.g:196:1: ruleWatcherWithFileMask EOF
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getTriggerPolicyRule()); 
+               before(grammarAccess.getWatcherWithFileMaskRule()); 
             }
             pushFollow(FOLLOW_1);
-            ruleTriggerPolicy();
+            ruleWatcherWithFileMask();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getTriggerPolicyRule()); 
+               after(grammarAccess.getWatcherWithFileMaskRule()); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return ;
 
@@ -559,30 +643,30 @@
         }
         return ;
     }
-    // $ANTLR end "entryRuleTriggerPolicy"
+    // $ANTLR end "entryRuleWatcherWithFileMask"
 
 
-    // $ANTLR start "ruleTriggerPolicy"
-    // InternalSignalDSL.g:176:1: ruleTriggerPolicy : ( ( rule__TriggerPolicy__Alternatives ) ) ;
-    public final void ruleTriggerPolicy() throws RecognitionException {
+    // $ANTLR start "ruleWatcherWithFileMask"
+    // InternalSignalDSL.g:203:1: ruleWatcherWithFileMask : ( ( rule__WatcherWithFileMask__Group__0 ) ) ;
+    public final void ruleWatcherWithFileMask() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:180:2: ( ( ( rule__TriggerPolicy__Alternatives ) ) )
-            // InternalSignalDSL.g:181:2: ( ( rule__TriggerPolicy__Alternatives ) )
+            // InternalSignalDSL.g:207:2: ( ( ( rule__WatcherWithFileMask__Group__0 ) ) )
+            // InternalSignalDSL.g:208:2: ( ( rule__WatcherWithFileMask__Group__0 ) )
             {
-            // InternalSignalDSL.g:181:2: ( ( rule__TriggerPolicy__Alternatives ) )
-            // InternalSignalDSL.g:182:3: ( rule__TriggerPolicy__Alternatives )
+            // InternalSignalDSL.g:208:2: ( ( rule__WatcherWithFileMask__Group__0 ) )
+            // InternalSignalDSL.g:209:3: ( rule__WatcherWithFileMask__Group__0 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getTriggerPolicyAccess().getAlternatives()); 
+               before(grammarAccess.getWatcherWithFileMaskAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:183:3: ( rule__TriggerPolicy__Alternatives )
-            // InternalSignalDSL.g:183:4: rule__TriggerPolicy__Alternatives
+            // InternalSignalDSL.g:210:3: ( rule__WatcherWithFileMask__Group__0 )
+            // InternalSignalDSL.g:210:4: rule__WatcherWithFileMask__Group__0
             {
             pushFollow(FOLLOW_2);
-            rule__TriggerPolicy__Alternatives();
+            rule__WatcherWithFileMask__Group__0();
 
             state._fsp--;
             if (state.failed) return ;
@@ -590,7 +674,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getTriggerPolicyAccess().getAlternatives()); 
+               after(grammarAccess.getWatcherWithFileMaskAccess().getGroup()); 
             }
 
             }
@@ -610,26 +694,26 @@
         }
         return ;
     }
-    // $ANTLR end "ruleTriggerPolicy"
+    // $ANTLR end "ruleWatcherWithFileMask"
 
 
-    // $ANTLR start "entryRuleTriggerFile"
-    // InternalSignalDSL.g:192:1: entryRuleTriggerFile : ruleTriggerFile EOF ;
-    public final void entryRuleTriggerFile() throws RecognitionException {
+    // $ANTLR start "entryRuleWatcherWithFileName"
+    // InternalSignalDSL.g:219:1: entryRuleWatcherWithFileName : ruleWatcherWithFileName EOF ;
+    public final void entryRuleWatcherWithFileName() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:193:1: ( ruleTriggerFile EOF )
-            // InternalSignalDSL.g:194:1: ruleTriggerFile EOF
+            // InternalSignalDSL.g:220:1: ( ruleWatcherWithFileName EOF )
+            // InternalSignalDSL.g:221:1: ruleWatcherWithFileName EOF
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getTriggerFileRule()); 
+               before(grammarAccess.getWatcherWithFileNameRule()); 
             }
             pushFollow(FOLLOW_1);
-            ruleTriggerFile();
+            ruleWatcherWithFileName();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getTriggerFileRule()); 
+               after(grammarAccess.getWatcherWithFileNameRule()); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return ;
 
@@ -644,30 +728,30 @@
         }
         return ;
     }
-    // $ANTLR end "entryRuleTriggerFile"
+    // $ANTLR end "entryRuleWatcherWithFileName"
 
 
-    // $ANTLR start "ruleTriggerFile"
-    // InternalSignalDSL.g:201:1: ruleTriggerFile : ( ( rule__TriggerFile__Group__0 ) ) ;
-    public final void ruleTriggerFile() throws RecognitionException {
+    // $ANTLR start "ruleWatcherWithFileName"
+    // InternalSignalDSL.g:228:1: ruleWatcherWithFileName : ( ( rule__WatcherWithFileName__Group__0 ) ) ;
+    public final void ruleWatcherWithFileName() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:205:2: ( ( ( rule__TriggerFile__Group__0 ) ) )
-            // InternalSignalDSL.g:206:2: ( ( rule__TriggerFile__Group__0 ) )
+            // InternalSignalDSL.g:232:2: ( ( ( rule__WatcherWithFileName__Group__0 ) ) )
+            // InternalSignalDSL.g:233:2: ( ( rule__WatcherWithFileName__Group__0 ) )
             {
-            // InternalSignalDSL.g:206:2: ( ( rule__TriggerFile__Group__0 ) )
-            // InternalSignalDSL.g:207:3: ( rule__TriggerFile__Group__0 )
+            // InternalSignalDSL.g:233:2: ( ( rule__WatcherWithFileName__Group__0 ) )
+            // InternalSignalDSL.g:234:3: ( rule__WatcherWithFileName__Group__0 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getTriggerFileAccess().getGroup()); 
+               before(grammarAccess.getWatcherWithFileNameAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:208:3: ( rule__TriggerFile__Group__0 )
-            // InternalSignalDSL.g:208:4: rule__TriggerFile__Group__0
+            // InternalSignalDSL.g:235:3: ( rule__WatcherWithFileName__Group__0 )
+            // InternalSignalDSL.g:235:4: rule__WatcherWithFileName__Group__0
             {
             pushFollow(FOLLOW_2);
-            rule__TriggerFile__Group__0();
+            rule__WatcherWithFileName__Group__0();
 
             state._fsp--;
             if (state.failed) return ;
@@ -675,7 +759,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getTriggerFileAccess().getGroup()); 
+               after(grammarAccess.getWatcherWithFileNameAccess().getGroup()); 
             }
 
             }
@@ -695,15 +779,15 @@
         }
         return ;
     }
-    // $ANTLR end "ruleTriggerFile"
+    // $ANTLR end "ruleWatcherWithFileName"
 
 
     // $ANTLR start "entryRuleSignalScheduler"
-    // InternalSignalDSL.g:217:1: entryRuleSignalScheduler : ruleSignalScheduler EOF ;
+    // InternalSignalDSL.g:244:1: entryRuleSignalScheduler : ruleSignalScheduler EOF ;
     public final void entryRuleSignalScheduler() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:218:1: ( ruleSignalScheduler EOF )
-            // InternalSignalDSL.g:219:1: ruleSignalScheduler EOF
+            // InternalSignalDSL.g:245:1: ( ruleSignalScheduler EOF )
+            // InternalSignalDSL.g:246:1: ruleSignalScheduler EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalSchedulerRule()); 
@@ -733,23 +817,23 @@
 
 
     // $ANTLR start "ruleSignalScheduler"
-    // InternalSignalDSL.g:226:1: ruleSignalScheduler : ( ( rule__SignalScheduler__Group__0 ) ) ;
+    // InternalSignalDSL.g:253:1: ruleSignalScheduler : ( ( rule__SignalScheduler__Group__0 ) ) ;
     public final void ruleSignalScheduler() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:230:2: ( ( ( rule__SignalScheduler__Group__0 ) ) )
-            // InternalSignalDSL.g:231:2: ( ( rule__SignalScheduler__Group__0 ) )
+            // InternalSignalDSL.g:257:2: ( ( ( rule__SignalScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:258:2: ( ( rule__SignalScheduler__Group__0 ) )
             {
-            // InternalSignalDSL.g:231:2: ( ( rule__SignalScheduler__Group__0 ) )
-            // InternalSignalDSL.g:232:3: ( rule__SignalScheduler__Group__0 )
+            // InternalSignalDSL.g:258:2: ( ( rule__SignalScheduler__Group__0 ) )
+            // InternalSignalDSL.g:259:3: ( rule__SignalScheduler__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalSchedulerAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:233:3: ( rule__SignalScheduler__Group__0 )
-            // InternalSignalDSL.g:233:4: rule__SignalScheduler__Group__0
+            // InternalSignalDSL.g:260:3: ( rule__SignalScheduler__Group__0 )
+            // InternalSignalDSL.g:260:4: rule__SignalScheduler__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SignalScheduler__Group__0();
@@ -783,23 +867,23 @@
     // $ANTLR end "ruleSignalScheduler"
 
 
-    // $ANTLR start "entryRuleScheduler"
-    // InternalSignalDSL.g:242:1: entryRuleScheduler : ruleScheduler EOF ;
-    public final void entryRuleScheduler() throws RecognitionException {
+    // $ANTLR start "entryRuleSchedulerType"
+    // InternalSignalDSL.g:269:1: entryRuleSchedulerType : ruleSchedulerType EOF ;
+    public final void entryRuleSchedulerType() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:243:1: ( ruleScheduler EOF )
-            // InternalSignalDSL.g:244:1: ruleScheduler EOF
+            // InternalSignalDSL.g:270:1: ( ruleSchedulerType EOF )
+            // InternalSignalDSL.g:271:1: ruleSchedulerType EOF
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSchedulerRule()); 
+               before(grammarAccess.getSchedulerTypeRule()); 
             }
             pushFollow(FOLLOW_1);
-            ruleScheduler();
+            ruleSchedulerType();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSchedulerRule()); 
+               after(grammarAccess.getSchedulerTypeRule()); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return ;
 
@@ -814,30 +898,30 @@
         }
         return ;
     }
-    // $ANTLR end "entryRuleScheduler"
+    // $ANTLR end "entryRuleSchedulerType"
 
 
-    // $ANTLR start "ruleScheduler"
-    // InternalSignalDSL.g:251:1: ruleScheduler : ( ( rule__Scheduler__Alternatives ) ) ;
-    public final void ruleScheduler() throws RecognitionException {
+    // $ANTLR start "ruleSchedulerType"
+    // InternalSignalDSL.g:278:1: ruleSchedulerType : ( ( rule__SchedulerType__Alternatives ) ) ;
+    public final void ruleSchedulerType() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:255:2: ( ( ( rule__Scheduler__Alternatives ) ) )
-            // InternalSignalDSL.g:256:2: ( ( rule__Scheduler__Alternatives ) )
+            // InternalSignalDSL.g:282:2: ( ( ( rule__SchedulerType__Alternatives ) ) )
+            // InternalSignalDSL.g:283:2: ( ( rule__SchedulerType__Alternatives ) )
             {
-            // InternalSignalDSL.g:256:2: ( ( rule__Scheduler__Alternatives ) )
-            // InternalSignalDSL.g:257:3: ( rule__Scheduler__Alternatives )
+            // InternalSignalDSL.g:283:2: ( ( rule__SchedulerType__Alternatives ) )
+            // InternalSignalDSL.g:284:3: ( rule__SchedulerType__Alternatives )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSchedulerAccess().getAlternatives()); 
+               before(grammarAccess.getSchedulerTypeAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:258:3: ( rule__Scheduler__Alternatives )
-            // InternalSignalDSL.g:258:4: rule__Scheduler__Alternatives
+            // InternalSignalDSL.g:285:3: ( rule__SchedulerType__Alternatives )
+            // InternalSignalDSL.g:285:4: rule__SchedulerType__Alternatives
             {
             pushFollow(FOLLOW_2);
-            rule__Scheduler__Alternatives();
+            rule__SchedulerType__Alternatives();
 
             state._fsp--;
             if (state.failed) return ;
@@ -845,7 +929,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSchedulerAccess().getAlternatives()); 
+               after(grammarAccess.getSchedulerTypeAccess().getAlternatives()); 
             }
 
             }
@@ -865,15 +949,15 @@
         }
         return ;
     }
-    // $ANTLR end "ruleScheduler"
+    // $ANTLR end "ruleSchedulerType"
 
 
     // $ANTLR start "entryRuleCronScheduler"
-    // InternalSignalDSL.g:267:1: entryRuleCronScheduler : ruleCronScheduler EOF ;
+    // InternalSignalDSL.g:294:1: entryRuleCronScheduler : ruleCronScheduler EOF ;
     public final void entryRuleCronScheduler() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:268:1: ( ruleCronScheduler EOF )
-            // InternalSignalDSL.g:269:1: ruleCronScheduler EOF
+            // InternalSignalDSL.g:295:1: ( ruleCronScheduler EOF )
+            // InternalSignalDSL.g:296:1: ruleCronScheduler EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCronSchedulerRule()); 
@@ -903,23 +987,23 @@
 
 
     // $ANTLR start "ruleCronScheduler"
-    // InternalSignalDSL.g:276:1: ruleCronScheduler : ( ( rule__CronScheduler__Group__0 ) ) ;
+    // InternalSignalDSL.g:303:1: ruleCronScheduler : ( ( rule__CronScheduler__Group__0 ) ) ;
     public final void ruleCronScheduler() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:280:2: ( ( ( rule__CronScheduler__Group__0 ) ) )
-            // InternalSignalDSL.g:281:2: ( ( rule__CronScheduler__Group__0 ) )
+            // InternalSignalDSL.g:307:2: ( ( ( rule__CronScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:308:2: ( ( rule__CronScheduler__Group__0 ) )
             {
-            // InternalSignalDSL.g:281:2: ( ( rule__CronScheduler__Group__0 ) )
-            // InternalSignalDSL.g:282:3: ( rule__CronScheduler__Group__0 )
+            // InternalSignalDSL.g:308:2: ( ( rule__CronScheduler__Group__0 ) )
+            // InternalSignalDSL.g:309:3: ( rule__CronScheduler__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCronSchedulerAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:283:3: ( rule__CronScheduler__Group__0 )
-            // InternalSignalDSL.g:283:4: rule__CronScheduler__Group__0
+            // InternalSignalDSL.g:310:3: ( rule__CronScheduler__Group__0 )
+            // InternalSignalDSL.g:310:4: rule__CronScheduler__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__CronScheduler__Group__0();
@@ -954,11 +1038,11 @@
 
 
     // $ANTLR start "entryRuleHourlyScheduler"
-    // InternalSignalDSL.g:292:1: entryRuleHourlyScheduler : ruleHourlyScheduler EOF ;
+    // InternalSignalDSL.g:319:1: entryRuleHourlyScheduler : ruleHourlyScheduler EOF ;
     public final void entryRuleHourlyScheduler() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:293:1: ( ruleHourlyScheduler EOF )
-            // InternalSignalDSL.g:294:1: ruleHourlyScheduler EOF
+            // InternalSignalDSL.g:320:1: ( ruleHourlyScheduler EOF )
+            // InternalSignalDSL.g:321:1: ruleHourlyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getHourlySchedulerRule()); 
@@ -988,23 +1072,23 @@
 
 
     // $ANTLR start "ruleHourlyScheduler"
-    // InternalSignalDSL.g:301:1: ruleHourlyScheduler : ( ( rule__HourlyScheduler__Group__0 ) ) ;
+    // InternalSignalDSL.g:328:1: ruleHourlyScheduler : ( ( rule__HourlyScheduler__Group__0 ) ) ;
     public final void ruleHourlyScheduler() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:305:2: ( ( ( rule__HourlyScheduler__Group__0 ) ) )
-            // InternalSignalDSL.g:306:2: ( ( rule__HourlyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:332:2: ( ( ( rule__HourlyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:333:2: ( ( rule__HourlyScheduler__Group__0 ) )
             {
-            // InternalSignalDSL.g:306:2: ( ( rule__HourlyScheduler__Group__0 ) )
-            // InternalSignalDSL.g:307:3: ( rule__HourlyScheduler__Group__0 )
+            // InternalSignalDSL.g:333:2: ( ( rule__HourlyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:334:3: ( rule__HourlyScheduler__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getHourlySchedulerAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:308:3: ( rule__HourlyScheduler__Group__0 )
-            // InternalSignalDSL.g:308:4: rule__HourlyScheduler__Group__0
+            // InternalSignalDSL.g:335:3: ( rule__HourlyScheduler__Group__0 )
+            // InternalSignalDSL.g:335:4: rule__HourlyScheduler__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__HourlyScheduler__Group__0();
@@ -1039,11 +1123,11 @@
 
 
     // $ANTLR start "entryRuleDailyScheduler"
-    // InternalSignalDSL.g:317:1: entryRuleDailyScheduler : ruleDailyScheduler EOF ;
+    // InternalSignalDSL.g:344:1: entryRuleDailyScheduler : ruleDailyScheduler EOF ;
     public final void entryRuleDailyScheduler() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:318:1: ( ruleDailyScheduler EOF )
-            // InternalSignalDSL.g:319:1: ruleDailyScheduler EOF
+            // InternalSignalDSL.g:345:1: ( ruleDailyScheduler EOF )
+            // InternalSignalDSL.g:346:1: ruleDailyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDailySchedulerRule()); 
@@ -1073,23 +1157,23 @@
 
 
     // $ANTLR start "ruleDailyScheduler"
-    // InternalSignalDSL.g:326:1: ruleDailyScheduler : ( ( rule__DailyScheduler__Group__0 ) ) ;
+    // InternalSignalDSL.g:353:1: ruleDailyScheduler : ( ( rule__DailyScheduler__Group__0 ) ) ;
     public final void ruleDailyScheduler() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:330:2: ( ( ( rule__DailyScheduler__Group__0 ) ) )
-            // InternalSignalDSL.g:331:2: ( ( rule__DailyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:357:2: ( ( ( rule__DailyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:358:2: ( ( rule__DailyScheduler__Group__0 ) )
             {
-            // InternalSignalDSL.g:331:2: ( ( rule__DailyScheduler__Group__0 ) )
-            // InternalSignalDSL.g:332:3: ( rule__DailyScheduler__Group__0 )
+            // InternalSignalDSL.g:358:2: ( ( rule__DailyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:359:3: ( rule__DailyScheduler__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDailySchedulerAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:333:3: ( rule__DailyScheduler__Group__0 )
-            // InternalSignalDSL.g:333:4: rule__DailyScheduler__Group__0
+            // InternalSignalDSL.g:360:3: ( rule__DailyScheduler__Group__0 )
+            // InternalSignalDSL.g:360:4: rule__DailyScheduler__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__DailyScheduler__Group__0();
@@ -1124,11 +1208,11 @@
 
 
     // $ANTLR start "entryRuleWeeklyScheduler"
-    // InternalSignalDSL.g:342:1: entryRuleWeeklyScheduler : ruleWeeklyScheduler EOF ;
+    // InternalSignalDSL.g:369:1: entryRuleWeeklyScheduler : ruleWeeklyScheduler EOF ;
     public final void entryRuleWeeklyScheduler() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:343:1: ( ruleWeeklyScheduler EOF )
-            // InternalSignalDSL.g:344:1: ruleWeeklyScheduler EOF
+            // InternalSignalDSL.g:370:1: ( ruleWeeklyScheduler EOF )
+            // InternalSignalDSL.g:371:1: ruleWeeklyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerRule()); 
@@ -1158,23 +1242,23 @@
 
 
     // $ANTLR start "ruleWeeklyScheduler"
-    // InternalSignalDSL.g:351:1: ruleWeeklyScheduler : ( ( rule__WeeklyScheduler__Group__0 ) ) ;
+    // InternalSignalDSL.g:378:1: ruleWeeklyScheduler : ( ( rule__WeeklyScheduler__Group__0 ) ) ;
     public final void ruleWeeklyScheduler() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:355:2: ( ( ( rule__WeeklyScheduler__Group__0 ) ) )
-            // InternalSignalDSL.g:356:2: ( ( rule__WeeklyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:382:2: ( ( ( rule__WeeklyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:383:2: ( ( rule__WeeklyScheduler__Group__0 ) )
             {
-            // InternalSignalDSL.g:356:2: ( ( rule__WeeklyScheduler__Group__0 ) )
-            // InternalSignalDSL.g:357:3: ( rule__WeeklyScheduler__Group__0 )
+            // InternalSignalDSL.g:383:2: ( ( rule__WeeklyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:384:3: ( rule__WeeklyScheduler__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:358:3: ( rule__WeeklyScheduler__Group__0 )
-            // InternalSignalDSL.g:358:4: rule__WeeklyScheduler__Group__0
+            // InternalSignalDSL.g:385:3: ( rule__WeeklyScheduler__Group__0 )
+            // InternalSignalDSL.g:385:4: rule__WeeklyScheduler__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__WeeklyScheduler__Group__0();
@@ -1209,11 +1293,11 @@
 
 
     // $ANTLR start "entryRuleMonthlyScheduler"
-    // InternalSignalDSL.g:367:1: entryRuleMonthlyScheduler : ruleMonthlyScheduler EOF ;
+    // InternalSignalDSL.g:394:1: entryRuleMonthlyScheduler : ruleMonthlyScheduler EOF ;
     public final void entryRuleMonthlyScheduler() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:368:1: ( ruleMonthlyScheduler EOF )
-            // InternalSignalDSL.g:369:1: ruleMonthlyScheduler EOF
+            // InternalSignalDSL.g:395:1: ( ruleMonthlyScheduler EOF )
+            // InternalSignalDSL.g:396:1: ruleMonthlyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerRule()); 
@@ -1243,23 +1327,23 @@
 
 
     // $ANTLR start "ruleMonthlyScheduler"
-    // InternalSignalDSL.g:376:1: ruleMonthlyScheduler : ( ( rule__MonthlyScheduler__Group__0 ) ) ;
+    // InternalSignalDSL.g:403:1: ruleMonthlyScheduler : ( ( rule__MonthlyScheduler__Group__0 ) ) ;
     public final void ruleMonthlyScheduler() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:380:2: ( ( ( rule__MonthlyScheduler__Group__0 ) ) )
-            // InternalSignalDSL.g:381:2: ( ( rule__MonthlyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:407:2: ( ( ( rule__MonthlyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:408:2: ( ( rule__MonthlyScheduler__Group__0 ) )
             {
-            // InternalSignalDSL.g:381:2: ( ( rule__MonthlyScheduler__Group__0 ) )
-            // InternalSignalDSL.g:382:3: ( rule__MonthlyScheduler__Group__0 )
+            // InternalSignalDSL.g:408:2: ( ( rule__MonthlyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:409:3: ( rule__MonthlyScheduler__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:383:3: ( rule__MonthlyScheduler__Group__0 )
-            // InternalSignalDSL.g:383:4: rule__MonthlyScheduler__Group__0
+            // InternalSignalDSL.g:410:3: ( rule__MonthlyScheduler__Group__0 )
+            // InternalSignalDSL.g:410:4: rule__MonthlyScheduler__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__MonthlyScheduler__Group__0();
@@ -1294,11 +1378,11 @@
 
 
     // $ANTLR start "entryRuleSignalDatainterchange"
-    // InternalSignalDSL.g:392:1: entryRuleSignalDatainterchange : ruleSignalDatainterchange EOF ;
+    // InternalSignalDSL.g:419:1: entryRuleSignalDatainterchange : ruleSignalDatainterchange EOF ;
     public final void entryRuleSignalDatainterchange() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:393:1: ( ruleSignalDatainterchange EOF )
-            // InternalSignalDSL.g:394:1: ruleSignalDatainterchange EOF
+            // InternalSignalDSL.g:420:1: ( ruleSignalDatainterchange EOF )
+            // InternalSignalDSL.g:421:1: ruleSignalDatainterchange EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeRule()); 
@@ -1328,23 +1412,23 @@
 
 
     // $ANTLR start "ruleSignalDatainterchange"
-    // InternalSignalDSL.g:401:1: ruleSignalDatainterchange : ( ( rule__SignalDatainterchange__Group__0 ) ) ;
+    // InternalSignalDSL.g:428:1: ruleSignalDatainterchange : ( ( rule__SignalDatainterchange__Group__0 ) ) ;
     public final void ruleSignalDatainterchange() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:405:2: ( ( ( rule__SignalDatainterchange__Group__0 ) ) )
-            // InternalSignalDSL.g:406:2: ( ( rule__SignalDatainterchange__Group__0 ) )
+            // InternalSignalDSL.g:432:2: ( ( ( rule__SignalDatainterchange__Group__0 ) ) )
+            // InternalSignalDSL.g:433:2: ( ( rule__SignalDatainterchange__Group__0 ) )
             {
-            // InternalSignalDSL.g:406:2: ( ( rule__SignalDatainterchange__Group__0 ) )
-            // InternalSignalDSL.g:407:3: ( rule__SignalDatainterchange__Group__0 )
+            // InternalSignalDSL.g:433:2: ( ( rule__SignalDatainterchange__Group__0 ) )
+            // InternalSignalDSL.g:434:3: ( rule__SignalDatainterchange__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:408:3: ( rule__SignalDatainterchange__Group__0 )
-            // InternalSignalDSL.g:408:4: rule__SignalDatainterchange__Group__0
+            // InternalSignalDSL.g:435:3: ( rule__SignalDatainterchange__Group__0 )
+            // InternalSignalDSL.g:435:4: rule__SignalDatainterchange__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__Group__0();
@@ -1379,11 +1463,11 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalSignalDSL.g:417:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    // InternalSignalDSL.g:444:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
     public final void entryRuleTRANSLATABLEID() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:418:1: ( ruleTRANSLATABLEID EOF )
-            // InternalSignalDSL.g:419:1: ruleTRANSLATABLEID EOF
+            // InternalSignalDSL.g:445:1: ( ruleTRANSLATABLEID EOF )
+            // InternalSignalDSL.g:446:1: ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -1413,17 +1497,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalSignalDSL.g:426:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    // InternalSignalDSL.g:453:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
     public final void ruleTRANSLATABLEID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:430:2: ( ( RULE_ID ) )
-            // InternalSignalDSL.g:431:2: ( RULE_ID )
+            // InternalSignalDSL.g:457:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:458:2: ( RULE_ID )
             {
-            // InternalSignalDSL.g:431:2: ( RULE_ID )
-            // InternalSignalDSL.g:432:3: RULE_ID
+            // InternalSignalDSL.g:458:2: ( RULE_ID )
+            // InternalSignalDSL.g:459:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
@@ -1454,11 +1538,11 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalSignalDSL.g:442:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    // InternalSignalDSL.g:469:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
     public final void entryRuleXImportDeclaration() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:443:1: ( ruleXImportDeclaration EOF )
-            // InternalSignalDSL.g:444:1: ruleXImportDeclaration EOF
+            // InternalSignalDSL.g:470:1: ( ruleXImportDeclaration EOF )
+            // InternalSignalDSL.g:471:1: ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationRule()); 
@@ -1488,23 +1572,23 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalSignalDSL.g:451:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    // InternalSignalDSL.g:478:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
     public final void ruleXImportDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:455:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
-            // InternalSignalDSL.g:456:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:482:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalSignalDSL.g:483:2: ( ( rule__XImportDeclaration__Group__0 ) )
             {
-            // InternalSignalDSL.g:456:2: ( ( rule__XImportDeclaration__Group__0 ) )
-            // InternalSignalDSL.g:457:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalSignalDSL.g:483:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:484:3: ( rule__XImportDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:458:3: ( rule__XImportDeclaration__Group__0 )
-            // InternalSignalDSL.g:458:4: rule__XImportDeclaration__Group__0
+            // InternalSignalDSL.g:485:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalSignalDSL.g:485:4: rule__XImportDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__0();
@@ -1539,11 +1623,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalSignalDSL.g:467:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    // InternalSignalDSL.g:494:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
     public final void entryRuleXAnnotation() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:468:1: ( ruleXAnnotation EOF )
-            // InternalSignalDSL.g:469:1: ruleXAnnotation EOF
+            // InternalSignalDSL.g:495:1: ( ruleXAnnotation EOF )
+            // InternalSignalDSL.g:496:1: ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationRule()); 
@@ -1573,23 +1657,23 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalSignalDSL.g:476:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    // InternalSignalDSL.g:503:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
     public final void ruleXAnnotation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:480:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
-            // InternalSignalDSL.g:481:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalSignalDSL.g:507:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalSignalDSL.g:508:2: ( ( rule__XAnnotation__Group__0 ) )
             {
-            // InternalSignalDSL.g:481:2: ( ( rule__XAnnotation__Group__0 ) )
-            // InternalSignalDSL.g:482:3: ( rule__XAnnotation__Group__0 )
+            // InternalSignalDSL.g:508:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalSignalDSL.g:509:3: ( rule__XAnnotation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:483:3: ( rule__XAnnotation__Group__0 )
-            // InternalSignalDSL.g:483:4: rule__XAnnotation__Group__0
+            // InternalSignalDSL.g:510:3: ( rule__XAnnotation__Group__0 )
+            // InternalSignalDSL.g:510:4: rule__XAnnotation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__0();
@@ -1624,11 +1708,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:492:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    // InternalSignalDSL.g:519:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
     public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:493:1: ( ruleXAnnotationElementValuePair EOF )
-            // InternalSignalDSL.g:494:1: ruleXAnnotationElementValuePair EOF
+            // InternalSignalDSL.g:520:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalSignalDSL.g:521:1: ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -1658,23 +1742,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:501:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    // InternalSignalDSL.g:528:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
     public final void ruleXAnnotationElementValuePair() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:505:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
-            // InternalSignalDSL.g:506:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalSignalDSL.g:532:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalSignalDSL.g:533:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
             {
-            // InternalSignalDSL.g:506:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
-            // InternalSignalDSL.g:507:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalSignalDSL.g:533:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalSignalDSL.g:534:3: ( rule__XAnnotationElementValuePair__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:508:3: ( rule__XAnnotationElementValuePair__Group__0 )
-            // InternalSignalDSL.g:508:4: rule__XAnnotationElementValuePair__Group__0
+            // InternalSignalDSL.g:535:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalSignalDSL.g:535:4: rule__XAnnotationElementValuePair__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__0();
@@ -1709,11 +1793,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:517:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalSignalDSL.g:544:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
     public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:518:1: ( ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalSignalDSL.g:519:1: ruleXAnnotationElementValueOrCommaList EOF
+            // InternalSignalDSL.g:545:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalSignalDSL.g:546:1: ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -1743,23 +1827,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:526:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    // InternalSignalDSL.g:553:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
     public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:530:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
-            // InternalSignalDSL.g:531:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalSignalDSL.g:557:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalSignalDSL.g:558:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
             {
-            // InternalSignalDSL.g:531:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
-            // InternalSignalDSL.g:532:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalSignalDSL.g:558:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalSignalDSL.g:559:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:533:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
-            // InternalSignalDSL.g:533:4: rule__XAnnotationElementValueOrCommaList__Alternatives
+            // InternalSignalDSL.g:560:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalSignalDSL.g:560:4: rule__XAnnotationElementValueOrCommaList__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Alternatives();
@@ -1794,11 +1878,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalSignalDSL.g:542:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    // InternalSignalDSL.g:569:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
     public final void entryRuleXAnnotationElementValue() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:543:1: ( ruleXAnnotationElementValue EOF )
-            // InternalSignalDSL.g:544:1: ruleXAnnotationElementValue EOF
+            // InternalSignalDSL.g:570:1: ( ruleXAnnotationElementValue EOF )
+            // InternalSignalDSL.g:571:1: ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueRule()); 
@@ -1828,23 +1912,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalSignalDSL.g:551:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    // InternalSignalDSL.g:578:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
     public final void ruleXAnnotationElementValue() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:555:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
-            // InternalSignalDSL.g:556:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalSignalDSL.g:582:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalSignalDSL.g:583:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
             {
-            // InternalSignalDSL.g:556:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
-            // InternalSignalDSL.g:557:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalSignalDSL.g:583:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalSignalDSL.g:584:3: ( rule__XAnnotationElementValue__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:558:3: ( rule__XAnnotationElementValue__Alternatives )
-            // InternalSignalDSL.g:558:4: rule__XAnnotationElementValue__Alternatives
+            // InternalSignalDSL.g:585:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalSignalDSL.g:585:4: rule__XAnnotationElementValue__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Alternatives();
@@ -1879,11 +1963,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalSignalDSL.g:567:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    // InternalSignalDSL.g:594:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
     public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:568:1: ( ruleXAnnotationOrExpression EOF )
-            // InternalSignalDSL.g:569:1: ruleXAnnotationOrExpression EOF
+            // InternalSignalDSL.g:595:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalSignalDSL.g:596:1: ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -1913,23 +1997,23 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalSignalDSL.g:576:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    // InternalSignalDSL.g:603:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
     public final void ruleXAnnotationOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:580:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
-            // InternalSignalDSL.g:581:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalSignalDSL.g:607:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalSignalDSL.g:608:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
             {
-            // InternalSignalDSL.g:581:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
-            // InternalSignalDSL.g:582:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalSignalDSL.g:608:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalSignalDSL.g:609:3: ( rule__XAnnotationOrExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:583:3: ( rule__XAnnotationOrExpression__Alternatives )
-            // InternalSignalDSL.g:583:4: rule__XAnnotationOrExpression__Alternatives
+            // InternalSignalDSL.g:610:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalSignalDSL.g:610:4: rule__XAnnotationOrExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationOrExpression__Alternatives();
@@ -1964,11 +2048,11 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalSignalDSL.g:592:1: entryRuleXExpression : ruleXExpression EOF ;
+    // InternalSignalDSL.g:619:1: entryRuleXExpression : ruleXExpression EOF ;
     public final void entryRuleXExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:593:1: ( ruleXExpression EOF )
-            // InternalSignalDSL.g:594:1: ruleXExpression EOF
+            // InternalSignalDSL.g:620:1: ( ruleXExpression EOF )
+            // InternalSignalDSL.g:621:1: ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionRule()); 
@@ -1998,17 +2082,17 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalSignalDSL.g:601:1: ruleXExpression : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:628:1: ruleXExpression : ( ruleXAssignment ) ;
     public final void ruleXExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:605:2: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:606:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:632:2: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:633:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:606:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:607:3: ruleXAssignment
+            // InternalSignalDSL.g:633:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:634:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
@@ -2043,11 +2127,11 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalSignalDSL.g:617:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    // InternalSignalDSL.g:644:1: entryRuleXAssignment : ruleXAssignment EOF ;
     public final void entryRuleXAssignment() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:618:1: ( ruleXAssignment EOF )
-            // InternalSignalDSL.g:619:1: ruleXAssignment EOF
+            // InternalSignalDSL.g:645:1: ( ruleXAssignment EOF )
+            // InternalSignalDSL.g:646:1: ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentRule()); 
@@ -2077,23 +2161,23 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalSignalDSL.g:626:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    // InternalSignalDSL.g:653:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
     public final void ruleXAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:630:2: ( ( ( rule__XAssignment__Alternatives ) ) )
-            // InternalSignalDSL.g:631:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalSignalDSL.g:657:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalSignalDSL.g:658:2: ( ( rule__XAssignment__Alternatives ) )
             {
-            // InternalSignalDSL.g:631:2: ( ( rule__XAssignment__Alternatives ) )
-            // InternalSignalDSL.g:632:3: ( rule__XAssignment__Alternatives )
+            // InternalSignalDSL.g:658:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalSignalDSL.g:659:3: ( rule__XAssignment__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:633:3: ( rule__XAssignment__Alternatives )
-            // InternalSignalDSL.g:633:4: rule__XAssignment__Alternatives
+            // InternalSignalDSL.g:660:3: ( rule__XAssignment__Alternatives )
+            // InternalSignalDSL.g:660:4: rule__XAssignment__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Alternatives();
@@ -2128,11 +2212,11 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalSignalDSL.g:642:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    // InternalSignalDSL.g:669:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
     public final void entryRuleOpSingleAssign() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:643:1: ( ruleOpSingleAssign EOF )
-            // InternalSignalDSL.g:644:1: ruleOpSingleAssign EOF
+            // InternalSignalDSL.g:670:1: ( ruleOpSingleAssign EOF )
+            // InternalSignalDSL.g:671:1: ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignRule()); 
@@ -2162,17 +2246,17 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalSignalDSL.g:651:1: ruleOpSingleAssign : ( '=' ) ;
+    // InternalSignalDSL.g:678:1: ruleOpSingleAssign : ( '=' ) ;
     public final void ruleOpSingleAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:655:2: ( ( '=' ) )
-            // InternalSignalDSL.g:656:2: ( '=' )
+            // InternalSignalDSL.g:682:2: ( ( '=' ) )
+            // InternalSignalDSL.g:683:2: ( '=' )
             {
-            // InternalSignalDSL.g:656:2: ( '=' )
-            // InternalSignalDSL.g:657:3: '='
+            // InternalSignalDSL.g:683:2: ( '=' )
+            // InternalSignalDSL.g:684:3: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
@@ -2203,11 +2287,11 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalSignalDSL.g:667:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    // InternalSignalDSL.g:694:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
     public final void entryRuleOpMultiAssign() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:668:1: ( ruleOpMultiAssign EOF )
-            // InternalSignalDSL.g:669:1: ruleOpMultiAssign EOF
+            // InternalSignalDSL.g:695:1: ( ruleOpMultiAssign EOF )
+            // InternalSignalDSL.g:696:1: ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignRule()); 
@@ -2237,23 +2321,23 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalSignalDSL.g:676:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    // InternalSignalDSL.g:703:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
     public final void ruleOpMultiAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:680:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
-            // InternalSignalDSL.g:681:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalSignalDSL.g:707:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalSignalDSL.g:708:2: ( ( rule__OpMultiAssign__Alternatives ) )
             {
-            // InternalSignalDSL.g:681:2: ( ( rule__OpMultiAssign__Alternatives ) )
-            // InternalSignalDSL.g:682:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalSignalDSL.g:708:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalSignalDSL.g:709:3: ( rule__OpMultiAssign__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:683:3: ( rule__OpMultiAssign__Alternatives )
-            // InternalSignalDSL.g:683:4: rule__OpMultiAssign__Alternatives
+            // InternalSignalDSL.g:710:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalSignalDSL.g:710:4: rule__OpMultiAssign__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Alternatives();
@@ -2288,11 +2372,11 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalSignalDSL.g:692:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    // InternalSignalDSL.g:719:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
     public final void entryRuleXOrExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:693:1: ( ruleXOrExpression EOF )
-            // InternalSignalDSL.g:694:1: ruleXOrExpression EOF
+            // InternalSignalDSL.g:720:1: ( ruleXOrExpression EOF )
+            // InternalSignalDSL.g:721:1: ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionRule()); 
@@ -2322,23 +2406,23 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalSignalDSL.g:701:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:728:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
     public final void ruleXOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:705:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:706:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalSignalDSL.g:732:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:733:2: ( ( rule__XOrExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:706:2: ( ( rule__XOrExpression__Group__0 ) )
-            // InternalSignalDSL.g:707:3: ( rule__XOrExpression__Group__0 )
+            // InternalSignalDSL.g:733:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalSignalDSL.g:734:3: ( rule__XOrExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:708:3: ( rule__XOrExpression__Group__0 )
-            // InternalSignalDSL.g:708:4: rule__XOrExpression__Group__0
+            // InternalSignalDSL.g:735:3: ( rule__XOrExpression__Group__0 )
+            // InternalSignalDSL.g:735:4: rule__XOrExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__0();
@@ -2373,11 +2457,11 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalSignalDSL.g:717:1: entryRuleOpOr : ruleOpOr EOF ;
+    // InternalSignalDSL.g:744:1: entryRuleOpOr : ruleOpOr EOF ;
     public final void entryRuleOpOr() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:718:1: ( ruleOpOr EOF )
-            // InternalSignalDSL.g:719:1: ruleOpOr EOF
+            // InternalSignalDSL.g:745:1: ( ruleOpOr EOF )
+            // InternalSignalDSL.g:746:1: ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrRule()); 
@@ -2407,17 +2491,17 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalSignalDSL.g:726:1: ruleOpOr : ( '||' ) ;
+    // InternalSignalDSL.g:753:1: ruleOpOr : ( '||' ) ;
     public final void ruleOpOr() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:730:2: ( ( '||' ) )
-            // InternalSignalDSL.g:731:2: ( '||' )
+            // InternalSignalDSL.g:757:2: ( ( '||' ) )
+            // InternalSignalDSL.g:758:2: ( '||' )
             {
-            // InternalSignalDSL.g:731:2: ( '||' )
-            // InternalSignalDSL.g:732:3: '||'
+            // InternalSignalDSL.g:758:2: ( '||' )
+            // InternalSignalDSL.g:759:3: '||'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
@@ -2448,11 +2532,11 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalSignalDSL.g:742:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    // InternalSignalDSL.g:769:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
     public final void entryRuleXAndExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:743:1: ( ruleXAndExpression EOF )
-            // InternalSignalDSL.g:744:1: ruleXAndExpression EOF
+            // InternalSignalDSL.g:770:1: ( ruleXAndExpression EOF )
+            // InternalSignalDSL.g:771:1: ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionRule()); 
@@ -2482,23 +2566,23 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalSignalDSL.g:751:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:778:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
     public final void ruleXAndExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:755:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:756:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalSignalDSL.g:782:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:783:2: ( ( rule__XAndExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:756:2: ( ( rule__XAndExpression__Group__0 ) )
-            // InternalSignalDSL.g:757:3: ( rule__XAndExpression__Group__0 )
+            // InternalSignalDSL.g:783:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalSignalDSL.g:784:3: ( rule__XAndExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:758:3: ( rule__XAndExpression__Group__0 )
-            // InternalSignalDSL.g:758:4: rule__XAndExpression__Group__0
+            // InternalSignalDSL.g:785:3: ( rule__XAndExpression__Group__0 )
+            // InternalSignalDSL.g:785:4: rule__XAndExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__0();
@@ -2533,11 +2617,11 @@
 
 
     // $ANTLR start "entryRuleOpAnd"
-    // InternalSignalDSL.g:767:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    // InternalSignalDSL.g:794:1: entryRuleOpAnd : ruleOpAnd EOF ;
     public final void entryRuleOpAnd() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:768:1: ( ruleOpAnd EOF )
-            // InternalSignalDSL.g:769:1: ruleOpAnd EOF
+            // InternalSignalDSL.g:795:1: ( ruleOpAnd EOF )
+            // InternalSignalDSL.g:796:1: ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndRule()); 
@@ -2567,17 +2651,17 @@
 
 
     // $ANTLR start "ruleOpAnd"
-    // InternalSignalDSL.g:776:1: ruleOpAnd : ( '&&' ) ;
+    // InternalSignalDSL.g:803:1: ruleOpAnd : ( '&&' ) ;
     public final void ruleOpAnd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:780:2: ( ( '&&' ) )
-            // InternalSignalDSL.g:781:2: ( '&&' )
+            // InternalSignalDSL.g:807:2: ( ( '&&' ) )
+            // InternalSignalDSL.g:808:2: ( '&&' )
             {
-            // InternalSignalDSL.g:781:2: ( '&&' )
-            // InternalSignalDSL.g:782:3: '&&'
+            // InternalSignalDSL.g:808:2: ( '&&' )
+            // InternalSignalDSL.g:809:3: '&&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
@@ -2608,11 +2692,11 @@
 
 
     // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalSignalDSL.g:792:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    // InternalSignalDSL.g:819:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
     public final void entryRuleXEqualityExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:793:1: ( ruleXEqualityExpression EOF )
-            // InternalSignalDSL.g:794:1: ruleXEqualityExpression EOF
+            // InternalSignalDSL.g:820:1: ( ruleXEqualityExpression EOF )
+            // InternalSignalDSL.g:821:1: ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionRule()); 
@@ -2642,23 +2726,23 @@
 
 
     // $ANTLR start "ruleXEqualityExpression"
-    // InternalSignalDSL.g:801:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:828:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
     public final void ruleXEqualityExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:805:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:806:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalSignalDSL.g:832:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:833:2: ( ( rule__XEqualityExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:806:2: ( ( rule__XEqualityExpression__Group__0 ) )
-            // InternalSignalDSL.g:807:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalSignalDSL.g:833:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalSignalDSL.g:834:3: ( rule__XEqualityExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:808:3: ( rule__XEqualityExpression__Group__0 )
-            // InternalSignalDSL.g:808:4: rule__XEqualityExpression__Group__0
+            // InternalSignalDSL.g:835:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalSignalDSL.g:835:4: rule__XEqualityExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__0();
@@ -2693,11 +2777,11 @@
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalSignalDSL.g:817:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    // InternalSignalDSL.g:844:1: entryRuleOpEquality : ruleOpEquality EOF ;
     public final void entryRuleOpEquality() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:818:1: ( ruleOpEquality EOF )
-            // InternalSignalDSL.g:819:1: ruleOpEquality EOF
+            // InternalSignalDSL.g:845:1: ( ruleOpEquality EOF )
+            // InternalSignalDSL.g:846:1: ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityRule()); 
@@ -2727,23 +2811,23 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalSignalDSL.g:826:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    // InternalSignalDSL.g:853:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
     public final void ruleOpEquality() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:830:2: ( ( ( rule__OpEquality__Alternatives ) ) )
-            // InternalSignalDSL.g:831:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalSignalDSL.g:857:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalSignalDSL.g:858:2: ( ( rule__OpEquality__Alternatives ) )
             {
-            // InternalSignalDSL.g:831:2: ( ( rule__OpEquality__Alternatives ) )
-            // InternalSignalDSL.g:832:3: ( rule__OpEquality__Alternatives )
+            // InternalSignalDSL.g:858:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalSignalDSL.g:859:3: ( rule__OpEquality__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:833:3: ( rule__OpEquality__Alternatives )
-            // InternalSignalDSL.g:833:4: rule__OpEquality__Alternatives
+            // InternalSignalDSL.g:860:3: ( rule__OpEquality__Alternatives )
+            // InternalSignalDSL.g:860:4: rule__OpEquality__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpEquality__Alternatives();
@@ -2778,11 +2862,11 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalSignalDSL.g:842:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    // InternalSignalDSL.g:869:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
     public final void entryRuleXRelationalExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:843:1: ( ruleXRelationalExpression EOF )
-            // InternalSignalDSL.g:844:1: ruleXRelationalExpression EOF
+            // InternalSignalDSL.g:870:1: ( ruleXRelationalExpression EOF )
+            // InternalSignalDSL.g:871:1: ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionRule()); 
@@ -2812,23 +2896,23 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalSignalDSL.g:851:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:878:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
     public final void ruleXRelationalExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:855:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:856:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalSignalDSL.g:882:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:883:2: ( ( rule__XRelationalExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:856:2: ( ( rule__XRelationalExpression__Group__0 ) )
-            // InternalSignalDSL.g:857:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalSignalDSL.g:883:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalSignalDSL.g:884:3: ( rule__XRelationalExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:858:3: ( rule__XRelationalExpression__Group__0 )
-            // InternalSignalDSL.g:858:4: rule__XRelationalExpression__Group__0
+            // InternalSignalDSL.g:885:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalSignalDSL.g:885:4: rule__XRelationalExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__0();
@@ -2863,11 +2947,11 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalSignalDSL.g:867:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    // InternalSignalDSL.g:894:1: entryRuleOpCompare : ruleOpCompare EOF ;
     public final void entryRuleOpCompare() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:868:1: ( ruleOpCompare EOF )
-            // InternalSignalDSL.g:869:1: ruleOpCompare EOF
+            // InternalSignalDSL.g:895:1: ( ruleOpCompare EOF )
+            // InternalSignalDSL.g:896:1: ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareRule()); 
@@ -2897,23 +2981,23 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalSignalDSL.g:876:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    // InternalSignalDSL.g:903:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
     public final void ruleOpCompare() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:880:2: ( ( ( rule__OpCompare__Alternatives ) ) )
-            // InternalSignalDSL.g:881:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalSignalDSL.g:907:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalSignalDSL.g:908:2: ( ( rule__OpCompare__Alternatives ) )
             {
-            // InternalSignalDSL.g:881:2: ( ( rule__OpCompare__Alternatives ) )
-            // InternalSignalDSL.g:882:3: ( rule__OpCompare__Alternatives )
+            // InternalSignalDSL.g:908:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalSignalDSL.g:909:3: ( rule__OpCompare__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:883:3: ( rule__OpCompare__Alternatives )
-            // InternalSignalDSL.g:883:4: rule__OpCompare__Alternatives
+            // InternalSignalDSL.g:910:3: ( rule__OpCompare__Alternatives )
+            // InternalSignalDSL.g:910:4: rule__OpCompare__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Alternatives();
@@ -2948,11 +3032,11 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalSignalDSL.g:892:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    // InternalSignalDSL.g:919:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
     public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:893:1: ( ruleXOtherOperatorExpression EOF )
-            // InternalSignalDSL.g:894:1: ruleXOtherOperatorExpression EOF
+            // InternalSignalDSL.g:920:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalSignalDSL.g:921:1: ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -2982,23 +3066,23 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalSignalDSL.g:901:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:928:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
     public final void ruleXOtherOperatorExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:905:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:906:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalSignalDSL.g:932:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:933:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:906:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
-            // InternalSignalDSL.g:907:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalSignalDSL.g:933:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalSignalDSL.g:934:3: ( rule__XOtherOperatorExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:908:3: ( rule__XOtherOperatorExpression__Group__0 )
-            // InternalSignalDSL.g:908:4: rule__XOtherOperatorExpression__Group__0
+            // InternalSignalDSL.g:935:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalSignalDSL.g:935:4: rule__XOtherOperatorExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__0();
@@ -3033,11 +3117,11 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalSignalDSL.g:917:1: entryRuleOpOther : ruleOpOther EOF ;
+    // InternalSignalDSL.g:944:1: entryRuleOpOther : ruleOpOther EOF ;
     public final void entryRuleOpOther() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:918:1: ( ruleOpOther EOF )
-            // InternalSignalDSL.g:919:1: ruleOpOther EOF
+            // InternalSignalDSL.g:945:1: ( ruleOpOther EOF )
+            // InternalSignalDSL.g:946:1: ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherRule()); 
@@ -3067,23 +3151,23 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalSignalDSL.g:926:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    // InternalSignalDSL.g:953:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
     public final void ruleOpOther() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:930:2: ( ( ( rule__OpOther__Alternatives ) ) )
-            // InternalSignalDSL.g:931:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalSignalDSL.g:957:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalSignalDSL.g:958:2: ( ( rule__OpOther__Alternatives ) )
             {
-            // InternalSignalDSL.g:931:2: ( ( rule__OpOther__Alternatives ) )
-            // InternalSignalDSL.g:932:3: ( rule__OpOther__Alternatives )
+            // InternalSignalDSL.g:958:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalSignalDSL.g:959:3: ( rule__OpOther__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:933:3: ( rule__OpOther__Alternatives )
-            // InternalSignalDSL.g:933:4: rule__OpOther__Alternatives
+            // InternalSignalDSL.g:960:3: ( rule__OpOther__Alternatives )
+            // InternalSignalDSL.g:960:4: rule__OpOther__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives();
@@ -3118,11 +3202,11 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalSignalDSL.g:942:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    // InternalSignalDSL.g:969:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
     public final void entryRuleXAdditiveExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:943:1: ( ruleXAdditiveExpression EOF )
-            // InternalSignalDSL.g:944:1: ruleXAdditiveExpression EOF
+            // InternalSignalDSL.g:970:1: ( ruleXAdditiveExpression EOF )
+            // InternalSignalDSL.g:971:1: ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionRule()); 
@@ -3152,23 +3236,23 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalSignalDSL.g:951:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:978:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
     public final void ruleXAdditiveExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:955:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:956:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalSignalDSL.g:982:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:983:2: ( ( rule__XAdditiveExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:956:2: ( ( rule__XAdditiveExpression__Group__0 ) )
-            // InternalSignalDSL.g:957:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalSignalDSL.g:983:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalSignalDSL.g:984:3: ( rule__XAdditiveExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:958:3: ( rule__XAdditiveExpression__Group__0 )
-            // InternalSignalDSL.g:958:4: rule__XAdditiveExpression__Group__0
+            // InternalSignalDSL.g:985:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalSignalDSL.g:985:4: rule__XAdditiveExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__0();
@@ -3203,11 +3287,11 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalSignalDSL.g:967:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    // InternalSignalDSL.g:994:1: entryRuleOpAdd : ruleOpAdd EOF ;
     public final void entryRuleOpAdd() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:968:1: ( ruleOpAdd EOF )
-            // InternalSignalDSL.g:969:1: ruleOpAdd EOF
+            // InternalSignalDSL.g:995:1: ( ruleOpAdd EOF )
+            // InternalSignalDSL.g:996:1: ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddRule()); 
@@ -3237,23 +3321,23 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalSignalDSL.g:976:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    // InternalSignalDSL.g:1003:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
     public final void ruleOpAdd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:980:2: ( ( ( rule__OpAdd__Alternatives ) ) )
-            // InternalSignalDSL.g:981:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalSignalDSL.g:1007:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalSignalDSL.g:1008:2: ( ( rule__OpAdd__Alternatives ) )
             {
-            // InternalSignalDSL.g:981:2: ( ( rule__OpAdd__Alternatives ) )
-            // InternalSignalDSL.g:982:3: ( rule__OpAdd__Alternatives )
+            // InternalSignalDSL.g:1008:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalSignalDSL.g:1009:3: ( rule__OpAdd__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:983:3: ( rule__OpAdd__Alternatives )
-            // InternalSignalDSL.g:983:4: rule__OpAdd__Alternatives
+            // InternalSignalDSL.g:1010:3: ( rule__OpAdd__Alternatives )
+            // InternalSignalDSL.g:1010:4: rule__OpAdd__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpAdd__Alternatives();
@@ -3288,11 +3372,11 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalSignalDSL.g:992:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    // InternalSignalDSL.g:1019:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
     public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:993:1: ( ruleXMultiplicativeExpression EOF )
-            // InternalSignalDSL.g:994:1: ruleXMultiplicativeExpression EOF
+            // InternalSignalDSL.g:1020:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalSignalDSL.g:1021:1: ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -3322,23 +3406,23 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalSignalDSL.g:1001:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1028:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
     public final void ruleXMultiplicativeExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1005:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1006:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalSignalDSL.g:1032:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1033:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1006:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
-            // InternalSignalDSL.g:1007:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalSignalDSL.g:1033:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalSignalDSL.g:1034:3: ( rule__XMultiplicativeExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1008:3: ( rule__XMultiplicativeExpression__Group__0 )
-            // InternalSignalDSL.g:1008:4: rule__XMultiplicativeExpression__Group__0
+            // InternalSignalDSL.g:1035:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalSignalDSL.g:1035:4: rule__XMultiplicativeExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__0();
@@ -3373,11 +3457,11 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalSignalDSL.g:1017:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    // InternalSignalDSL.g:1044:1: entryRuleOpMulti : ruleOpMulti EOF ;
     public final void entryRuleOpMulti() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1018:1: ( ruleOpMulti EOF )
-            // InternalSignalDSL.g:1019:1: ruleOpMulti EOF
+            // InternalSignalDSL.g:1045:1: ( ruleOpMulti EOF )
+            // InternalSignalDSL.g:1046:1: ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiRule()); 
@@ -3407,23 +3491,23 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalSignalDSL.g:1026:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    // InternalSignalDSL.g:1053:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
     public final void ruleOpMulti() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1030:2: ( ( ( rule__OpMulti__Alternatives ) ) )
-            // InternalSignalDSL.g:1031:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalSignalDSL.g:1057:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalSignalDSL.g:1058:2: ( ( rule__OpMulti__Alternatives ) )
             {
-            // InternalSignalDSL.g:1031:2: ( ( rule__OpMulti__Alternatives ) )
-            // InternalSignalDSL.g:1032:3: ( rule__OpMulti__Alternatives )
+            // InternalSignalDSL.g:1058:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalSignalDSL.g:1059:3: ( rule__OpMulti__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1033:3: ( rule__OpMulti__Alternatives )
-            // InternalSignalDSL.g:1033:4: rule__OpMulti__Alternatives
+            // InternalSignalDSL.g:1060:3: ( rule__OpMulti__Alternatives )
+            // InternalSignalDSL.g:1060:4: rule__OpMulti__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMulti__Alternatives();
@@ -3458,11 +3542,11 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalSignalDSL.g:1042:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    // InternalSignalDSL.g:1069:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
     public final void entryRuleXUnaryOperation() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1043:1: ( ruleXUnaryOperation EOF )
-            // InternalSignalDSL.g:1044:1: ruleXUnaryOperation EOF
+            // InternalSignalDSL.g:1070:1: ( ruleXUnaryOperation EOF )
+            // InternalSignalDSL.g:1071:1: ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationRule()); 
@@ -3492,23 +3576,23 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalSignalDSL.g:1051:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    // InternalSignalDSL.g:1078:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
     public final void ruleXUnaryOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1055:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
-            // InternalSignalDSL.g:1056:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalSignalDSL.g:1082:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalSignalDSL.g:1083:2: ( ( rule__XUnaryOperation__Alternatives ) )
             {
-            // InternalSignalDSL.g:1056:2: ( ( rule__XUnaryOperation__Alternatives ) )
-            // InternalSignalDSL.g:1057:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalSignalDSL.g:1083:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalSignalDSL.g:1084:3: ( rule__XUnaryOperation__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1058:3: ( rule__XUnaryOperation__Alternatives )
-            // InternalSignalDSL.g:1058:4: rule__XUnaryOperation__Alternatives
+            // InternalSignalDSL.g:1085:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalSignalDSL.g:1085:4: rule__XUnaryOperation__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Alternatives();
@@ -3543,11 +3627,11 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalSignalDSL.g:1067:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    // InternalSignalDSL.g:1094:1: entryRuleOpUnary : ruleOpUnary EOF ;
     public final void entryRuleOpUnary() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1068:1: ( ruleOpUnary EOF )
-            // InternalSignalDSL.g:1069:1: ruleOpUnary EOF
+            // InternalSignalDSL.g:1095:1: ( ruleOpUnary EOF )
+            // InternalSignalDSL.g:1096:1: ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryRule()); 
@@ -3577,23 +3661,23 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalSignalDSL.g:1076:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    // InternalSignalDSL.g:1103:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
     public final void ruleOpUnary() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1080:2: ( ( ( rule__OpUnary__Alternatives ) ) )
-            // InternalSignalDSL.g:1081:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalSignalDSL.g:1107:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalSignalDSL.g:1108:2: ( ( rule__OpUnary__Alternatives ) )
             {
-            // InternalSignalDSL.g:1081:2: ( ( rule__OpUnary__Alternatives ) )
-            // InternalSignalDSL.g:1082:3: ( rule__OpUnary__Alternatives )
+            // InternalSignalDSL.g:1108:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalSignalDSL.g:1109:3: ( rule__OpUnary__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1083:3: ( rule__OpUnary__Alternatives )
-            // InternalSignalDSL.g:1083:4: rule__OpUnary__Alternatives
+            // InternalSignalDSL.g:1110:3: ( rule__OpUnary__Alternatives )
+            // InternalSignalDSL.g:1110:4: rule__OpUnary__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpUnary__Alternatives();
@@ -3628,11 +3712,11 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalSignalDSL.g:1092:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    // InternalSignalDSL.g:1119:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
     public final void entryRuleXCastedExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1093:1: ( ruleXCastedExpression EOF )
-            // InternalSignalDSL.g:1094:1: ruleXCastedExpression EOF
+            // InternalSignalDSL.g:1120:1: ( ruleXCastedExpression EOF )
+            // InternalSignalDSL.g:1121:1: ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionRule()); 
@@ -3662,23 +3746,23 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalSignalDSL.g:1101:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1128:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
     public final void ruleXCastedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1105:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1106:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1132:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1133:2: ( ( rule__XCastedExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1106:2: ( ( rule__XCastedExpression__Group__0 ) )
-            // InternalSignalDSL.g:1107:3: ( rule__XCastedExpression__Group__0 )
+            // InternalSignalDSL.g:1133:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1134:3: ( rule__XCastedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1108:3: ( rule__XCastedExpression__Group__0 )
-            // InternalSignalDSL.g:1108:4: rule__XCastedExpression__Group__0
+            // InternalSignalDSL.g:1135:3: ( rule__XCastedExpression__Group__0 )
+            // InternalSignalDSL.g:1135:4: rule__XCastedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__0();
@@ -3713,11 +3797,11 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalSignalDSL.g:1117:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    // InternalSignalDSL.g:1144:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
     public final void entryRuleXPostfixOperation() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1118:1: ( ruleXPostfixOperation EOF )
-            // InternalSignalDSL.g:1119:1: ruleXPostfixOperation EOF
+            // InternalSignalDSL.g:1145:1: ( ruleXPostfixOperation EOF )
+            // InternalSignalDSL.g:1146:1: ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationRule()); 
@@ -3747,23 +3831,23 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalSignalDSL.g:1126:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    // InternalSignalDSL.g:1153:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
     public final void ruleXPostfixOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1130:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
-            // InternalSignalDSL.g:1131:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalSignalDSL.g:1157:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalSignalDSL.g:1158:2: ( ( rule__XPostfixOperation__Group__0 ) )
             {
-            // InternalSignalDSL.g:1131:2: ( ( rule__XPostfixOperation__Group__0 ) )
-            // InternalSignalDSL.g:1132:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalSignalDSL.g:1158:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalSignalDSL.g:1159:3: ( rule__XPostfixOperation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1133:3: ( rule__XPostfixOperation__Group__0 )
-            // InternalSignalDSL.g:1133:4: rule__XPostfixOperation__Group__0
+            // InternalSignalDSL.g:1160:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalSignalDSL.g:1160:4: rule__XPostfixOperation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__0();
@@ -3798,11 +3882,11 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalSignalDSL.g:1142:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    // InternalSignalDSL.g:1169:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
     public final void entryRuleOpPostfix() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1143:1: ( ruleOpPostfix EOF )
-            // InternalSignalDSL.g:1144:1: ruleOpPostfix EOF
+            // InternalSignalDSL.g:1170:1: ( ruleOpPostfix EOF )
+            // InternalSignalDSL.g:1171:1: ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixRule()); 
@@ -3832,23 +3916,23 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalSignalDSL.g:1151:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    // InternalSignalDSL.g:1178:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
     public final void ruleOpPostfix() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1155:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
-            // InternalSignalDSL.g:1156:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalSignalDSL.g:1182:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalSignalDSL.g:1183:2: ( ( rule__OpPostfix__Alternatives ) )
             {
-            // InternalSignalDSL.g:1156:2: ( ( rule__OpPostfix__Alternatives ) )
-            // InternalSignalDSL.g:1157:3: ( rule__OpPostfix__Alternatives )
+            // InternalSignalDSL.g:1183:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalSignalDSL.g:1184:3: ( rule__OpPostfix__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1158:3: ( rule__OpPostfix__Alternatives )
-            // InternalSignalDSL.g:1158:4: rule__OpPostfix__Alternatives
+            // InternalSignalDSL.g:1185:3: ( rule__OpPostfix__Alternatives )
+            // InternalSignalDSL.g:1185:4: rule__OpPostfix__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpPostfix__Alternatives();
@@ -3883,11 +3967,11 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalSignalDSL.g:1167:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    // InternalSignalDSL.g:1194:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
     public final void entryRuleXMemberFeatureCall() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1168:1: ( ruleXMemberFeatureCall EOF )
-            // InternalSignalDSL.g:1169:1: ruleXMemberFeatureCall EOF
+            // InternalSignalDSL.g:1195:1: ( ruleXMemberFeatureCall EOF )
+            // InternalSignalDSL.g:1196:1: ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallRule()); 
@@ -3917,23 +4001,23 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalSignalDSL.g:1176:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    // InternalSignalDSL.g:1203:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
     public final void ruleXMemberFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1180:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
-            // InternalSignalDSL.g:1181:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1207:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalSignalDSL.g:1208:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
             {
-            // InternalSignalDSL.g:1181:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
-            // InternalSignalDSL.g:1182:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1208:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1209:3: ( rule__XMemberFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1183:3: ( rule__XMemberFeatureCall__Group__0 )
-            // InternalSignalDSL.g:1183:4: rule__XMemberFeatureCall__Group__0
+            // InternalSignalDSL.g:1210:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1210:4: rule__XMemberFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__0();
@@ -3968,11 +4052,11 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalSignalDSL.g:1192:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    // InternalSignalDSL.g:1219:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
     public final void entryRuleXPrimaryExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1193:1: ( ruleXPrimaryExpression EOF )
-            // InternalSignalDSL.g:1194:1: ruleXPrimaryExpression EOF
+            // InternalSignalDSL.g:1220:1: ( ruleXPrimaryExpression EOF )
+            // InternalSignalDSL.g:1221:1: ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionRule()); 
@@ -4002,23 +4086,23 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalSignalDSL.g:1201:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    // InternalSignalDSL.g:1228:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
     public final void ruleXPrimaryExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1205:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
-            // InternalSignalDSL.g:1206:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalSignalDSL.g:1232:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalSignalDSL.g:1233:2: ( ( rule__XPrimaryExpression__Alternatives ) )
             {
-            // InternalSignalDSL.g:1206:2: ( ( rule__XPrimaryExpression__Alternatives ) )
-            // InternalSignalDSL.g:1207:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalSignalDSL.g:1233:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalSignalDSL.g:1234:3: ( rule__XPrimaryExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1208:3: ( rule__XPrimaryExpression__Alternatives )
-            // InternalSignalDSL.g:1208:4: rule__XPrimaryExpression__Alternatives
+            // InternalSignalDSL.g:1235:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalSignalDSL.g:1235:4: rule__XPrimaryExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XPrimaryExpression__Alternatives();
@@ -4053,11 +4137,11 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalSignalDSL.g:1217:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    // InternalSignalDSL.g:1244:1: entryRuleXLiteral : ruleXLiteral EOF ;
     public final void entryRuleXLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1218:1: ( ruleXLiteral EOF )
-            // InternalSignalDSL.g:1219:1: ruleXLiteral EOF
+            // InternalSignalDSL.g:1245:1: ( ruleXLiteral EOF )
+            // InternalSignalDSL.g:1246:1: ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralRule()); 
@@ -4087,23 +4171,23 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalSignalDSL.g:1226:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    // InternalSignalDSL.g:1253:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
     public final void ruleXLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1230:2: ( ( ( rule__XLiteral__Alternatives ) ) )
-            // InternalSignalDSL.g:1231:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1257:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalSignalDSL.g:1258:2: ( ( rule__XLiteral__Alternatives ) )
             {
-            // InternalSignalDSL.g:1231:2: ( ( rule__XLiteral__Alternatives ) )
-            // InternalSignalDSL.g:1232:3: ( rule__XLiteral__Alternatives )
+            // InternalSignalDSL.g:1258:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1259:3: ( rule__XLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1233:3: ( rule__XLiteral__Alternatives )
-            // InternalSignalDSL.g:1233:4: rule__XLiteral__Alternatives
+            // InternalSignalDSL.g:1260:3: ( rule__XLiteral__Alternatives )
+            // InternalSignalDSL.g:1260:4: rule__XLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XLiteral__Alternatives();
@@ -4138,11 +4222,11 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalSignalDSL.g:1242:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    // InternalSignalDSL.g:1269:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
     public final void entryRuleXCollectionLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1243:1: ( ruleXCollectionLiteral EOF )
-            // InternalSignalDSL.g:1244:1: ruleXCollectionLiteral EOF
+            // InternalSignalDSL.g:1270:1: ( ruleXCollectionLiteral EOF )
+            // InternalSignalDSL.g:1271:1: ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralRule()); 
@@ -4172,23 +4256,23 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalSignalDSL.g:1251:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    // InternalSignalDSL.g:1278:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
     public final void ruleXCollectionLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1255:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
-            // InternalSignalDSL.g:1256:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1282:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalSignalDSL.g:1283:2: ( ( rule__XCollectionLiteral__Alternatives ) )
             {
-            // InternalSignalDSL.g:1256:2: ( ( rule__XCollectionLiteral__Alternatives ) )
-            // InternalSignalDSL.g:1257:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalSignalDSL.g:1283:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1284:3: ( rule__XCollectionLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1258:3: ( rule__XCollectionLiteral__Alternatives )
-            // InternalSignalDSL.g:1258:4: rule__XCollectionLiteral__Alternatives
+            // InternalSignalDSL.g:1285:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalSignalDSL.g:1285:4: rule__XCollectionLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XCollectionLiteral__Alternatives();
@@ -4223,11 +4307,11 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalSignalDSL.g:1267:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    // InternalSignalDSL.g:1294:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
     public final void entryRuleXSetLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1268:1: ( ruleXSetLiteral EOF )
-            // InternalSignalDSL.g:1269:1: ruleXSetLiteral EOF
+            // InternalSignalDSL.g:1295:1: ( ruleXSetLiteral EOF )
+            // InternalSignalDSL.g:1296:1: ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralRule()); 
@@ -4257,23 +4341,23 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalSignalDSL.g:1276:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1303:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
     public final void ruleXSetLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1280:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1281:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1307:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1308:2: ( ( rule__XSetLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1281:2: ( ( rule__XSetLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1282:3: ( rule__XSetLiteral__Group__0 )
+            // InternalSignalDSL.g:1308:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1309:3: ( rule__XSetLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1283:3: ( rule__XSetLiteral__Group__0 )
-            // InternalSignalDSL.g:1283:4: rule__XSetLiteral__Group__0
+            // InternalSignalDSL.g:1310:3: ( rule__XSetLiteral__Group__0 )
+            // InternalSignalDSL.g:1310:4: rule__XSetLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__0();
@@ -4308,11 +4392,11 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalSignalDSL.g:1292:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    // InternalSignalDSL.g:1319:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
     public final void entryRuleXListLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1293:1: ( ruleXListLiteral EOF )
-            // InternalSignalDSL.g:1294:1: ruleXListLiteral EOF
+            // InternalSignalDSL.g:1320:1: ( ruleXListLiteral EOF )
+            // InternalSignalDSL.g:1321:1: ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralRule()); 
@@ -4342,23 +4426,23 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalSignalDSL.g:1301:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1328:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
     public final void ruleXListLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1305:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1306:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1332:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1333:2: ( ( rule__XListLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1306:2: ( ( rule__XListLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1307:3: ( rule__XListLiteral__Group__0 )
+            // InternalSignalDSL.g:1333:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1334:3: ( rule__XListLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1308:3: ( rule__XListLiteral__Group__0 )
-            // InternalSignalDSL.g:1308:4: rule__XListLiteral__Group__0
+            // InternalSignalDSL.g:1335:3: ( rule__XListLiteral__Group__0 )
+            // InternalSignalDSL.g:1335:4: rule__XListLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__0();
@@ -4393,11 +4477,11 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalSignalDSL.g:1317:1: entryRuleXClosure : ruleXClosure EOF ;
+    // InternalSignalDSL.g:1344:1: entryRuleXClosure : ruleXClosure EOF ;
     public final void entryRuleXClosure() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1318:1: ( ruleXClosure EOF )
-            // InternalSignalDSL.g:1319:1: ruleXClosure EOF
+            // InternalSignalDSL.g:1345:1: ( ruleXClosure EOF )
+            // InternalSignalDSL.g:1346:1: ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureRule()); 
@@ -4427,23 +4511,23 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalSignalDSL.g:1326:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    // InternalSignalDSL.g:1353:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
     public final void ruleXClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1330:2: ( ( ( rule__XClosure__Group__0 ) ) )
-            // InternalSignalDSL.g:1331:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalSignalDSL.g:1357:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalSignalDSL.g:1358:2: ( ( rule__XClosure__Group__0 ) )
             {
-            // InternalSignalDSL.g:1331:2: ( ( rule__XClosure__Group__0 ) )
-            // InternalSignalDSL.g:1332:3: ( rule__XClosure__Group__0 )
+            // InternalSignalDSL.g:1358:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalSignalDSL.g:1359:3: ( rule__XClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1333:3: ( rule__XClosure__Group__0 )
-            // InternalSignalDSL.g:1333:4: rule__XClosure__Group__0
+            // InternalSignalDSL.g:1360:3: ( rule__XClosure__Group__0 )
+            // InternalSignalDSL.g:1360:4: rule__XClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__0();
@@ -4478,11 +4562,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalSignalDSL.g:1342:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    // InternalSignalDSL.g:1369:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
     public final void entryRuleXExpressionInClosure() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1343:1: ( ruleXExpressionInClosure EOF )
-            // InternalSignalDSL.g:1344:1: ruleXExpressionInClosure EOF
+            // InternalSignalDSL.g:1370:1: ( ruleXExpressionInClosure EOF )
+            // InternalSignalDSL.g:1371:1: ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureRule()); 
@@ -4512,23 +4596,23 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalSignalDSL.g:1351:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    // InternalSignalDSL.g:1378:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
     public final void ruleXExpressionInClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1355:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
-            // InternalSignalDSL.g:1356:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalSignalDSL.g:1382:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalSignalDSL.g:1383:2: ( ( rule__XExpressionInClosure__Group__0 ) )
             {
-            // InternalSignalDSL.g:1356:2: ( ( rule__XExpressionInClosure__Group__0 ) )
-            // InternalSignalDSL.g:1357:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalSignalDSL.g:1383:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalSignalDSL.g:1384:3: ( rule__XExpressionInClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1358:3: ( rule__XExpressionInClosure__Group__0 )
-            // InternalSignalDSL.g:1358:4: rule__XExpressionInClosure__Group__0
+            // InternalSignalDSL.g:1385:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalSignalDSL.g:1385:4: rule__XExpressionInClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__0();
@@ -4563,11 +4647,11 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalSignalDSL.g:1367:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    // InternalSignalDSL.g:1394:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
     public final void entryRuleXShortClosure() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1368:1: ( ruleXShortClosure EOF )
-            // InternalSignalDSL.g:1369:1: ruleXShortClosure EOF
+            // InternalSignalDSL.g:1395:1: ( ruleXShortClosure EOF )
+            // InternalSignalDSL.g:1396:1: ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureRule()); 
@@ -4597,23 +4681,23 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalSignalDSL.g:1376:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    // InternalSignalDSL.g:1403:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
     public final void ruleXShortClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1380:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
-            // InternalSignalDSL.g:1381:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalSignalDSL.g:1407:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalSignalDSL.g:1408:2: ( ( rule__XShortClosure__Group__0 ) )
             {
-            // InternalSignalDSL.g:1381:2: ( ( rule__XShortClosure__Group__0 ) )
-            // InternalSignalDSL.g:1382:3: ( rule__XShortClosure__Group__0 )
+            // InternalSignalDSL.g:1408:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalSignalDSL.g:1409:3: ( rule__XShortClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1383:3: ( rule__XShortClosure__Group__0 )
-            // InternalSignalDSL.g:1383:4: rule__XShortClosure__Group__0
+            // InternalSignalDSL.g:1410:3: ( rule__XShortClosure__Group__0 )
+            // InternalSignalDSL.g:1410:4: rule__XShortClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__0();
@@ -4648,11 +4732,11 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalSignalDSL.g:1392:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    // InternalSignalDSL.g:1419:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
     public final void entryRuleXParenthesizedExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1393:1: ( ruleXParenthesizedExpression EOF )
-            // InternalSignalDSL.g:1394:1: ruleXParenthesizedExpression EOF
+            // InternalSignalDSL.g:1420:1: ( ruleXParenthesizedExpression EOF )
+            // InternalSignalDSL.g:1421:1: ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -4682,23 +4766,23 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalSignalDSL.g:1401:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1428:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
     public final void ruleXParenthesizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1405:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1406:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1432:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1433:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1406:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
-            // InternalSignalDSL.g:1407:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalSignalDSL.g:1433:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1434:3: ( rule__XParenthesizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1408:3: ( rule__XParenthesizedExpression__Group__0 )
-            // InternalSignalDSL.g:1408:4: rule__XParenthesizedExpression__Group__0
+            // InternalSignalDSL.g:1435:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalSignalDSL.g:1435:4: rule__XParenthesizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__0();
@@ -4733,11 +4817,11 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalSignalDSL.g:1417:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    // InternalSignalDSL.g:1444:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
     public final void entryRuleXIfExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1418:1: ( ruleXIfExpression EOF )
-            // InternalSignalDSL.g:1419:1: ruleXIfExpression EOF
+            // InternalSignalDSL.g:1445:1: ( ruleXIfExpression EOF )
+            // InternalSignalDSL.g:1446:1: ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionRule()); 
@@ -4767,23 +4851,23 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalSignalDSL.g:1426:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1453:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
     public final void ruleXIfExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1430:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1431:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalSignalDSL.g:1457:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1458:2: ( ( rule__XIfExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1431:2: ( ( rule__XIfExpression__Group__0 ) )
-            // InternalSignalDSL.g:1432:3: ( rule__XIfExpression__Group__0 )
+            // InternalSignalDSL.g:1458:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalSignalDSL.g:1459:3: ( rule__XIfExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1433:3: ( rule__XIfExpression__Group__0 )
-            // InternalSignalDSL.g:1433:4: rule__XIfExpression__Group__0
+            // InternalSignalDSL.g:1460:3: ( rule__XIfExpression__Group__0 )
+            // InternalSignalDSL.g:1460:4: rule__XIfExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__0();
@@ -4818,11 +4902,11 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalSignalDSL.g:1442:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    // InternalSignalDSL.g:1469:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
     public final void entryRuleXSwitchExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1443:1: ( ruleXSwitchExpression EOF )
-            // InternalSignalDSL.g:1444:1: ruleXSwitchExpression EOF
+            // InternalSignalDSL.g:1470:1: ( ruleXSwitchExpression EOF )
+            // InternalSignalDSL.g:1471:1: ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionRule()); 
@@ -4852,23 +4936,23 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalSignalDSL.g:1451:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1478:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
     public final void ruleXSwitchExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1455:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1456:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalSignalDSL.g:1482:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1483:2: ( ( rule__XSwitchExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1456:2: ( ( rule__XSwitchExpression__Group__0 ) )
-            // InternalSignalDSL.g:1457:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalSignalDSL.g:1483:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalSignalDSL.g:1484:3: ( rule__XSwitchExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1458:3: ( rule__XSwitchExpression__Group__0 )
-            // InternalSignalDSL.g:1458:4: rule__XSwitchExpression__Group__0
+            // InternalSignalDSL.g:1485:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalSignalDSL.g:1485:4: rule__XSwitchExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__0();
@@ -4903,11 +4987,11 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalSignalDSL.g:1467:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    // InternalSignalDSL.g:1494:1: entryRuleXCasePart : ruleXCasePart EOF ;
     public final void entryRuleXCasePart() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1468:1: ( ruleXCasePart EOF )
-            // InternalSignalDSL.g:1469:1: ruleXCasePart EOF
+            // InternalSignalDSL.g:1495:1: ( ruleXCasePart EOF )
+            // InternalSignalDSL.g:1496:1: ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartRule()); 
@@ -4937,23 +5021,23 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalSignalDSL.g:1476:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    // InternalSignalDSL.g:1503:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
     public final void ruleXCasePart() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1480:2: ( ( ( rule__XCasePart__Group__0 ) ) )
-            // InternalSignalDSL.g:1481:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalSignalDSL.g:1507:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalSignalDSL.g:1508:2: ( ( rule__XCasePart__Group__0 ) )
             {
-            // InternalSignalDSL.g:1481:2: ( ( rule__XCasePart__Group__0 ) )
-            // InternalSignalDSL.g:1482:3: ( rule__XCasePart__Group__0 )
+            // InternalSignalDSL.g:1508:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalSignalDSL.g:1509:3: ( rule__XCasePart__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1483:3: ( rule__XCasePart__Group__0 )
-            // InternalSignalDSL.g:1483:4: rule__XCasePart__Group__0
+            // InternalSignalDSL.g:1510:3: ( rule__XCasePart__Group__0 )
+            // InternalSignalDSL.g:1510:4: rule__XCasePart__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__0();
@@ -4988,11 +5072,11 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalSignalDSL.g:1492:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    // InternalSignalDSL.g:1519:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
     public final void entryRuleXForLoopExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1493:1: ( ruleXForLoopExpression EOF )
-            // InternalSignalDSL.g:1494:1: ruleXForLoopExpression EOF
+            // InternalSignalDSL.g:1520:1: ( ruleXForLoopExpression EOF )
+            // InternalSignalDSL.g:1521:1: ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionRule()); 
@@ -5022,23 +5106,23 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalSignalDSL.g:1501:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1528:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
     public final void ruleXForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1505:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1506:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1532:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1533:2: ( ( rule__XForLoopExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1506:2: ( ( rule__XForLoopExpression__Group__0 ) )
-            // InternalSignalDSL.g:1507:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1533:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1534:3: ( rule__XForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1508:3: ( rule__XForLoopExpression__Group__0 )
-            // InternalSignalDSL.g:1508:4: rule__XForLoopExpression__Group__0
+            // InternalSignalDSL.g:1535:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1535:4: rule__XForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__0();
@@ -5073,11 +5157,11 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalSignalDSL.g:1517:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    // InternalSignalDSL.g:1544:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
     public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1518:1: ( ruleXBasicForLoopExpression EOF )
-            // InternalSignalDSL.g:1519:1: ruleXBasicForLoopExpression EOF
+            // InternalSignalDSL.g:1545:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalSignalDSL.g:1546:1: ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -5107,23 +5191,23 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalSignalDSL.g:1526:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1553:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
     public final void ruleXBasicForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1530:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1531:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1557:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1558:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1531:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
-            // InternalSignalDSL.g:1532:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1558:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1559:3: ( rule__XBasicForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1533:3: ( rule__XBasicForLoopExpression__Group__0 )
-            // InternalSignalDSL.g:1533:4: rule__XBasicForLoopExpression__Group__0
+            // InternalSignalDSL.g:1560:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1560:4: rule__XBasicForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__0();
@@ -5158,11 +5242,11 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalSignalDSL.g:1542:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    // InternalSignalDSL.g:1569:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
     public final void entryRuleXWhileExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1543:1: ( ruleXWhileExpression EOF )
-            // InternalSignalDSL.g:1544:1: ruleXWhileExpression EOF
+            // InternalSignalDSL.g:1570:1: ( ruleXWhileExpression EOF )
+            // InternalSignalDSL.g:1571:1: ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionRule()); 
@@ -5192,23 +5276,23 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalSignalDSL.g:1551:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1578:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
     public final void ruleXWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1555:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1556:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1582:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1583:2: ( ( rule__XWhileExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1556:2: ( ( rule__XWhileExpression__Group__0 ) )
-            // InternalSignalDSL.g:1557:3: ( rule__XWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1583:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1584:3: ( rule__XWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1558:3: ( rule__XWhileExpression__Group__0 )
-            // InternalSignalDSL.g:1558:4: rule__XWhileExpression__Group__0
+            // InternalSignalDSL.g:1585:3: ( rule__XWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1585:4: rule__XWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__0();
@@ -5243,11 +5327,11 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalSignalDSL.g:1567:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    // InternalSignalDSL.g:1594:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
     public final void entryRuleXDoWhileExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1568:1: ( ruleXDoWhileExpression EOF )
-            // InternalSignalDSL.g:1569:1: ruleXDoWhileExpression EOF
+            // InternalSignalDSL.g:1595:1: ( ruleXDoWhileExpression EOF )
+            // InternalSignalDSL.g:1596:1: ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionRule()); 
@@ -5277,23 +5361,23 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalSignalDSL.g:1576:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1603:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
     public final void ruleXDoWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1580:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1581:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1607:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1608:2: ( ( rule__XDoWhileExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1581:2: ( ( rule__XDoWhileExpression__Group__0 ) )
-            // InternalSignalDSL.g:1582:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1608:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1609:3: ( rule__XDoWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1583:3: ( rule__XDoWhileExpression__Group__0 )
-            // InternalSignalDSL.g:1583:4: rule__XDoWhileExpression__Group__0
+            // InternalSignalDSL.g:1610:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1610:4: rule__XDoWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__0();
@@ -5328,11 +5412,11 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalSignalDSL.g:1592:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    // InternalSignalDSL.g:1619:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
     public final void entryRuleXBlockExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1593:1: ( ruleXBlockExpression EOF )
-            // InternalSignalDSL.g:1594:1: ruleXBlockExpression EOF
+            // InternalSignalDSL.g:1620:1: ( ruleXBlockExpression EOF )
+            // InternalSignalDSL.g:1621:1: ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionRule()); 
@@ -5362,23 +5446,23 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalSignalDSL.g:1601:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1628:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
     public final void ruleXBlockExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1605:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1606:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalSignalDSL.g:1632:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1633:2: ( ( rule__XBlockExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1606:2: ( ( rule__XBlockExpression__Group__0 ) )
-            // InternalSignalDSL.g:1607:3: ( rule__XBlockExpression__Group__0 )
+            // InternalSignalDSL.g:1633:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalSignalDSL.g:1634:3: ( rule__XBlockExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1608:3: ( rule__XBlockExpression__Group__0 )
-            // InternalSignalDSL.g:1608:4: rule__XBlockExpression__Group__0
+            // InternalSignalDSL.g:1635:3: ( rule__XBlockExpression__Group__0 )
+            // InternalSignalDSL.g:1635:4: rule__XBlockExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__0();
@@ -5413,11 +5497,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:1617:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    // InternalSignalDSL.g:1644:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
     public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1618:1: ( ruleXExpressionOrVarDeclaration EOF )
-            // InternalSignalDSL.g:1619:1: ruleXExpressionOrVarDeclaration EOF
+            // InternalSignalDSL.g:1645:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalSignalDSL.g:1646:1: ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -5447,23 +5531,23 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:1626:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    // InternalSignalDSL.g:1653:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
     public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1630:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
-            // InternalSignalDSL.g:1631:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalSignalDSL.g:1657:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalSignalDSL.g:1658:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
             {
-            // InternalSignalDSL.g:1631:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
-            // InternalSignalDSL.g:1632:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalSignalDSL.g:1658:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalSignalDSL.g:1659:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1633:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
-            // InternalSignalDSL.g:1633:4: rule__XExpressionOrVarDeclaration__Alternatives
+            // InternalSignalDSL.g:1660:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalSignalDSL.g:1660:4: rule__XExpressionOrVarDeclaration__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionOrVarDeclaration__Alternatives();
@@ -5498,11 +5582,11 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalSignalDSL.g:1642:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    // InternalSignalDSL.g:1669:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
     public final void entryRuleXVariableDeclaration() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1643:1: ( ruleXVariableDeclaration EOF )
-            // InternalSignalDSL.g:1644:1: ruleXVariableDeclaration EOF
+            // InternalSignalDSL.g:1670:1: ( ruleXVariableDeclaration EOF )
+            // InternalSignalDSL.g:1671:1: ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationRule()); 
@@ -5532,23 +5616,23 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalSignalDSL.g:1651:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    // InternalSignalDSL.g:1678:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
     public final void ruleXVariableDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1655:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
-            // InternalSignalDSL.g:1656:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:1682:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalSignalDSL.g:1683:2: ( ( rule__XVariableDeclaration__Group__0 ) )
             {
-            // InternalSignalDSL.g:1656:2: ( ( rule__XVariableDeclaration__Group__0 ) )
-            // InternalSignalDSL.g:1657:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalSignalDSL.g:1683:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:1684:3: ( rule__XVariableDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1658:3: ( rule__XVariableDeclaration__Group__0 )
-            // InternalSignalDSL.g:1658:4: rule__XVariableDeclaration__Group__0
+            // InternalSignalDSL.g:1685:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalSignalDSL.g:1685:4: rule__XVariableDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__0();
@@ -5583,11 +5667,11 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalSignalDSL.g:1667:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:1694:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
     public final void entryRuleJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1668:1: ( ruleJvmFormalParameter EOF )
-            // InternalSignalDSL.g:1669:1: ruleJvmFormalParameter EOF
+            // InternalSignalDSL.g:1695:1: ( ruleJvmFormalParameter EOF )
+            // InternalSignalDSL.g:1696:1: ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterRule()); 
@@ -5617,23 +5701,23 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalSignalDSL.g:1676:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    // InternalSignalDSL.g:1703:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
     public final void ruleJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1680:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
-            // InternalSignalDSL.g:1681:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1707:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalSignalDSL.g:1708:2: ( ( rule__JvmFormalParameter__Group__0 ) )
             {
-            // InternalSignalDSL.g:1681:2: ( ( rule__JvmFormalParameter__Group__0 ) )
-            // InternalSignalDSL.g:1682:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1708:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1709:3: ( rule__JvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1683:3: ( rule__JvmFormalParameter__Group__0 )
-            // InternalSignalDSL.g:1683:4: rule__JvmFormalParameter__Group__0
+            // InternalSignalDSL.g:1710:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1710:4: rule__JvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__0();
@@ -5668,11 +5752,11 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalSignalDSL.g:1692:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:1719:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
     public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1693:1: ( ruleFullJvmFormalParameter EOF )
-            // InternalSignalDSL.g:1694:1: ruleFullJvmFormalParameter EOF
+            // InternalSignalDSL.g:1720:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalSignalDSL.g:1721:1: ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -5702,23 +5786,23 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalSignalDSL.g:1701:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    // InternalSignalDSL.g:1728:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
     public final void ruleFullJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1705:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
-            // InternalSignalDSL.g:1706:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1732:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalSignalDSL.g:1733:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
             {
-            // InternalSignalDSL.g:1706:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
-            // InternalSignalDSL.g:1707:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1733:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1734:3: ( rule__FullJvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1708:3: ( rule__FullJvmFormalParameter__Group__0 )
-            // InternalSignalDSL.g:1708:4: rule__FullJvmFormalParameter__Group__0
+            // InternalSignalDSL.g:1735:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1735:4: rule__FullJvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__0();
@@ -5753,11 +5837,11 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalSignalDSL.g:1717:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    // InternalSignalDSL.g:1744:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
     public final void entryRuleXFeatureCall() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1718:1: ( ruleXFeatureCall EOF )
-            // InternalSignalDSL.g:1719:1: ruleXFeatureCall EOF
+            // InternalSignalDSL.g:1745:1: ( ruleXFeatureCall EOF )
+            // InternalSignalDSL.g:1746:1: ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallRule()); 
@@ -5787,23 +5871,23 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalSignalDSL.g:1726:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    // InternalSignalDSL.g:1753:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
     public final void ruleXFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1730:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
-            // InternalSignalDSL.g:1731:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1757:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalSignalDSL.g:1758:2: ( ( rule__XFeatureCall__Group__0 ) )
             {
-            // InternalSignalDSL.g:1731:2: ( ( rule__XFeatureCall__Group__0 ) )
-            // InternalSignalDSL.g:1732:3: ( rule__XFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1758:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1759:3: ( rule__XFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1733:3: ( rule__XFeatureCall__Group__0 )
-            // InternalSignalDSL.g:1733:4: rule__XFeatureCall__Group__0
+            // InternalSignalDSL.g:1760:3: ( rule__XFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1760:4: rule__XFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__0();
@@ -5838,11 +5922,11 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalSignalDSL.g:1742:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    // InternalSignalDSL.g:1769:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
     public final void entryRuleFeatureCallID() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1743:1: ( ruleFeatureCallID EOF )
-            // InternalSignalDSL.g:1744:1: ruleFeatureCallID EOF
+            // InternalSignalDSL.g:1770:1: ( ruleFeatureCallID EOF )
+            // InternalSignalDSL.g:1771:1: ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDRule()); 
@@ -5872,23 +5956,23 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalSignalDSL.g:1751:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    // InternalSignalDSL.g:1778:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
     public final void ruleFeatureCallID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1755:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
-            // InternalSignalDSL.g:1756:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalSignalDSL.g:1782:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalSignalDSL.g:1783:2: ( ( rule__FeatureCallID__Alternatives ) )
             {
-            // InternalSignalDSL.g:1756:2: ( ( rule__FeatureCallID__Alternatives ) )
-            // InternalSignalDSL.g:1757:3: ( rule__FeatureCallID__Alternatives )
+            // InternalSignalDSL.g:1783:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalSignalDSL.g:1784:3: ( rule__FeatureCallID__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1758:3: ( rule__FeatureCallID__Alternatives )
-            // InternalSignalDSL.g:1758:4: rule__FeatureCallID__Alternatives
+            // InternalSignalDSL.g:1785:3: ( rule__FeatureCallID__Alternatives )
+            // InternalSignalDSL.g:1785:4: rule__FeatureCallID__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__FeatureCallID__Alternatives();
@@ -5923,11 +6007,11 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalSignalDSL.g:1767:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    // InternalSignalDSL.g:1794:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
     public final void entryRuleIdOrSuper() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1768:1: ( ruleIdOrSuper EOF )
-            // InternalSignalDSL.g:1769:1: ruleIdOrSuper EOF
+            // InternalSignalDSL.g:1795:1: ( ruleIdOrSuper EOF )
+            // InternalSignalDSL.g:1796:1: ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperRule()); 
@@ -5957,23 +6041,23 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalSignalDSL.g:1776:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    // InternalSignalDSL.g:1803:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
     public final void ruleIdOrSuper() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1780:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
-            // InternalSignalDSL.g:1781:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalSignalDSL.g:1807:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalSignalDSL.g:1808:2: ( ( rule__IdOrSuper__Alternatives ) )
             {
-            // InternalSignalDSL.g:1781:2: ( ( rule__IdOrSuper__Alternatives ) )
-            // InternalSignalDSL.g:1782:3: ( rule__IdOrSuper__Alternatives )
+            // InternalSignalDSL.g:1808:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalSignalDSL.g:1809:3: ( rule__IdOrSuper__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1783:3: ( rule__IdOrSuper__Alternatives )
-            // InternalSignalDSL.g:1783:4: rule__IdOrSuper__Alternatives
+            // InternalSignalDSL.g:1810:3: ( rule__IdOrSuper__Alternatives )
+            // InternalSignalDSL.g:1810:4: rule__IdOrSuper__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__IdOrSuper__Alternatives();
@@ -6008,11 +6092,11 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalSignalDSL.g:1792:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    // InternalSignalDSL.g:1819:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
     public final void entryRuleXConstructorCall() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1793:1: ( ruleXConstructorCall EOF )
-            // InternalSignalDSL.g:1794:1: ruleXConstructorCall EOF
+            // InternalSignalDSL.g:1820:1: ( ruleXConstructorCall EOF )
+            // InternalSignalDSL.g:1821:1: ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallRule()); 
@@ -6042,23 +6126,23 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalSignalDSL.g:1801:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    // InternalSignalDSL.g:1828:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
     public final void ruleXConstructorCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1805:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
-            // InternalSignalDSL.g:1806:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalSignalDSL.g:1832:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalSignalDSL.g:1833:2: ( ( rule__XConstructorCall__Group__0 ) )
             {
-            // InternalSignalDSL.g:1806:2: ( ( rule__XConstructorCall__Group__0 ) )
-            // InternalSignalDSL.g:1807:3: ( rule__XConstructorCall__Group__0 )
+            // InternalSignalDSL.g:1833:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalSignalDSL.g:1834:3: ( rule__XConstructorCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1808:3: ( rule__XConstructorCall__Group__0 )
-            // InternalSignalDSL.g:1808:4: rule__XConstructorCall__Group__0
+            // InternalSignalDSL.g:1835:3: ( rule__XConstructorCall__Group__0 )
+            // InternalSignalDSL.g:1835:4: rule__XConstructorCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__0();
@@ -6093,11 +6177,11 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalSignalDSL.g:1817:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    // InternalSignalDSL.g:1844:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
     public final void entryRuleXBooleanLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1818:1: ( ruleXBooleanLiteral EOF )
-            // InternalSignalDSL.g:1819:1: ruleXBooleanLiteral EOF
+            // InternalSignalDSL.g:1845:1: ( ruleXBooleanLiteral EOF )
+            // InternalSignalDSL.g:1846:1: ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralRule()); 
@@ -6127,23 +6211,23 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalSignalDSL.g:1826:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1853:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
     public final void ruleXBooleanLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1830:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1831:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1857:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1858:2: ( ( rule__XBooleanLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1831:2: ( ( rule__XBooleanLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1832:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalSignalDSL.g:1858:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1859:3: ( rule__XBooleanLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1833:3: ( rule__XBooleanLiteral__Group__0 )
-            // InternalSignalDSL.g:1833:4: rule__XBooleanLiteral__Group__0
+            // InternalSignalDSL.g:1860:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalSignalDSL.g:1860:4: rule__XBooleanLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__0();
@@ -6178,11 +6262,11 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalSignalDSL.g:1842:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    // InternalSignalDSL.g:1869:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
     public final void entryRuleXNullLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1843:1: ( ruleXNullLiteral EOF )
-            // InternalSignalDSL.g:1844:1: ruleXNullLiteral EOF
+            // InternalSignalDSL.g:1870:1: ( ruleXNullLiteral EOF )
+            // InternalSignalDSL.g:1871:1: ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralRule()); 
@@ -6212,23 +6296,23 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalSignalDSL.g:1851:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1878:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
     public final void ruleXNullLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1855:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1856:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1882:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1883:2: ( ( rule__XNullLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1856:2: ( ( rule__XNullLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1857:3: ( rule__XNullLiteral__Group__0 )
+            // InternalSignalDSL.g:1883:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1884:3: ( rule__XNullLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1858:3: ( rule__XNullLiteral__Group__0 )
-            // InternalSignalDSL.g:1858:4: rule__XNullLiteral__Group__0
+            // InternalSignalDSL.g:1885:3: ( rule__XNullLiteral__Group__0 )
+            // InternalSignalDSL.g:1885:4: rule__XNullLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__0();
@@ -6263,11 +6347,11 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalSignalDSL.g:1867:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    // InternalSignalDSL.g:1894:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
     public final void entryRuleXNumberLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1868:1: ( ruleXNumberLiteral EOF )
-            // InternalSignalDSL.g:1869:1: ruleXNumberLiteral EOF
+            // InternalSignalDSL.g:1895:1: ( ruleXNumberLiteral EOF )
+            // InternalSignalDSL.g:1896:1: ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralRule()); 
@@ -6297,23 +6381,23 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalSignalDSL.g:1876:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1903:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
     public final void ruleXNumberLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1880:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1881:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1907:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1908:2: ( ( rule__XNumberLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1881:2: ( ( rule__XNumberLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1882:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalSignalDSL.g:1908:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1909:3: ( rule__XNumberLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1883:3: ( rule__XNumberLiteral__Group__0 )
-            // InternalSignalDSL.g:1883:4: rule__XNumberLiteral__Group__0
+            // InternalSignalDSL.g:1910:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalSignalDSL.g:1910:4: rule__XNumberLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__0();
@@ -6348,11 +6432,11 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalSignalDSL.g:1892:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    // InternalSignalDSL.g:1919:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
     public final void entryRuleXStringLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1893:1: ( ruleXStringLiteral EOF )
-            // InternalSignalDSL.g:1894:1: ruleXStringLiteral EOF
+            // InternalSignalDSL.g:1920:1: ( ruleXStringLiteral EOF )
+            // InternalSignalDSL.g:1921:1: ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralRule()); 
@@ -6382,23 +6466,23 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalSignalDSL.g:1901:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1928:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
     public final void ruleXStringLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1905:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1906:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1932:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1933:2: ( ( rule__XStringLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1906:2: ( ( rule__XStringLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1907:3: ( rule__XStringLiteral__Group__0 )
+            // InternalSignalDSL.g:1933:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1934:3: ( rule__XStringLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1908:3: ( rule__XStringLiteral__Group__0 )
-            // InternalSignalDSL.g:1908:4: rule__XStringLiteral__Group__0
+            // InternalSignalDSL.g:1935:3: ( rule__XStringLiteral__Group__0 )
+            // InternalSignalDSL.g:1935:4: rule__XStringLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__0();
@@ -6433,11 +6517,11 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalSignalDSL.g:1917:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    // InternalSignalDSL.g:1944:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
     public final void entryRuleXTypeLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1918:1: ( ruleXTypeLiteral EOF )
-            // InternalSignalDSL.g:1919:1: ruleXTypeLiteral EOF
+            // InternalSignalDSL.g:1945:1: ( ruleXTypeLiteral EOF )
+            // InternalSignalDSL.g:1946:1: ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralRule()); 
@@ -6467,23 +6551,23 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalSignalDSL.g:1926:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1953:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
     public final void ruleXTypeLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1930:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1931:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1957:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1958:2: ( ( rule__XTypeLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1931:2: ( ( rule__XTypeLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1932:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalSignalDSL.g:1958:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1959:3: ( rule__XTypeLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1933:3: ( rule__XTypeLiteral__Group__0 )
-            // InternalSignalDSL.g:1933:4: rule__XTypeLiteral__Group__0
+            // InternalSignalDSL.g:1960:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalSignalDSL.g:1960:4: rule__XTypeLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__0();
@@ -6518,11 +6602,11 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalSignalDSL.g:1942:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    // InternalSignalDSL.g:1969:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
     public final void entryRuleXThrowExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1943:1: ( ruleXThrowExpression EOF )
-            // InternalSignalDSL.g:1944:1: ruleXThrowExpression EOF
+            // InternalSignalDSL.g:1970:1: ( ruleXThrowExpression EOF )
+            // InternalSignalDSL.g:1971:1: ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionRule()); 
@@ -6552,23 +6636,23 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalSignalDSL.g:1951:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1978:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
     public final void ruleXThrowExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1955:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1956:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalSignalDSL.g:1982:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1983:2: ( ( rule__XThrowExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1956:2: ( ( rule__XThrowExpression__Group__0 ) )
-            // InternalSignalDSL.g:1957:3: ( rule__XThrowExpression__Group__0 )
+            // InternalSignalDSL.g:1983:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalSignalDSL.g:1984:3: ( rule__XThrowExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1958:3: ( rule__XThrowExpression__Group__0 )
-            // InternalSignalDSL.g:1958:4: rule__XThrowExpression__Group__0
+            // InternalSignalDSL.g:1985:3: ( rule__XThrowExpression__Group__0 )
+            // InternalSignalDSL.g:1985:4: rule__XThrowExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__0();
@@ -6603,11 +6687,11 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalSignalDSL.g:1967:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    // InternalSignalDSL.g:1994:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
     public final void entryRuleXReturnExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1968:1: ( ruleXReturnExpression EOF )
-            // InternalSignalDSL.g:1969:1: ruleXReturnExpression EOF
+            // InternalSignalDSL.g:1995:1: ( ruleXReturnExpression EOF )
+            // InternalSignalDSL.g:1996:1: ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionRule()); 
@@ -6637,23 +6721,23 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalSignalDSL.g:1976:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:2003:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
     public final void ruleXReturnExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1980:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1981:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalSignalDSL.g:2007:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:2008:2: ( ( rule__XReturnExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1981:2: ( ( rule__XReturnExpression__Group__0 ) )
-            // InternalSignalDSL.g:1982:3: ( rule__XReturnExpression__Group__0 )
+            // InternalSignalDSL.g:2008:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalSignalDSL.g:2009:3: ( rule__XReturnExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1983:3: ( rule__XReturnExpression__Group__0 )
-            // InternalSignalDSL.g:1983:4: rule__XReturnExpression__Group__0
+            // InternalSignalDSL.g:2010:3: ( rule__XReturnExpression__Group__0 )
+            // InternalSignalDSL.g:2010:4: rule__XReturnExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__0();
@@ -6688,11 +6772,11 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:1992:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    // InternalSignalDSL.g:2019:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
     public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1993:1: ( ruleXTryCatchFinallyExpression EOF )
-            // InternalSignalDSL.g:1994:1: ruleXTryCatchFinallyExpression EOF
+            // InternalSignalDSL.g:2020:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalSignalDSL.g:2021:1: ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -6722,23 +6806,23 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:2001:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:2028:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
     public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2005:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:2006:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalSignalDSL.g:2032:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:2033:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:2006:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
-            // InternalSignalDSL.g:2007:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalSignalDSL.g:2033:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalSignalDSL.g:2034:3: ( rule__XTryCatchFinallyExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2008:3: ( rule__XTryCatchFinallyExpression__Group__0 )
-            // InternalSignalDSL.g:2008:4: rule__XTryCatchFinallyExpression__Group__0
+            // InternalSignalDSL.g:2035:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalSignalDSL.g:2035:4: rule__XTryCatchFinallyExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__0();
@@ -6773,11 +6857,11 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalSignalDSL.g:2017:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    // InternalSignalDSL.g:2044:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
     public final void entryRuleXSynchronizedExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2018:1: ( ruleXSynchronizedExpression EOF )
-            // InternalSignalDSL.g:2019:1: ruleXSynchronizedExpression EOF
+            // InternalSignalDSL.g:2045:1: ( ruleXSynchronizedExpression EOF )
+            // InternalSignalDSL.g:2046:1: ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -6807,23 +6891,23 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalSignalDSL.g:2026:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:2053:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
     public final void ruleXSynchronizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2030:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:2031:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:2057:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:2058:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:2031:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
-            // InternalSignalDSL.g:2032:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalSignalDSL.g:2058:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:2059:3: ( rule__XSynchronizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2033:3: ( rule__XSynchronizedExpression__Group__0 )
-            // InternalSignalDSL.g:2033:4: rule__XSynchronizedExpression__Group__0
+            // InternalSignalDSL.g:2060:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalSignalDSL.g:2060:4: rule__XSynchronizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__0();
@@ -6858,11 +6942,11 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalSignalDSL.g:2042:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    // InternalSignalDSL.g:2069:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
     public final void entryRuleXCatchClause() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2043:1: ( ruleXCatchClause EOF )
-            // InternalSignalDSL.g:2044:1: ruleXCatchClause EOF
+            // InternalSignalDSL.g:2070:1: ( ruleXCatchClause EOF )
+            // InternalSignalDSL.g:2071:1: ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseRule()); 
@@ -6892,23 +6976,23 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalSignalDSL.g:2051:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    // InternalSignalDSL.g:2078:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
     public final void ruleXCatchClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2055:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
-            // InternalSignalDSL.g:2056:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalSignalDSL.g:2082:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalSignalDSL.g:2083:2: ( ( rule__XCatchClause__Group__0 ) )
             {
-            // InternalSignalDSL.g:2056:2: ( ( rule__XCatchClause__Group__0 ) )
-            // InternalSignalDSL.g:2057:3: ( rule__XCatchClause__Group__0 )
+            // InternalSignalDSL.g:2083:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalSignalDSL.g:2084:3: ( rule__XCatchClause__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2058:3: ( rule__XCatchClause__Group__0 )
-            // InternalSignalDSL.g:2058:4: rule__XCatchClause__Group__0
+            // InternalSignalDSL.g:2085:3: ( rule__XCatchClause__Group__0 )
+            // InternalSignalDSL.g:2085:4: rule__XCatchClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__0();
@@ -6943,11 +7027,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalSignalDSL.g:2067:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    // InternalSignalDSL.g:2094:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
     public final void entryRuleQualifiedName() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2068:1: ( ruleQualifiedName EOF )
-            // InternalSignalDSL.g:2069:1: ruleQualifiedName EOF
+            // InternalSignalDSL.g:2095:1: ( ruleQualifiedName EOF )
+            // InternalSignalDSL.g:2096:1: ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameRule()); 
@@ -6977,23 +7061,23 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalSignalDSL.g:2076:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    // InternalSignalDSL.g:2103:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
     public final void ruleQualifiedName() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2080:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
-            // InternalSignalDSL.g:2081:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalSignalDSL.g:2107:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalSignalDSL.g:2108:2: ( ( rule__QualifiedName__Group__0 ) )
             {
-            // InternalSignalDSL.g:2081:2: ( ( rule__QualifiedName__Group__0 ) )
-            // InternalSignalDSL.g:2082:3: ( rule__QualifiedName__Group__0 )
+            // InternalSignalDSL.g:2108:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalSignalDSL.g:2109:3: ( rule__QualifiedName__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2083:3: ( rule__QualifiedName__Group__0 )
-            // InternalSignalDSL.g:2083:4: rule__QualifiedName__Group__0
+            // InternalSignalDSL.g:2110:3: ( rule__QualifiedName__Group__0 )
+            // InternalSignalDSL.g:2110:4: rule__QualifiedName__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__0();
@@ -7028,14 +7112,14 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalSignalDSL.g:2092:1: entryRuleNumber : ruleNumber EOF ;
+    // InternalSignalDSL.g:2119:1: entryRuleNumber : ruleNumber EOF ;
     public final void entryRuleNumber() throws RecognitionException {
          
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalSignalDSL.g:2096:1: ( ruleNumber EOF )
-            // InternalSignalDSL.g:2097:1: ruleNumber EOF
+            // InternalSignalDSL.g:2123:1: ( ruleNumber EOF )
+            // InternalSignalDSL.g:2124:1: ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberRule()); 
@@ -7068,24 +7152,24 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalSignalDSL.g:2107:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    // InternalSignalDSL.g:2134:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
     public final void ruleNumber() throws RecognitionException {
 
         		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2112:2: ( ( ( rule__Number__Alternatives ) ) )
-            // InternalSignalDSL.g:2113:2: ( ( rule__Number__Alternatives ) )
+            // InternalSignalDSL.g:2139:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalSignalDSL.g:2140:2: ( ( rule__Number__Alternatives ) )
             {
-            // InternalSignalDSL.g:2113:2: ( ( rule__Number__Alternatives ) )
-            // InternalSignalDSL.g:2114:3: ( rule__Number__Alternatives )
+            // InternalSignalDSL.g:2140:2: ( ( rule__Number__Alternatives ) )
+            // InternalSignalDSL.g:2141:3: ( rule__Number__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2115:3: ( rule__Number__Alternatives )
-            // InternalSignalDSL.g:2115:4: rule__Number__Alternatives
+            // InternalSignalDSL.g:2142:3: ( rule__Number__Alternatives )
+            // InternalSignalDSL.g:2142:4: rule__Number__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives();
@@ -7121,11 +7205,11 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalSignalDSL.g:2125:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    // InternalSignalDSL.g:2152:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
     public final void entryRuleJvmTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2126:1: ( ruleJvmTypeReference EOF )
-            // InternalSignalDSL.g:2127:1: ruleJvmTypeReference EOF
+            // InternalSignalDSL.g:2153:1: ( ruleJvmTypeReference EOF )
+            // InternalSignalDSL.g:2154:1: ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceRule()); 
@@ -7155,23 +7239,23 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalSignalDSL.g:2134:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    // InternalSignalDSL.g:2161:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
     public final void ruleJvmTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2138:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
-            // InternalSignalDSL.g:2139:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2165:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalSignalDSL.g:2166:2: ( ( rule__JvmTypeReference__Alternatives ) )
             {
-            // InternalSignalDSL.g:2139:2: ( ( rule__JvmTypeReference__Alternatives ) )
-            // InternalSignalDSL.g:2140:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalSignalDSL.g:2166:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2167:3: ( rule__JvmTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2141:3: ( rule__JvmTypeReference__Alternatives )
-            // InternalSignalDSL.g:2141:4: rule__JvmTypeReference__Alternatives
+            // InternalSignalDSL.g:2168:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalSignalDSL.g:2168:4: rule__JvmTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Alternatives();
@@ -7206,11 +7290,11 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalSignalDSL.g:2150:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    // InternalSignalDSL.g:2177:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
     public final void entryRuleArrayBrackets() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2151:1: ( ruleArrayBrackets EOF )
-            // InternalSignalDSL.g:2152:1: ruleArrayBrackets EOF
+            // InternalSignalDSL.g:2178:1: ( ruleArrayBrackets EOF )
+            // InternalSignalDSL.g:2179:1: ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsRule()); 
@@ -7240,23 +7324,23 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalSignalDSL.g:2159:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    // InternalSignalDSL.g:2186:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
     public final void ruleArrayBrackets() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2163:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
-            // InternalSignalDSL.g:2164:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalSignalDSL.g:2190:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalSignalDSL.g:2191:2: ( ( rule__ArrayBrackets__Group__0 ) )
             {
-            // InternalSignalDSL.g:2164:2: ( ( rule__ArrayBrackets__Group__0 ) )
-            // InternalSignalDSL.g:2165:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalSignalDSL.g:2191:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalSignalDSL.g:2192:3: ( rule__ArrayBrackets__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2166:3: ( rule__ArrayBrackets__Group__0 )
-            // InternalSignalDSL.g:2166:4: rule__ArrayBrackets__Group__0
+            // InternalSignalDSL.g:2193:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalSignalDSL.g:2193:4: rule__ArrayBrackets__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__0();
@@ -7291,11 +7375,11 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalSignalDSL.g:2175:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    // InternalSignalDSL.g:2202:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
     public final void entryRuleXFunctionTypeRef() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2176:1: ( ruleXFunctionTypeRef EOF )
-            // InternalSignalDSL.g:2177:1: ruleXFunctionTypeRef EOF
+            // InternalSignalDSL.g:2203:1: ( ruleXFunctionTypeRef EOF )
+            // InternalSignalDSL.g:2204:1: ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefRule()); 
@@ -7325,23 +7409,23 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalSignalDSL.g:2184:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    // InternalSignalDSL.g:2211:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
     public final void ruleXFunctionTypeRef() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2188:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
-            // InternalSignalDSL.g:2189:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalSignalDSL.g:2215:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalSignalDSL.g:2216:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
             {
-            // InternalSignalDSL.g:2189:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
-            // InternalSignalDSL.g:2190:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalSignalDSL.g:2216:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalSignalDSL.g:2217:3: ( rule__XFunctionTypeRef__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2191:3: ( rule__XFunctionTypeRef__Group__0 )
-            // InternalSignalDSL.g:2191:4: rule__XFunctionTypeRef__Group__0
+            // InternalSignalDSL.g:2218:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalSignalDSL.g:2218:4: rule__XFunctionTypeRef__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__0();
@@ -7376,11 +7460,11 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:2200:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    // InternalSignalDSL.g:2227:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
     public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2201:1: ( ruleJvmParameterizedTypeReference EOF )
-            // InternalSignalDSL.g:2202:1: ruleJvmParameterizedTypeReference EOF
+            // InternalSignalDSL.g:2228:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalSignalDSL.g:2229:1: ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -7410,23 +7494,23 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:2209:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    // InternalSignalDSL.g:2236:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
     public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2213:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
-            // InternalSignalDSL.g:2214:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2240:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalSignalDSL.g:2241:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
             {
-            // InternalSignalDSL.g:2214:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
-            // InternalSignalDSL.g:2215:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalSignalDSL.g:2241:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2242:3: ( rule__JvmParameterizedTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2216:3: ( rule__JvmParameterizedTypeReference__Group__0 )
-            // InternalSignalDSL.g:2216:4: rule__JvmParameterizedTypeReference__Group__0
+            // InternalSignalDSL.g:2243:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalSignalDSL.g:2243:4: rule__JvmParameterizedTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__0();
@@ -7461,11 +7545,11 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:2225:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    // InternalSignalDSL.g:2252:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
     public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2226:1: ( ruleJvmArgumentTypeReference EOF )
-            // InternalSignalDSL.g:2227:1: ruleJvmArgumentTypeReference EOF
+            // InternalSignalDSL.g:2253:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalSignalDSL.g:2254:1: ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -7495,23 +7579,23 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:2234:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    // InternalSignalDSL.g:2261:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
     public final void ruleJvmArgumentTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2238:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
-            // InternalSignalDSL.g:2239:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2265:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalSignalDSL.g:2266:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
             {
-            // InternalSignalDSL.g:2239:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
-            // InternalSignalDSL.g:2240:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalSignalDSL.g:2266:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2267:3: ( rule__JvmArgumentTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2241:3: ( rule__JvmArgumentTypeReference__Alternatives )
-            // InternalSignalDSL.g:2241:4: rule__JvmArgumentTypeReference__Alternatives
+            // InternalSignalDSL.g:2268:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalSignalDSL.g:2268:4: rule__JvmArgumentTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmArgumentTypeReference__Alternatives();
@@ -7546,11 +7630,11 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:2250:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    // InternalSignalDSL.g:2277:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
     public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2251:1: ( ruleJvmWildcardTypeReference EOF )
-            // InternalSignalDSL.g:2252:1: ruleJvmWildcardTypeReference EOF
+            // InternalSignalDSL.g:2278:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalSignalDSL.g:2279:1: ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -7580,23 +7664,23 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:2259:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    // InternalSignalDSL.g:2286:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
     public final void ruleJvmWildcardTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2263:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
-            // InternalSignalDSL.g:2264:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2290:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalSignalDSL.g:2291:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
             {
-            // InternalSignalDSL.g:2264:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
-            // InternalSignalDSL.g:2265:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalSignalDSL.g:2291:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2292:3: ( rule__JvmWildcardTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2266:3: ( rule__JvmWildcardTypeReference__Group__0 )
-            // InternalSignalDSL.g:2266:4: rule__JvmWildcardTypeReference__Group__0
+            // InternalSignalDSL.g:2293:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalSignalDSL.g:2293:4: rule__JvmWildcardTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__0();
@@ -7631,11 +7715,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalSignalDSL.g:2275:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    // InternalSignalDSL.g:2302:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
     public final void entryRuleJvmUpperBound() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2276:1: ( ruleJvmUpperBound EOF )
-            // InternalSignalDSL.g:2277:1: ruleJvmUpperBound EOF
+            // InternalSignalDSL.g:2303:1: ( ruleJvmUpperBound EOF )
+            // InternalSignalDSL.g:2304:1: ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundRule()); 
@@ -7665,23 +7749,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalSignalDSL.g:2284:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    // InternalSignalDSL.g:2311:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
     public final void ruleJvmUpperBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2288:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
-            // InternalSignalDSL.g:2289:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalSignalDSL.g:2315:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalSignalDSL.g:2316:2: ( ( rule__JvmUpperBound__Group__0 ) )
             {
-            // InternalSignalDSL.g:2289:2: ( ( rule__JvmUpperBound__Group__0 ) )
-            // InternalSignalDSL.g:2290:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalSignalDSL.g:2316:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalSignalDSL.g:2317:3: ( rule__JvmUpperBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2291:3: ( rule__JvmUpperBound__Group__0 )
-            // InternalSignalDSL.g:2291:4: rule__JvmUpperBound__Group__0
+            // InternalSignalDSL.g:2318:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalSignalDSL.g:2318:4: rule__JvmUpperBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__0();
@@ -7716,11 +7800,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:2300:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    // InternalSignalDSL.g:2327:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
     public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2301:1: ( ruleJvmUpperBoundAnded EOF )
-            // InternalSignalDSL.g:2302:1: ruleJvmUpperBoundAnded EOF
+            // InternalSignalDSL.g:2328:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalSignalDSL.g:2329:1: ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -7750,23 +7834,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:2309:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    // InternalSignalDSL.g:2336:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
     public final void ruleJvmUpperBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2313:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
-            // InternalSignalDSL.g:2314:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2340:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalSignalDSL.g:2341:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
             {
-            // InternalSignalDSL.g:2314:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
-            // InternalSignalDSL.g:2315:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2341:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2342:3: ( rule__JvmUpperBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2316:3: ( rule__JvmUpperBoundAnded__Group__0 )
-            // InternalSignalDSL.g:2316:4: rule__JvmUpperBoundAnded__Group__0
+            // InternalSignalDSL.g:2343:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2343:4: rule__JvmUpperBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__0();
@@ -7801,11 +7885,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalSignalDSL.g:2325:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    // InternalSignalDSL.g:2352:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
     public final void entryRuleJvmLowerBound() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2326:1: ( ruleJvmLowerBound EOF )
-            // InternalSignalDSL.g:2327:1: ruleJvmLowerBound EOF
+            // InternalSignalDSL.g:2353:1: ( ruleJvmLowerBound EOF )
+            // InternalSignalDSL.g:2354:1: ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundRule()); 
@@ -7835,23 +7919,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalSignalDSL.g:2334:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    // InternalSignalDSL.g:2361:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
     public final void ruleJvmLowerBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2338:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
-            // InternalSignalDSL.g:2339:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalSignalDSL.g:2365:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalSignalDSL.g:2366:2: ( ( rule__JvmLowerBound__Group__0 ) )
             {
-            // InternalSignalDSL.g:2339:2: ( ( rule__JvmLowerBound__Group__0 ) )
-            // InternalSignalDSL.g:2340:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalSignalDSL.g:2366:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalSignalDSL.g:2367:3: ( rule__JvmLowerBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2341:3: ( rule__JvmLowerBound__Group__0 )
-            // InternalSignalDSL.g:2341:4: rule__JvmLowerBound__Group__0
+            // InternalSignalDSL.g:2368:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalSignalDSL.g:2368:4: rule__JvmLowerBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__0();
@@ -7886,11 +7970,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:2350:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    // InternalSignalDSL.g:2377:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
     public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2351:1: ( ruleJvmLowerBoundAnded EOF )
-            // InternalSignalDSL.g:2352:1: ruleJvmLowerBoundAnded EOF
+            // InternalSignalDSL.g:2378:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalSignalDSL.g:2379:1: ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -7920,23 +8004,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:2359:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    // InternalSignalDSL.g:2386:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
     public final void ruleJvmLowerBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2363:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
-            // InternalSignalDSL.g:2364:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2390:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalSignalDSL.g:2391:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
             {
-            // InternalSignalDSL.g:2364:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
-            // InternalSignalDSL.g:2365:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2391:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2392:3: ( rule__JvmLowerBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2366:3: ( rule__JvmLowerBoundAnded__Group__0 )
-            // InternalSignalDSL.g:2366:4: rule__JvmLowerBoundAnded__Group__0
+            // InternalSignalDSL.g:2393:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2393:4: rule__JvmLowerBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__0();
@@ -7971,11 +8055,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:2375:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    // InternalSignalDSL.g:2402:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
     public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2376:1: ( ruleQualifiedNameWithWildcard EOF )
-            // InternalSignalDSL.g:2377:1: ruleQualifiedNameWithWildcard EOF
+            // InternalSignalDSL.g:2403:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalSignalDSL.g:2404:1: ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -8005,23 +8089,23 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:2384:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    // InternalSignalDSL.g:2411:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
     public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2388:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
-            // InternalSignalDSL.g:2389:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalSignalDSL.g:2415:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalSignalDSL.g:2416:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
             {
-            // InternalSignalDSL.g:2389:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
-            // InternalSignalDSL.g:2390:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalSignalDSL.g:2416:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalSignalDSL.g:2417:3: ( rule__QualifiedNameWithWildcard__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2391:3: ( rule__QualifiedNameWithWildcard__Group__0 )
-            // InternalSignalDSL.g:2391:4: rule__QualifiedNameWithWildcard__Group__0
+            // InternalSignalDSL.g:2418:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalSignalDSL.g:2418:4: rule__QualifiedNameWithWildcard__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__0();
@@ -8056,11 +8140,11 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalSignalDSL.g:2400:1: entryRuleValidID : ruleValidID EOF ;
+    // InternalSignalDSL.g:2427:1: entryRuleValidID : ruleValidID EOF ;
     public final void entryRuleValidID() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2401:1: ( ruleValidID EOF )
-            // InternalSignalDSL.g:2402:1: ruleValidID EOF
+            // InternalSignalDSL.g:2428:1: ( ruleValidID EOF )
+            // InternalSignalDSL.g:2429:1: ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDRule()); 
@@ -8090,17 +8174,17 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalSignalDSL.g:2409:1: ruleValidID : ( RULE_ID ) ;
+    // InternalSignalDSL.g:2436:1: ruleValidID : ( RULE_ID ) ;
     public final void ruleValidID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2413:2: ( ( RULE_ID ) )
-            // InternalSignalDSL.g:2414:2: ( RULE_ID )
+            // InternalSignalDSL.g:2440:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:2441:2: ( RULE_ID )
             {
-            // InternalSignalDSL.g:2414:2: ( RULE_ID )
-            // InternalSignalDSL.g:2415:3: RULE_ID
+            // InternalSignalDSL.g:2441:2: ( RULE_ID )
+            // InternalSignalDSL.g:2442:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
@@ -8131,11 +8215,11 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalSignalDSL.g:2425:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    // InternalSignalDSL.g:2452:1: entryRuleXImportSection : ruleXImportSection EOF ;
     public final void entryRuleXImportSection() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2426:1: ( ruleXImportSection EOF )
-            // InternalSignalDSL.g:2427:1: ruleXImportSection EOF
+            // InternalSignalDSL.g:2453:1: ( ruleXImportSection EOF )
+            // InternalSignalDSL.g:2454:1: ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionRule()); 
@@ -8165,26 +8249,26 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalSignalDSL.g:2434:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    // InternalSignalDSL.g:2461:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
     public final void ruleXImportSection() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2438:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
-            // InternalSignalDSL.g:2439:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalSignalDSL.g:2465:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalSignalDSL.g:2466:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
             {
-            // InternalSignalDSL.g:2439:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
-            // InternalSignalDSL.g:2440:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalSignalDSL.g:2466:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalSignalDSL.g:2467:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
             {
-            // InternalSignalDSL.g:2440:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
-            // InternalSignalDSL.g:2441:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalSignalDSL.g:2467:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalSignalDSL.g:2468:4: ( rule__XImportSection__ImportDeclarationsAssignment )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalSignalDSL.g:2442:4: ( rule__XImportSection__ImportDeclarationsAssignment )
-            // InternalSignalDSL.g:2442:5: rule__XImportSection__ImportDeclarationsAssignment
+            // InternalSignalDSL.g:2469:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalSignalDSL.g:2469:5: rule__XImportSection__ImportDeclarationsAssignment
             {
             pushFollow(FOLLOW_3);
             rule__XImportSection__ImportDeclarationsAssignment();
@@ -8200,13 +8284,13 @@
 
             }
 
-            // InternalSignalDSL.g:2445:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
-            // InternalSignalDSL.g:2446:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalSignalDSL.g:2472:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalSignalDSL.g:2473:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalSignalDSL.g:2447:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalSignalDSL.g:2474:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             loop1:
             do {
                 int alt1=2;
@@ -8219,7 +8303,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // InternalSignalDSL.g:2447:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    // InternalSignalDSL.g:2474:5: rule__XImportSection__ImportDeclarationsAssignment
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__XImportSection__ImportDeclarationsAssignment();
@@ -8263,11 +8347,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:2457:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    // InternalSignalDSL.g:2484:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
     public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2458:1: ( ruleQualifiedNameInStaticImport EOF )
-            // InternalSignalDSL.g:2459:1: ruleQualifiedNameInStaticImport EOF
+            // InternalSignalDSL.g:2485:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalSignalDSL.g:2486:1: ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -8297,26 +8381,26 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:2466:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    // InternalSignalDSL.g:2493:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
     public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2470:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
-            // InternalSignalDSL.g:2471:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalSignalDSL.g:2497:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalSignalDSL.g:2498:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
             {
-            // InternalSignalDSL.g:2471:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
-            // InternalSignalDSL.g:2472:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalSignalDSL.g:2498:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalSignalDSL.g:2499:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
             {
-            // InternalSignalDSL.g:2472:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
-            // InternalSignalDSL.g:2473:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalSignalDSL.g:2499:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalSignalDSL.g:2500:4: ( rule__QualifiedNameInStaticImport__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2474:4: ( rule__QualifiedNameInStaticImport__Group__0 )
-            // InternalSignalDSL.g:2474:5: rule__QualifiedNameInStaticImport__Group__0
+            // InternalSignalDSL.g:2501:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalSignalDSL.g:2501:5: rule__QualifiedNameInStaticImport__Group__0
             {
             pushFollow(FOLLOW_4);
             rule__QualifiedNameInStaticImport__Group__0();
@@ -8332,13 +8416,13 @@
 
             }
 
-            // InternalSignalDSL.g:2477:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
-            // InternalSignalDSL.g:2478:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalSignalDSL.g:2504:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalSignalDSL.g:2505:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2479:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalSignalDSL.g:2506:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             loop2:
             do {
                 int alt2=2;
@@ -8357,7 +8441,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // InternalSignalDSL.g:2479:5: rule__QualifiedNameInStaticImport__Group__0
+            	    // InternalSignalDSL.g:2506:5: rule__QualifiedNameInStaticImport__Group__0
             	    {
             	    pushFollow(FOLLOW_4);
             	    rule__QualifiedNameInStaticImport__Group__0();
@@ -8401,23 +8485,23 @@
 
 
     // $ANTLR start "ruleSignalActionEnum"
-    // InternalSignalDSL.g:2489:1: ruleSignalActionEnum : ( ( rule__SignalActionEnum__Alternatives ) ) ;
+    // InternalSignalDSL.g:2516:1: ruleSignalActionEnum : ( ( rule__SignalActionEnum__Alternatives ) ) ;
     public final void ruleSignalActionEnum() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2493:1: ( ( ( rule__SignalActionEnum__Alternatives ) ) )
-            // InternalSignalDSL.g:2494:2: ( ( rule__SignalActionEnum__Alternatives ) )
+            // InternalSignalDSL.g:2520:1: ( ( ( rule__SignalActionEnum__Alternatives ) ) )
+            // InternalSignalDSL.g:2521:2: ( ( rule__SignalActionEnum__Alternatives ) )
             {
-            // InternalSignalDSL.g:2494:2: ( ( rule__SignalActionEnum__Alternatives ) )
-            // InternalSignalDSL.g:2495:3: ( rule__SignalActionEnum__Alternatives )
+            // InternalSignalDSL.g:2521:2: ( ( rule__SignalActionEnum__Alternatives ) )
+            // InternalSignalDSL.g:2522:3: ( rule__SignalActionEnum__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalActionEnumAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2496:3: ( rule__SignalActionEnum__Alternatives )
-            // InternalSignalDSL.g:2496:4: rule__SignalActionEnum__Alternatives
+            // InternalSignalDSL.g:2523:3: ( rule__SignalActionEnum__Alternatives )
+            // InternalSignalDSL.g:2523:4: rule__SignalActionEnum__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__SignalActionEnum__Alternatives();
@@ -8452,23 +8536,23 @@
 
 
     // $ANTLR start "ruleSignalExecutionTypeEnum"
-    // InternalSignalDSL.g:2505:1: ruleSignalExecutionTypeEnum : ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) ;
+    // InternalSignalDSL.g:2532:1: ruleSignalExecutionTypeEnum : ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) ;
     public final void ruleSignalExecutionTypeEnum() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2509:1: ( ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) )
-            // InternalSignalDSL.g:2510:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
+            // InternalSignalDSL.g:2536:1: ( ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) )
+            // InternalSignalDSL.g:2537:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
             {
-            // InternalSignalDSL.g:2510:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
-            // InternalSignalDSL.g:2511:3: ( rule__SignalExecutionTypeEnum__Alternatives )
+            // InternalSignalDSL.g:2537:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
+            // InternalSignalDSL.g:2538:3: ( rule__SignalExecutionTypeEnum__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalExecutionTypeEnumAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2512:3: ( rule__SignalExecutionTypeEnum__Alternatives )
-            // InternalSignalDSL.g:2512:4: rule__SignalExecutionTypeEnum__Alternatives
+            // InternalSignalDSL.g:2539:3: ( rule__SignalExecutionTypeEnum__Alternatives )
+            // InternalSignalDSL.g:2539:4: rule__SignalExecutionTypeEnum__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__SignalExecutionTypeEnum__Alternatives();
@@ -8503,23 +8587,23 @@
 
 
     // $ANTLR start "ruleDayOfWeekEnum"
-    // InternalSignalDSL.g:2521:1: ruleDayOfWeekEnum : ( ( rule__DayOfWeekEnum__Alternatives ) ) ;
+    // InternalSignalDSL.g:2548:1: ruleDayOfWeekEnum : ( ( rule__DayOfWeekEnum__Alternatives ) ) ;
     public final void ruleDayOfWeekEnum() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2525:1: ( ( ( rule__DayOfWeekEnum__Alternatives ) ) )
-            // InternalSignalDSL.g:2526:2: ( ( rule__DayOfWeekEnum__Alternatives ) )
+            // InternalSignalDSL.g:2552:1: ( ( ( rule__DayOfWeekEnum__Alternatives ) ) )
+            // InternalSignalDSL.g:2553:2: ( ( rule__DayOfWeekEnum__Alternatives ) )
             {
-            // InternalSignalDSL.g:2526:2: ( ( rule__DayOfWeekEnum__Alternatives ) )
-            // InternalSignalDSL.g:2527:3: ( rule__DayOfWeekEnum__Alternatives )
+            // InternalSignalDSL.g:2553:2: ( ( rule__DayOfWeekEnum__Alternatives ) )
+            // InternalSignalDSL.g:2554:3: ( rule__DayOfWeekEnum__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDayOfWeekEnumAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2528:3: ( rule__DayOfWeekEnum__Alternatives )
-            // InternalSignalDSL.g:2528:4: rule__DayOfWeekEnum__Alternatives
+            // InternalSignalDSL.g:2555:3: ( rule__DayOfWeekEnum__Alternatives )
+            // InternalSignalDSL.g:2555:4: rule__DayOfWeekEnum__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__DayOfWeekEnum__Alternatives();
@@ -8553,21 +8637,21 @@
     // $ANTLR end "ruleDayOfWeekEnum"
 
 
-    // $ANTLR start "rule__TriggerPolicy__Alternatives"
-    // InternalSignalDSL.g:2536:1: rule__TriggerPolicy__Alternatives : ( ( ruleTriggerFile ) | ( ruleSignalScheduler ) );
-    public final void rule__TriggerPolicy__Alternatives() throws RecognitionException {
+    // $ANTLR start "rule__SignalDefinition__Alternatives"
+    // InternalSignalDSL.g:2563:1: rule__SignalDefinition__Alternatives : ( ( ruleSignalWatcher ) | ( ruleSignalScheduler ) );
+    public final void rule__SignalDefinition__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2540:1: ( ( ruleTriggerFile ) | ( ruleSignalScheduler ) )
+            // InternalSignalDSL.g:2567:1: ( ( ruleSignalWatcher ) | ( ruleSignalScheduler ) )
             int alt3=2;
             int LA3_0 = input.LA(1);
 
-            if ( (LA3_0==68) ) {
+            if ( (LA3_0==64) ) {
                 alt3=1;
             }
-            else if ( (LA3_0==69) ) {
+            else if ( (LA3_0==68) ) {
                 alt3=2;
             }
             else {
@@ -8579,21 +8663,21 @@
             }
             switch (alt3) {
                 case 1 :
-                    // InternalSignalDSL.g:2541:2: ( ruleTriggerFile )
+                    // InternalSignalDSL.g:2568:2: ( ruleSignalWatcher )
                     {
-                    // InternalSignalDSL.g:2541:2: ( ruleTriggerFile )
-                    // InternalSignalDSL.g:2542:3: ruleTriggerFile
+                    // InternalSignalDSL.g:2568:2: ( ruleSignalWatcher )
+                    // InternalSignalDSL.g:2569:3: ruleSignalWatcher
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); 
+                       before(grammarAccess.getSignalDefinitionAccess().getSignalWatcherParserRuleCall_0()); 
                     }
                     pushFollow(FOLLOW_2);
-                    ruleTriggerFile();
+                    ruleSignalWatcher();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); 
+                       after(grammarAccess.getSignalDefinitionAccess().getSignalWatcherParserRuleCall_0()); 
                     }
 
                     }
@@ -8602,13 +8686,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2547:2: ( ruleSignalScheduler )
+                    // InternalSignalDSL.g:2574:2: ( ruleSignalScheduler )
                     {
-                    // InternalSignalDSL.g:2547:2: ( ruleSignalScheduler )
-                    // InternalSignalDSL.g:2548:3: ruleSignalScheduler
+                    // InternalSignalDSL.g:2574:2: ( ruleSignalScheduler )
+                    // InternalSignalDSL.g:2575:3: ruleSignalScheduler
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); 
+                       before(grammarAccess.getSignalDefinitionAccess().getSignalSchedulerParserRuleCall_1()); 
                     }
                     pushFollow(FOLLOW_2);
                     ruleSignalScheduler();
@@ -8616,7 +8700,7 @@
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); 
+                       after(grammarAccess.getSignalDefinitionAccess().getSignalSchedulerParserRuleCall_1()); 
                     }
 
                     }
@@ -8638,69 +8722,50 @@
         }
         return ;
     }
-    // $ANTLR end "rule__TriggerPolicy__Alternatives"
+    // $ANTLR end "rule__SignalDefinition__Alternatives"
 
 
-    // $ANTLR start "rule__Scheduler__Alternatives"
-    // InternalSignalDSL.g:2557:1: rule__Scheduler__Alternatives : ( ( ruleCronScheduler ) | ( ruleHourlyScheduler ) | ( ruleDailyScheduler ) | ( ruleWeeklyScheduler ) | ( ruleMonthlyScheduler ) );
-    public final void rule__Scheduler__Alternatives() throws RecognitionException {
+    // $ANTLR start "rule__WatcherDefinition__Alternatives"
+    // InternalSignalDSL.g:2584:1: rule__WatcherDefinition__Alternatives : ( ( ruleWatcherWithFileMask ) | ( ruleWatcherWithFileName ) );
+    public final void rule__WatcherDefinition__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2561:1: ( ( ruleCronScheduler ) | ( ruleHourlyScheduler ) | ( ruleDailyScheduler ) | ( ruleWeeklyScheduler ) | ( ruleMonthlyScheduler ) )
-            int alt4=5;
-            switch ( input.LA(1) ) {
-            case 70:
-                {
+            // InternalSignalDSL.g:2588:1: ( ( ruleWatcherWithFileMask ) | ( ruleWatcherWithFileName ) )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==65) ) {
                 alt4=1;
-                }
-                break;
-            case 71:
-                {
+            }
+            else if ( (LA4_0==67) ) {
                 alt4=2;
-                }
-                break;
-            case 72:
-                {
-                alt4=3;
-                }
-                break;
-            case 74:
-                {
-                alt4=4;
-                }
-                break;
-            case 76:
-                {
-                alt4=5;
-                }
-                break;
-            default:
+            }
+            else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
                     new NoViableAltException("", 4, 0, input);
 
                 throw nvae;
             }
-
             switch (alt4) {
                 case 1 :
-                    // InternalSignalDSL.g:2562:2: ( ruleCronScheduler )
+                    // InternalSignalDSL.g:2589:2: ( ruleWatcherWithFileMask )
                     {
-                    // InternalSignalDSL.g:2562:2: ( ruleCronScheduler )
-                    // InternalSignalDSL.g:2563:3: ruleCronScheduler
+                    // InternalSignalDSL.g:2589:2: ( ruleWatcherWithFileMask )
+                    // InternalSignalDSL.g:2590:3: ruleWatcherWithFileMask
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); 
+                       before(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileMaskParserRuleCall_0()); 
                     }
                     pushFollow(FOLLOW_2);
-                    ruleCronScheduler();
+                    ruleWatcherWithFileMask();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); 
+                       after(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileMaskParserRuleCall_0()); 
                     }
 
                     }
@@ -8709,13 +8774,120 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2568:2: ( ruleHourlyScheduler )
+                    // InternalSignalDSL.g:2595:2: ( ruleWatcherWithFileName )
                     {
-                    // InternalSignalDSL.g:2568:2: ( ruleHourlyScheduler )
-                    // InternalSignalDSL.g:2569:3: ruleHourlyScheduler
+                    // InternalSignalDSL.g:2595:2: ( ruleWatcherWithFileName )
+                    // InternalSignalDSL.g:2596:3: ruleWatcherWithFileName
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); 
+                       before(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileNameParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleWatcherWithFileName();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileNameParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherDefinition__Alternatives"
+
+
+    // $ANTLR start "rule__SchedulerType__Alternatives"
+    // InternalSignalDSL.g:2605:1: rule__SchedulerType__Alternatives : ( ( ruleCronScheduler ) | ( ruleHourlyScheduler ) | ( ruleDailyScheduler ) | ( ruleWeeklyScheduler ) | ( ruleMonthlyScheduler ) );
+    public final void rule__SchedulerType__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:2609:1: ( ( ruleCronScheduler ) | ( ruleHourlyScheduler ) | ( ruleDailyScheduler ) | ( ruleWeeklyScheduler ) | ( ruleMonthlyScheduler ) )
+            int alt5=5;
+            switch ( input.LA(1) ) {
+            case 69:
+                {
+                alt5=1;
+                }
+                break;
+            case 70:
+                {
+                alt5=2;
+                }
+                break;
+            case 71:
+                {
+                alt5=3;
+                }
+                break;
+            case 73:
+                {
+                alt5=4;
+                }
+                break;
+            case 75:
+                {
+                alt5=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // InternalSignalDSL.g:2610:2: ( ruleCronScheduler )
+                    {
+                    // InternalSignalDSL.g:2610:2: ( ruleCronScheduler )
+                    // InternalSignalDSL.g:2611:3: ruleCronScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSchedulerTypeAccess().getCronSchedulerParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleCronScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSchedulerTypeAccess().getCronSchedulerParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalSignalDSL.g:2616:2: ( ruleHourlyScheduler )
+                    {
+                    // InternalSignalDSL.g:2616:2: ( ruleHourlyScheduler )
+                    // InternalSignalDSL.g:2617:3: ruleHourlyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSchedulerTypeAccess().getHourlySchedulerParserRuleCall_1()); 
                     }
                     pushFollow(FOLLOW_2);
                     ruleHourlyScheduler();
@@ -8723,7 +8895,7 @@
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); 
+                       after(grammarAccess.getSchedulerTypeAccess().getHourlySchedulerParserRuleCall_1()); 
                     }
 
                     }
@@ -8732,13 +8904,13 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2574:2: ( ruleDailyScheduler )
+                    // InternalSignalDSL.g:2622:2: ( ruleDailyScheduler )
                     {
-                    // InternalSignalDSL.g:2574:2: ( ruleDailyScheduler )
-                    // InternalSignalDSL.g:2575:3: ruleDailyScheduler
+                    // InternalSignalDSL.g:2622:2: ( ruleDailyScheduler )
+                    // InternalSignalDSL.g:2623:3: ruleDailyScheduler
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); 
+                       before(grammarAccess.getSchedulerTypeAccess().getDailySchedulerParserRuleCall_2()); 
                     }
                     pushFollow(FOLLOW_2);
                     ruleDailyScheduler();
@@ -8746,7 +8918,7 @@
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); 
+                       after(grammarAccess.getSchedulerTypeAccess().getDailySchedulerParserRuleCall_2()); 
                     }
 
                     }
@@ -8755,13 +8927,13 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2580:2: ( ruleWeeklyScheduler )
+                    // InternalSignalDSL.g:2628:2: ( ruleWeeklyScheduler )
                     {
-                    // InternalSignalDSL.g:2580:2: ( ruleWeeklyScheduler )
-                    // InternalSignalDSL.g:2581:3: ruleWeeklyScheduler
+                    // InternalSignalDSL.g:2628:2: ( ruleWeeklyScheduler )
+                    // InternalSignalDSL.g:2629:3: ruleWeeklyScheduler
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); 
+                       before(grammarAccess.getSchedulerTypeAccess().getWeeklySchedulerParserRuleCall_3()); 
                     }
                     pushFollow(FOLLOW_2);
                     ruleWeeklyScheduler();
@@ -8769,7 +8941,7 @@
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); 
+                       after(grammarAccess.getSchedulerTypeAccess().getWeeklySchedulerParserRuleCall_3()); 
                     }
 
                     }
@@ -8778,13 +8950,13 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:2586:2: ( ruleMonthlyScheduler )
+                    // InternalSignalDSL.g:2634:2: ( ruleMonthlyScheduler )
                     {
-                    // InternalSignalDSL.g:2586:2: ( ruleMonthlyScheduler )
-                    // InternalSignalDSL.g:2587:3: ruleMonthlyScheduler
+                    // InternalSignalDSL.g:2634:2: ( ruleMonthlyScheduler )
+                    // InternalSignalDSL.g:2635:3: ruleMonthlyScheduler
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); 
+                       before(grammarAccess.getSchedulerTypeAccess().getMonthlySchedulerParserRuleCall_4()); 
                     }
                     pushFollow(FOLLOW_2);
                     ruleMonthlyScheduler();
@@ -8792,7 +8964,7 @@
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); 
+                       after(grammarAccess.getSchedulerTypeAccess().getMonthlySchedulerParserRuleCall_4()); 
                     }
 
                     }
@@ -8814,31 +8986,31 @@
         }
         return ;
     }
-    // $ANTLR end "rule__Scheduler__Alternatives"
+    // $ANTLR end "rule__SchedulerType__Alternatives"
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
-    // InternalSignalDSL.g:2596:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
+    // InternalSignalDSL.g:2644:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2600:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
-            int alt5=4;
-            alt5 = dfa5.predict(input);
-            switch (alt5) {
+            // InternalSignalDSL.g:2648:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt6=4;
+            alt6 = dfa6.predict(input);
+            switch (alt6) {
                 case 1 :
-                    // InternalSignalDSL.g:2601:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:2649:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2601:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:2602:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:2649:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:2650:3: ( rule__XImportDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:2603:3: ( rule__XImportDeclaration__Group_2_0__0 )
-                    // InternalSignalDSL.g:2603:4: rule__XImportDeclaration__Group_2_0__0
+                    // InternalSignalDSL.g:2651:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:2651:4: rule__XImportDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_0__0();
@@ -8858,16 +9030,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2607:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalSignalDSL.g:2655:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
                     {
-                    // InternalSignalDSL.g:2607:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
-                    // InternalSignalDSL.g:2608:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalSignalDSL.g:2655:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalSignalDSL.g:2656:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
                     }
-                    // InternalSignalDSL.g:2609:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
-                    // InternalSignalDSL.g:2609:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    // InternalSignalDSL.g:2657:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalSignalDSL.g:2657:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedTypeAssignment_2_1();
@@ -8887,16 +9059,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2613:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalSignalDSL.g:2661:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
                     {
-                    // InternalSignalDSL.g:2613:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
-                    // InternalSignalDSL.g:2614:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalSignalDSL.g:2661:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalSignalDSL.g:2662:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
                     }
-                    // InternalSignalDSL.g:2615:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
-                    // InternalSignalDSL.g:2615:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    // InternalSignalDSL.g:2663:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalSignalDSL.g:2663:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
@@ -8916,16 +9088,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2619:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalSignalDSL.g:2667:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
                     {
-                    // InternalSignalDSL.g:2619:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
-                    // InternalSignalDSL.g:2620:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalSignalDSL.g:2667:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalSignalDSL.g:2668:3: ( rule__XImportDeclaration__Group_2_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
                     }
-                    // InternalSignalDSL.g:2621:3: ( rule__XImportDeclaration__Group_2_3__0 )
-                    // InternalSignalDSL.g:2621:4: rule__XImportDeclaration__Group_2_3__0
+                    // InternalSignalDSL.g:2669:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalSignalDSL.g:2669:4: rule__XImportDeclaration__Group_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_3__0();
@@ -8962,41 +9134,41 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
-    // InternalSignalDSL.g:2629:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    // InternalSignalDSL.g:2677:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2633:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
-            int alt6=2;
-            int LA6_0 = input.LA(1);
+            // InternalSignalDSL.g:2681:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt7=2;
+            int LA7_0 = input.LA(1);
 
-            if ( (LA6_0==36) ) {
-                alt6=1;
+            if ( (LA7_0==36) ) {
+                alt7=1;
             }
-            else if ( (LA6_0==RULE_ID) ) {
-                alt6=2;
+            else if ( (LA7_0==RULE_ID) ) {
+                alt7=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 6, 0, input);
+                    new NoViableAltException("", 7, 0, input);
 
                 throw nvae;
             }
-            switch (alt6) {
+            switch (alt7) {
                 case 1 :
-                    // InternalSignalDSL.g:2634:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalSignalDSL.g:2682:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
                     {
-                    // InternalSignalDSL.g:2634:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
-                    // InternalSignalDSL.g:2635:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalSignalDSL.g:2682:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalSignalDSL.g:2683:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
                     }
-                    // InternalSignalDSL.g:2636:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
-                    // InternalSignalDSL.g:2636:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    // InternalSignalDSL.g:2684:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalSignalDSL.g:2684:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
@@ -9016,16 +9188,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2640:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalSignalDSL.g:2688:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
                     {
-                    // InternalSignalDSL.g:2640:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
-                    // InternalSignalDSL.g:2641:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalSignalDSL.g:2688:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalSignalDSL.g:2689:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
                     }
-                    // InternalSignalDSL.g:2642:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
-                    // InternalSignalDSL.g:2642:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    // InternalSignalDSL.g:2690:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalSignalDSL.g:2690:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
@@ -9062,27 +9234,27 @@
 
 
     // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
-    // InternalSignalDSL.g:2650:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    // InternalSignalDSL.g:2698:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
     public final void rule__XAnnotation__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2654:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
-            int alt7=2;
-            alt7 = dfa7.predict(input);
-            switch (alt7) {
+            // InternalSignalDSL.g:2702:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt8=2;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
                 case 1 :
-                    // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalSignalDSL.g:2703:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-                    // InternalSignalDSL.g:2656:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalSignalDSL.g:2703:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalSignalDSL.g:2704:3: ( rule__XAnnotation__Group_3_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
                     }
-                    // InternalSignalDSL.g:2657:3: ( rule__XAnnotation__Group_3_1_0__0 )
-                    // InternalSignalDSL.g:2657:4: rule__XAnnotation__Group_3_1_0__0
+                    // InternalSignalDSL.g:2705:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalSignalDSL.g:2705:4: rule__XAnnotation__Group_3_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3_1_0__0();
@@ -9102,16 +9274,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2661:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalSignalDSL.g:2709:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
                     {
-                    // InternalSignalDSL.g:2661:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
-                    // InternalSignalDSL.g:2662:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalSignalDSL.g:2709:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalSignalDSL.g:2710:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
                     }
-                    // InternalSignalDSL.g:2663:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
-                    // InternalSignalDSL.g:2663:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    // InternalSignalDSL.g:2711:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalSignalDSL.g:2711:4: rule__XAnnotation__ValueAssignment_3_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__ValueAssignment_3_1_1();
@@ -9148,27 +9320,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
-    // InternalSignalDSL.g:2671:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    // InternalSignalDSL.g:2719:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
     public final void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2675:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
-            int alt8=2;
-            alt8 = dfa8.predict(input);
-            switch (alt8) {
+            // InternalSignalDSL.g:2723:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt9=2;
+            alt9 = dfa9.predict(input);
+            switch (alt9) {
                 case 1 :
-                    // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalSignalDSL.g:2724:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-                    // InternalSignalDSL.g:2677:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalSignalDSL.g:2724:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalSignalDSL.g:2725:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:2678:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-                    // InternalSignalDSL.g:2678:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    // InternalSignalDSL.g:2726:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalSignalDSL.g:2726:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -9188,16 +9360,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2682:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalSignalDSL.g:2730:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2682:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
-                    // InternalSignalDSL.g:2683:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalSignalDSL.g:2730:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalSignalDSL.g:2731:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:2684:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
-                    // InternalSignalDSL.g:2684:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    // InternalSignalDSL.g:2732:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalSignalDSL.g:2732:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1__0();
@@ -9234,27 +9406,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
-    // InternalSignalDSL.g:2692:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    // InternalSignalDSL.g:2740:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
     public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2696:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
-            int alt9=2;
-            alt9 = dfa9.predict(input);
-            switch (alt9) {
+            // InternalSignalDSL.g:2744:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt10=2;
+            alt10 = dfa10.predict(input);
+            switch (alt10) {
                 case 1 :
-                    // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalSignalDSL.g:2745:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-                    // InternalSignalDSL.g:2698:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalSignalDSL.g:2745:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalSignalDSL.g:2746:3: ( rule__XAnnotationElementValue__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:2699:3: ( rule__XAnnotationElementValue__Group_0__0 )
-                    // InternalSignalDSL.g:2699:4: rule__XAnnotationElementValue__Group_0__0
+                    // InternalSignalDSL.g:2747:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalSignalDSL.g:2747:4: rule__XAnnotationElementValue__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0__0();
@@ -9274,10 +9446,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2703:2: ( ruleXAnnotationOrExpression )
+                    // InternalSignalDSL.g:2751:2: ( ruleXAnnotationOrExpression )
                     {
-                    // InternalSignalDSL.g:2703:2: ( ruleXAnnotationOrExpression )
-                    // InternalSignalDSL.g:2704:3: ruleXAnnotationOrExpression
+                    // InternalSignalDSL.g:2751:2: ( ruleXAnnotationOrExpression )
+                    // InternalSignalDSL.g:2752:3: ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
@@ -9314,35 +9486,35 @@
 
 
     // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
-    // InternalSignalDSL.g:2713:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    // InternalSignalDSL.g:2761:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
     public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2717:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
-            int alt10=2;
-            int LA10_0 = input.LA(1);
+            // InternalSignalDSL.g:2765:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
 
-            if ( (LA10_0==79) ) {
-                alt10=1;
+            if ( (LA11_0==77) ) {
+                alt11=1;
             }
-            else if ( ((LA10_0>=RULE_ID && LA10_0<=RULE_STRING)||LA10_0==27||(LA10_0>=34 && LA10_0<=35)||LA10_0==40||(LA10_0>=45 && LA10_0<=50)||LA10_0==63||LA10_0==80||(LA10_0>=84 && LA10_0<=85)||LA10_0==88||LA10_0==90||(LA10_0>=93 && LA10_0<=101)||LA10_0==103||LA10_0==112) ) {
-                alt10=2;
+            else if ( ((LA11_0>=RULE_ID && LA11_0<=RULE_STRING)||LA11_0==27||(LA11_0>=34 && LA11_0<=35)||LA11_0==40||(LA11_0>=45 && LA11_0<=50)||LA11_0==62||LA11_0==78||(LA11_0>=82 && LA11_0<=83)||LA11_0==86||LA11_0==88||(LA11_0>=91 && LA11_0<=99)||LA11_0==101||LA11_0==111) ) {
+                alt11=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 10, 0, input);
+                    new NoViableAltException("", 11, 0, input);
 
                 throw nvae;
             }
-            switch (alt10) {
+            switch (alt11) {
                 case 1 :
-                    // InternalSignalDSL.g:2718:2: ( ruleXAnnotation )
+                    // InternalSignalDSL.g:2766:2: ( ruleXAnnotation )
                     {
-                    // InternalSignalDSL.g:2718:2: ( ruleXAnnotation )
-                    // InternalSignalDSL.g:2719:3: ruleXAnnotation
+                    // InternalSignalDSL.g:2766:2: ( ruleXAnnotation )
+                    // InternalSignalDSL.g:2767:3: ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
@@ -9362,10 +9534,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2724:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:2772:2: ( ruleXExpression )
                     {
-                    // InternalSignalDSL.g:2724:2: ( ruleXExpression )
-                    // InternalSignalDSL.g:2725:3: ruleXExpression
+                    // InternalSignalDSL.g:2772:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:2773:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -9402,29 +9574,29 @@
 
 
     // $ANTLR start "rule__XAssignment__Alternatives"
-    // InternalSignalDSL.g:2734:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    // InternalSignalDSL.g:2782:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
     public final void rule__XAssignment__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2738:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
-            int alt11=2;
+            // InternalSignalDSL.g:2786:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt12=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA11_1 = input.LA(2);
+                int LA12_1 = input.LA(2);
 
-                if ( (LA11_1==13) ) {
-                    alt11=1;
+                if ( (LA12_1==13) ) {
+                    alt12=1;
                 }
-                else if ( (LA11_1==EOF||(LA11_1>=RULE_ID && LA11_1<=RULE_STRING)||(LA11_1>=14 && LA11_1<=50)||(LA11_1>=63 && LA11_1<=64)||LA11_1==73||LA11_1==78||(LA11_1>=80 && LA11_1<=104)||(LA11_1>=108 && LA11_1<=109)||(LA11_1>=111 && LA11_1<=112)) ) {
-                    alt11=2;
+                else if ( (LA12_1==EOF||(LA12_1>=RULE_ID && LA12_1<=RULE_STRING)||(LA12_1>=14 && LA12_1<=50)||(LA12_1>=62 && LA12_1<=63)||LA12_1==72||LA12_1==76||(LA12_1>=78 && LA12_1<=102)||(LA12_1>=107 && LA12_1<=108)||(LA12_1>=110 && LA12_1<=111)) ) {
+                    alt12=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 11, 1, input);
+                        new NoViableAltException("", 12, 1, input);
 
                     throw nvae;
                 }
@@ -9432,18 +9604,18 @@
                 break;
             case 45:
                 {
-                int LA11_2 = input.LA(2);
+                int LA12_2 = input.LA(2);
 
-                if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_STRING)||(LA11_2>=14 && LA11_2<=50)||(LA11_2>=63 && LA11_2<=64)||LA11_2==73||LA11_2==78||(LA11_2>=80 && LA11_2<=104)||(LA11_2>=108 && LA11_2<=109)||(LA11_2>=111 && LA11_2<=112)) ) {
-                    alt11=2;
+                if ( (LA12_2==13) ) {
+                    alt12=1;
                 }
-                else if ( (LA11_2==13) ) {
-                    alt11=1;
+                else if ( (LA12_2==EOF||(LA12_2>=RULE_ID && LA12_2<=RULE_STRING)||(LA12_2>=14 && LA12_2<=50)||(LA12_2>=62 && LA12_2<=63)||LA12_2==72||LA12_2==76||(LA12_2>=78 && LA12_2<=102)||(LA12_2>=107 && LA12_2<=108)||(LA12_2>=110 && LA12_2<=111)) ) {
+                    alt12=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 11, 2, input);
+                        new NoViableAltException("", 12, 2, input);
 
                     throw nvae;
                 }
@@ -9451,18 +9623,18 @@
                 break;
             case 46:
                 {
-                int LA11_3 = input.LA(2);
+                int LA12_3 = input.LA(2);
 
-                if ( (LA11_3==13) ) {
-                    alt11=1;
+                if ( (LA12_3==EOF||(LA12_3>=RULE_ID && LA12_3<=RULE_STRING)||(LA12_3>=14 && LA12_3<=50)||(LA12_3>=62 && LA12_3<=63)||LA12_3==72||LA12_3==76||(LA12_3>=78 && LA12_3<=102)||(LA12_3>=107 && LA12_3<=108)||(LA12_3>=110 && LA12_3<=111)) ) {
+                    alt12=2;
                 }
-                else if ( (LA11_3==EOF||(LA11_3>=RULE_ID && LA11_3<=RULE_STRING)||(LA11_3>=14 && LA11_3<=50)||(LA11_3>=63 && LA11_3<=64)||LA11_3==73||LA11_3==78||(LA11_3>=80 && LA11_3<=104)||(LA11_3>=108 && LA11_3<=109)||(LA11_3>=111 && LA11_3<=112)) ) {
-                    alt11=2;
+                else if ( (LA12_3==13) ) {
+                    alt12=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 11, 3, input);
+                        new NoViableAltException("", 12, 3, input);
 
                     throw nvae;
                 }
@@ -9470,18 +9642,18 @@
                 break;
             case 47:
                 {
-                int LA11_4 = input.LA(2);
+                int LA12_4 = input.LA(2);
 
-                if ( (LA11_4==13) ) {
-                    alt11=1;
+                if ( (LA12_4==EOF||(LA12_4>=RULE_ID && LA12_4<=RULE_STRING)||(LA12_4>=14 && LA12_4<=50)||(LA12_4>=62 && LA12_4<=63)||LA12_4==72||LA12_4==76||(LA12_4>=78 && LA12_4<=102)||(LA12_4>=107 && LA12_4<=108)||(LA12_4>=110 && LA12_4<=111)) ) {
+                    alt12=2;
                 }
-                else if ( (LA11_4==EOF||(LA11_4>=RULE_ID && LA11_4<=RULE_STRING)||(LA11_4>=14 && LA11_4<=50)||(LA11_4>=63 && LA11_4<=64)||LA11_4==73||LA11_4==78||(LA11_4>=80 && LA11_4<=104)||(LA11_4>=108 && LA11_4<=109)||(LA11_4>=111 && LA11_4<=112)) ) {
-                    alt11=2;
+                else if ( (LA12_4==13) ) {
+                    alt12=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 11, 4, input);
+                        new NoViableAltException("", 12, 4, input);
 
                     throw nvae;
                 }
@@ -9489,18 +9661,18 @@
                 break;
             case 48:
                 {
-                int LA11_5 = input.LA(2);
+                int LA12_5 = input.LA(2);
 
-                if ( (LA11_5==13) ) {
-                    alt11=1;
+                if ( (LA12_5==EOF||(LA12_5>=RULE_ID && LA12_5<=RULE_STRING)||(LA12_5>=14 && LA12_5<=50)||(LA12_5>=62 && LA12_5<=63)||LA12_5==72||LA12_5==76||(LA12_5>=78 && LA12_5<=102)||(LA12_5>=107 && LA12_5<=108)||(LA12_5>=110 && LA12_5<=111)) ) {
+                    alt12=2;
                 }
-                else if ( (LA11_5==EOF||(LA11_5>=RULE_ID && LA11_5<=RULE_STRING)||(LA11_5>=14 && LA11_5<=50)||(LA11_5>=63 && LA11_5<=64)||LA11_5==73||LA11_5==78||(LA11_5>=80 && LA11_5<=104)||(LA11_5>=108 && LA11_5<=109)||(LA11_5>=111 && LA11_5<=112)) ) {
-                    alt11=2;
+                else if ( (LA12_5==13) ) {
+                    alt12=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 11, 5, input);
+                        new NoViableAltException("", 12, 5, input);
 
                     throw nvae;
                 }
@@ -9516,12 +9688,14 @@
             case 40:
             case 49:
             case 50:
-            case 63:
-            case 80:
-            case 84:
-            case 85:
+            case 62:
+            case 78:
+            case 82:
+            case 83:
+            case 86:
             case 88:
-            case 90:
+            case 91:
+            case 92:
             case 93:
             case 94:
             case 95:
@@ -9529,34 +9703,32 @@
             case 97:
             case 98:
             case 99:
-            case 100:
             case 101:
-            case 103:
-            case 112:
+            case 111:
                 {
-                alt11=2;
+                alt12=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 11, 0, input);
+                    new NoViableAltException("", 12, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt11) {
+            switch (alt12) {
                 case 1 :
-                    // InternalSignalDSL.g:2739:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalSignalDSL.g:2787:2: ( ( rule__XAssignment__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2739:2: ( ( rule__XAssignment__Group_0__0 ) )
-                    // InternalSignalDSL.g:2740:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalSignalDSL.g:2787:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalSignalDSL.g:2788:3: ( rule__XAssignment__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:2741:3: ( rule__XAssignment__Group_0__0 )
-                    // InternalSignalDSL.g:2741:4: rule__XAssignment__Group_0__0
+                    // InternalSignalDSL.g:2789:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalSignalDSL.g:2789:4: rule__XAssignment__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_0__0();
@@ -9576,16 +9748,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2745:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalSignalDSL.g:2793:2: ( ( rule__XAssignment__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2745:2: ( ( rule__XAssignment__Group_1__0 ) )
-                    // InternalSignalDSL.g:2746:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalSignalDSL.g:2793:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalSignalDSL.g:2794:3: ( rule__XAssignment__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:2747:3: ( rule__XAssignment__Group_1__0 )
-                    // InternalSignalDSL.g:2747:4: rule__XAssignment__Group_1__0
+                    // InternalSignalDSL.g:2795:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalSignalDSL.g:2795:4: rule__XAssignment__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1__0();
@@ -9622,64 +9794,64 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Alternatives"
-    // InternalSignalDSL.g:2755:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    // InternalSignalDSL.g:2803:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
     public final void rule__OpMultiAssign__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2759:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
-            int alt12=7;
+            // InternalSignalDSL.g:2807:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt13=7;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt12=1;
+                alt13=1;
                 }
                 break;
             case 17:
                 {
-                alt12=2;
+                alt13=2;
                 }
                 break;
             case 18:
                 {
-                alt12=3;
+                alt13=3;
                 }
                 break;
             case 19:
                 {
-                alt12=4;
+                alt13=4;
                 }
                 break;
             case 20:
                 {
-                alt12=5;
+                alt13=5;
                 }
                 break;
             case 27:
                 {
-                alt12=6;
+                alt13=6;
                 }
                 break;
             case 26:
                 {
-                alt12=7;
+                alt13=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 12, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt12) {
+            switch (alt13) {
                 case 1 :
-                    // InternalSignalDSL.g:2760:2: ( '+=' )
+                    // InternalSignalDSL.g:2808:2: ( '+=' )
                     {
-                    // InternalSignalDSL.g:2760:2: ( '+=' )
-                    // InternalSignalDSL.g:2761:3: '+='
+                    // InternalSignalDSL.g:2808:2: ( '+=' )
+                    // InternalSignalDSL.g:2809:3: '+='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
@@ -9695,10 +9867,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2766:2: ( '-=' )
+                    // InternalSignalDSL.g:2814:2: ( '-=' )
                     {
-                    // InternalSignalDSL.g:2766:2: ( '-=' )
-                    // InternalSignalDSL.g:2767:3: '-='
+                    // InternalSignalDSL.g:2814:2: ( '-=' )
+                    // InternalSignalDSL.g:2815:3: '-='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
@@ -9714,10 +9886,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2772:2: ( '*=' )
+                    // InternalSignalDSL.g:2820:2: ( '*=' )
                     {
-                    // InternalSignalDSL.g:2772:2: ( '*=' )
-                    // InternalSignalDSL.g:2773:3: '*='
+                    // InternalSignalDSL.g:2820:2: ( '*=' )
+                    // InternalSignalDSL.g:2821:3: '*='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
@@ -9733,10 +9905,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2778:2: ( '/=' )
+                    // InternalSignalDSL.g:2826:2: ( '/=' )
                     {
-                    // InternalSignalDSL.g:2778:2: ( '/=' )
-                    // InternalSignalDSL.g:2779:3: '/='
+                    // InternalSignalDSL.g:2826:2: ( '/=' )
+                    // InternalSignalDSL.g:2827:3: '/='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
@@ -9752,10 +9924,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:2784:2: ( '%=' )
+                    // InternalSignalDSL.g:2832:2: ( '%=' )
                     {
-                    // InternalSignalDSL.g:2784:2: ( '%=' )
-                    // InternalSignalDSL.g:2785:3: '%='
+                    // InternalSignalDSL.g:2832:2: ( '%=' )
+                    // InternalSignalDSL.g:2833:3: '%='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
@@ -9771,16 +9943,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:2790:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalSignalDSL.g:2838:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
                     {
-                    // InternalSignalDSL.g:2790:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
-                    // InternalSignalDSL.g:2791:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalSignalDSL.g:2838:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalSignalDSL.g:2839:3: ( rule__OpMultiAssign__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
                     }
-                    // InternalSignalDSL.g:2792:3: ( rule__OpMultiAssign__Group_5__0 )
-                    // InternalSignalDSL.g:2792:4: rule__OpMultiAssign__Group_5__0
+                    // InternalSignalDSL.g:2840:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalSignalDSL.g:2840:4: rule__OpMultiAssign__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_5__0();
@@ -9800,16 +9972,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:2796:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalSignalDSL.g:2844:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
                     {
-                    // InternalSignalDSL.g:2796:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
-                    // InternalSignalDSL.g:2797:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalSignalDSL.g:2844:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalSignalDSL.g:2845:3: ( rule__OpMultiAssign__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
                     }
-                    // InternalSignalDSL.g:2798:3: ( rule__OpMultiAssign__Group_6__0 )
-                    // InternalSignalDSL.g:2798:4: rule__OpMultiAssign__Group_6__0
+                    // InternalSignalDSL.g:2846:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalSignalDSL.g:2846:4: rule__OpMultiAssign__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_6__0();
@@ -9846,49 +10018,49 @@
 
 
     // $ANTLR start "rule__OpEquality__Alternatives"
-    // InternalSignalDSL.g:2806:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    // InternalSignalDSL.g:2854:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
     public final void rule__OpEquality__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2810:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
-            int alt13=4;
+            // InternalSignalDSL.g:2858:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt14=4;
             switch ( input.LA(1) ) {
             case 21:
                 {
-                alt13=1;
+                alt14=1;
                 }
                 break;
             case 22:
                 {
-                alt13=2;
+                alt14=2;
                 }
                 break;
             case 23:
                 {
-                alt13=3;
+                alt14=3;
                 }
                 break;
             case 24:
                 {
-                alt13=4;
+                alt14=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 13, 0, input);
+                    new NoViableAltException("", 14, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt13) {
+            switch (alt14) {
                 case 1 :
-                    // InternalSignalDSL.g:2811:2: ( '==' )
+                    // InternalSignalDSL.g:2859:2: ( '==' )
                     {
-                    // InternalSignalDSL.g:2811:2: ( '==' )
-                    // InternalSignalDSL.g:2812:3: '=='
+                    // InternalSignalDSL.g:2859:2: ( '==' )
+                    // InternalSignalDSL.g:2860:3: '=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
@@ -9904,10 +10076,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2817:2: ( '!=' )
+                    // InternalSignalDSL.g:2865:2: ( '!=' )
                     {
-                    // InternalSignalDSL.g:2817:2: ( '!=' )
-                    // InternalSignalDSL.g:2818:3: '!='
+                    // InternalSignalDSL.g:2865:2: ( '!=' )
+                    // InternalSignalDSL.g:2866:3: '!='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
@@ -9923,10 +10095,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2823:2: ( '===' )
+                    // InternalSignalDSL.g:2871:2: ( '===' )
                     {
-                    // InternalSignalDSL.g:2823:2: ( '===' )
-                    // InternalSignalDSL.g:2824:3: '==='
+                    // InternalSignalDSL.g:2871:2: ( '===' )
+                    // InternalSignalDSL.g:2872:3: '==='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
@@ -9942,10 +10114,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2829:2: ( '!==' )
+                    // InternalSignalDSL.g:2877:2: ( '!==' )
                     {
-                    // InternalSignalDSL.g:2829:2: ( '!==' )
-                    // InternalSignalDSL.g:2830:3: '!=='
+                    // InternalSignalDSL.g:2877:2: ( '!==' )
+                    // InternalSignalDSL.g:2878:3: '!=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
@@ -9978,41 +10150,41 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
-    // InternalSignalDSL.g:2839:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
+    // InternalSignalDSL.g:2887:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
     public final void rule__XRelationalExpression__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2843:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
-            int alt14=2;
-            int LA14_0 = input.LA(1);
+            // InternalSignalDSL.g:2891:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
 
-            if ( (LA14_0==86) ) {
-                alt14=1;
+            if ( (LA15_0==84) ) {
+                alt15=1;
             }
-            else if ( ((LA14_0>=25 && LA14_0<=27)) ) {
-                alt14=2;
+            else if ( ((LA15_0>=25 && LA15_0<=27)) ) {
+                alt15=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 14, 0, input);
+                    new NoViableAltException("", 15, 0, input);
 
                 throw nvae;
             }
-            switch (alt14) {
+            switch (alt15) {
                 case 1 :
-                    // InternalSignalDSL.g:2844:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:2892:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2844:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
-                    // InternalSignalDSL.g:2845:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalSignalDSL.g:2892:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:2893:3: ( rule__XRelationalExpression__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
                     }
-                    // InternalSignalDSL.g:2846:3: ( rule__XRelationalExpression__Group_1_0__0 )
-                    // InternalSignalDSL.g:2846:4: rule__XRelationalExpression__Group_1_0__0
+                    // InternalSignalDSL.g:2894:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalSignalDSL.g:2894:4: rule__XRelationalExpression__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_0__0();
@@ -10032,16 +10204,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2850:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:2898:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2850:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
-                    // InternalSignalDSL.g:2851:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalSignalDSL.g:2898:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:2899:3: ( rule__XRelationalExpression__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
                     }
-                    // InternalSignalDSL.g:2852:3: ( rule__XRelationalExpression__Group_1_1__0 )
-                    // InternalSignalDSL.g:2852:4: rule__XRelationalExpression__Group_1_1__0
+                    // InternalSignalDSL.g:2900:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalSignalDSL.g:2900:4: rule__XRelationalExpression__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_1__0();
@@ -10078,34 +10250,34 @@
 
 
     // $ANTLR start "rule__OpCompare__Alternatives"
-    // InternalSignalDSL.g:2860:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    // InternalSignalDSL.g:2908:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
     public final void rule__OpCompare__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2864:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
-            int alt15=4;
+            // InternalSignalDSL.g:2912:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt16=4;
             switch ( input.LA(1) ) {
             case 25:
                 {
-                alt15=1;
+                alt16=1;
                 }
                 break;
             case 27:
                 {
-                int LA15_2 = input.LA(2);
+                int LA16_2 = input.LA(2);
 
-                if ( (LA15_2==EOF||(LA15_2>=RULE_ID && LA15_2<=RULE_STRING)||LA15_2==27||(LA15_2>=34 && LA15_2<=35)||LA15_2==40||(LA15_2>=45 && LA15_2<=50)||LA15_2==63||LA15_2==80||(LA15_2>=84 && LA15_2<=85)||LA15_2==88||LA15_2==90||(LA15_2>=93 && LA15_2<=101)||LA15_2==103||LA15_2==112) ) {
-                    alt15=4;
+                if ( (LA16_2==13) ) {
+                    alt16=2;
                 }
-                else if ( (LA15_2==13) ) {
-                    alt15=2;
+                else if ( (LA16_2==EOF||(LA16_2>=RULE_ID && LA16_2<=RULE_STRING)||LA16_2==27||(LA16_2>=34 && LA16_2<=35)||LA16_2==40||(LA16_2>=45 && LA16_2<=50)||LA16_2==62||LA16_2==78||(LA16_2>=82 && LA16_2<=83)||LA16_2==86||LA16_2==88||(LA16_2>=91 && LA16_2<=99)||LA16_2==101||LA16_2==111) ) {
+                    alt16=4;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 15, 2, input);
+                        new NoViableAltException("", 16, 2, input);
 
                     throw nvae;
                 }
@@ -10113,23 +10285,23 @@
                 break;
             case 26:
                 {
-                alt15=3;
+                alt16=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 15, 0, input);
+                    new NoViableAltException("", 16, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt15) {
+            switch (alt16) {
                 case 1 :
-                    // InternalSignalDSL.g:2865:2: ( '>=' )
+                    // InternalSignalDSL.g:2913:2: ( '>=' )
                     {
-                    // InternalSignalDSL.g:2865:2: ( '>=' )
-                    // InternalSignalDSL.g:2866:3: '>='
+                    // InternalSignalDSL.g:2913:2: ( '>=' )
+                    // InternalSignalDSL.g:2914:3: '>='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
@@ -10145,16 +10317,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2871:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalSignalDSL.g:2919:2: ( ( rule__OpCompare__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2871:2: ( ( rule__OpCompare__Group_1__0 ) )
-                    // InternalSignalDSL.g:2872:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalSignalDSL.g:2919:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalSignalDSL.g:2920:3: ( rule__OpCompare__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:2873:3: ( rule__OpCompare__Group_1__0 )
-                    // InternalSignalDSL.g:2873:4: rule__OpCompare__Group_1__0
+                    // InternalSignalDSL.g:2921:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalSignalDSL.g:2921:4: rule__OpCompare__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpCompare__Group_1__0();
@@ -10174,10 +10346,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2877:2: ( '>' )
+                    // InternalSignalDSL.g:2925:2: ( '>' )
                     {
-                    // InternalSignalDSL.g:2877:2: ( '>' )
-                    // InternalSignalDSL.g:2878:3: '>'
+                    // InternalSignalDSL.g:2925:2: ( '>' )
+                    // InternalSignalDSL.g:2926:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
@@ -10193,10 +10365,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2883:2: ( '<' )
+                    // InternalSignalDSL.g:2931:2: ( '<' )
                     {
-                    // InternalSignalDSL.g:2883:2: ( '<' )
-                    // InternalSignalDSL.g:2884:3: '<'
+                    // InternalSignalDSL.g:2931:2: ( '<' )
+                    // InternalSignalDSL.g:2932:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
@@ -10229,21 +10401,21 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives"
-    // InternalSignalDSL.g:2893:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
+    // InternalSignalDSL.g:2941:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
     public final void rule__OpOther__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2897:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
-            int alt16=9;
-            alt16 = dfa16.predict(input);
-            switch (alt16) {
+            // InternalSignalDSL.g:2945:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt17=9;
+            alt17 = dfa17.predict(input);
+            switch (alt17) {
                 case 1 :
-                    // InternalSignalDSL.g:2898:2: ( '->' )
+                    // InternalSignalDSL.g:2946:2: ( '->' )
                     {
-                    // InternalSignalDSL.g:2898:2: ( '->' )
-                    // InternalSignalDSL.g:2899:3: '->'
+                    // InternalSignalDSL.g:2946:2: ( '->' )
+                    // InternalSignalDSL.g:2947:3: '->'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
@@ -10259,10 +10431,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2904:2: ( '..<' )
+                    // InternalSignalDSL.g:2952:2: ( '..<' )
                     {
-                    // InternalSignalDSL.g:2904:2: ( '..<' )
-                    // InternalSignalDSL.g:2905:3: '..<'
+                    // InternalSignalDSL.g:2952:2: ( '..<' )
+                    // InternalSignalDSL.g:2953:3: '..<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
@@ -10278,16 +10450,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2910:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalSignalDSL.g:2958:2: ( ( rule__OpOther__Group_2__0 ) )
                     {
-                    // InternalSignalDSL.g:2910:2: ( ( rule__OpOther__Group_2__0 ) )
-                    // InternalSignalDSL.g:2911:3: ( rule__OpOther__Group_2__0 )
+                    // InternalSignalDSL.g:2958:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalSignalDSL.g:2959:3: ( rule__OpOther__Group_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_2()); 
                     }
-                    // InternalSignalDSL.g:2912:3: ( rule__OpOther__Group_2__0 )
-                    // InternalSignalDSL.g:2912:4: rule__OpOther__Group_2__0
+                    // InternalSignalDSL.g:2960:3: ( rule__OpOther__Group_2__0 )
+                    // InternalSignalDSL.g:2960:4: rule__OpOther__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_2__0();
@@ -10307,10 +10479,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2916:2: ( '..' )
+                    // InternalSignalDSL.g:2964:2: ( '..' )
                     {
-                    // InternalSignalDSL.g:2916:2: ( '..' )
-                    // InternalSignalDSL.g:2917:3: '..'
+                    // InternalSignalDSL.g:2964:2: ( '..' )
+                    // InternalSignalDSL.g:2965:3: '..'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
@@ -10326,10 +10498,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:2922:2: ( '=>' )
+                    // InternalSignalDSL.g:2970:2: ( '=>' )
                     {
-                    // InternalSignalDSL.g:2922:2: ( '=>' )
-                    // InternalSignalDSL.g:2923:3: '=>'
+                    // InternalSignalDSL.g:2970:2: ( '=>' )
+                    // InternalSignalDSL.g:2971:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
@@ -10345,16 +10517,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:2928:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalSignalDSL.g:2976:2: ( ( rule__OpOther__Group_5__0 ) )
                     {
-                    // InternalSignalDSL.g:2928:2: ( ( rule__OpOther__Group_5__0 ) )
-                    // InternalSignalDSL.g:2929:3: ( rule__OpOther__Group_5__0 )
+                    // InternalSignalDSL.g:2976:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalSignalDSL.g:2977:3: ( rule__OpOther__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5()); 
                     }
-                    // InternalSignalDSL.g:2930:3: ( rule__OpOther__Group_5__0 )
-                    // InternalSignalDSL.g:2930:4: rule__OpOther__Group_5__0
+                    // InternalSignalDSL.g:2978:3: ( rule__OpOther__Group_5__0 )
+                    // InternalSignalDSL.g:2978:4: rule__OpOther__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5__0();
@@ -10374,16 +10546,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:2934:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6__0 ) )
                     {
-                    // InternalSignalDSL.g:2934:2: ( ( rule__OpOther__Group_6__0 ) )
-                    // InternalSignalDSL.g:2935:3: ( rule__OpOther__Group_6__0 )
+                    // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalSignalDSL.g:2983:3: ( rule__OpOther__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6()); 
                     }
-                    // InternalSignalDSL.g:2936:3: ( rule__OpOther__Group_6__0 )
-                    // InternalSignalDSL.g:2936:4: rule__OpOther__Group_6__0
+                    // InternalSignalDSL.g:2984:3: ( rule__OpOther__Group_6__0 )
+                    // InternalSignalDSL.g:2984:4: rule__OpOther__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6__0();
@@ -10403,10 +10575,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:2940:2: ( '<>' )
+                    // InternalSignalDSL.g:2988:2: ( '<>' )
                     {
-                    // InternalSignalDSL.g:2940:2: ( '<>' )
-                    // InternalSignalDSL.g:2941:3: '<>'
+                    // InternalSignalDSL.g:2988:2: ( '<>' )
+                    // InternalSignalDSL.g:2989:3: '<>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
@@ -10422,10 +10594,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:2946:2: ( '?:' )
+                    // InternalSignalDSL.g:2994:2: ( '?:' )
                     {
-                    // InternalSignalDSL.g:2946:2: ( '?:' )
-                    // InternalSignalDSL.g:2947:3: '?:'
+                    // InternalSignalDSL.g:2994:2: ( '?:' )
+                    // InternalSignalDSL.g:2995:3: '?:'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
@@ -10458,29 +10630,29 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_5_1"
-    // InternalSignalDSL.g:2956:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
+    // InternalSignalDSL.g:3004:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
     public final void rule__OpOther__Alternatives_5_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2960:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
-            int alt17=2;
-            int LA17_0 = input.LA(1);
+            // InternalSignalDSL.g:3008:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt18=2;
+            int LA18_0 = input.LA(1);
 
-            if ( (LA17_0==26) ) {
-                int LA17_1 = input.LA(2);
+            if ( (LA18_0==26) ) {
+                int LA18_1 = input.LA(2);
 
-                if ( (LA17_1==EOF||(LA17_1>=RULE_ID && LA17_1<=RULE_STRING)||LA17_1==27||(LA17_1>=34 && LA17_1<=35)||LA17_1==40||(LA17_1>=45 && LA17_1<=50)||LA17_1==63||LA17_1==80||(LA17_1>=84 && LA17_1<=85)||LA17_1==88||LA17_1==90||(LA17_1>=93 && LA17_1<=101)||LA17_1==103||LA17_1==112) ) {
-                    alt17=2;
+                if ( (LA18_1==26) ) {
+                    alt18=1;
                 }
-                else if ( (LA17_1==26) ) {
-                    alt17=1;
+                else if ( (LA18_1==EOF||(LA18_1>=RULE_ID && LA18_1<=RULE_STRING)||LA18_1==27||(LA18_1>=34 && LA18_1<=35)||LA18_1==40||(LA18_1>=45 && LA18_1<=50)||LA18_1==62||LA18_1==78||(LA18_1>=82 && LA18_1<=83)||LA18_1==86||LA18_1==88||(LA18_1>=91 && LA18_1<=99)||LA18_1==101||LA18_1==111) ) {
+                    alt18=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 17, 1, input);
+                        new NoViableAltException("", 18, 1, input);
 
                     throw nvae;
                 }
@@ -10488,22 +10660,22 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 17, 0, input);
+                    new NoViableAltException("", 18, 0, input);
 
                 throw nvae;
             }
-            switch (alt17) {
+            switch (alt18) {
                 case 1 :
-                    // InternalSignalDSL.g:2961:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalSignalDSL.g:3009:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2961:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
-                    // InternalSignalDSL.g:2962:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalSignalDSL.g:3009:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalSignalDSL.g:3010:3: ( rule__OpOther__Group_5_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
                     }
-                    // InternalSignalDSL.g:2963:3: ( rule__OpOther__Group_5_1_0__0 )
-                    // InternalSignalDSL.g:2963:4: rule__OpOther__Group_5_1_0__0
+                    // InternalSignalDSL.g:3011:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalSignalDSL.g:3011:4: rule__OpOther__Group_5_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5_1_0__0();
@@ -10523,10 +10695,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2967:2: ( '>' )
+                    // InternalSignalDSL.g:3015:2: ( '>' )
                     {
-                    // InternalSignalDSL.g:2967:2: ( '>' )
-                    // InternalSignalDSL.g:2968:3: '>'
+                    // InternalSignalDSL.g:3015:2: ( '>' )
+                    // InternalSignalDSL.g:3016:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
@@ -10559,55 +10731,55 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_6_1"
-    // InternalSignalDSL.g:2977:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
+    // InternalSignalDSL.g:3025:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
     public final void rule__OpOther__Alternatives_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2981:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
-            int alt18=3;
-            int LA18_0 = input.LA(1);
+            // InternalSignalDSL.g:3029:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt19=3;
+            int LA19_0 = input.LA(1);
 
-            if ( (LA18_0==27) ) {
-                int LA18_1 = input.LA(2);
+            if ( (LA19_0==27) ) {
+                int LA19_1 = input.LA(2);
 
-                if ( (synpred39_InternalSignalDSL()) ) {
-                    alt18=1;
+                if ( (synpred40_InternalSignalDSL()) ) {
+                    alt19=1;
                 }
-                else if ( (synpred40_InternalSignalDSL()) ) {
-                    alt18=2;
+                else if ( (synpred41_InternalSignalDSL()) ) {
+                    alt19=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 18, 1, input);
+                        new NoViableAltException("", 19, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA18_0==31) ) {
-                alt18=3;
+            else if ( (LA19_0==31) ) {
+                alt19=3;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 18, 0, input);
+                    new NoViableAltException("", 19, 0, input);
 
                 throw nvae;
             }
-            switch (alt18) {
+            switch (alt19) {
                 case 1 :
-                    // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalSignalDSL.g:3030:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-                    // InternalSignalDSL.g:2983:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalSignalDSL.g:3030:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalSignalDSL.g:3031:3: ( rule__OpOther__Group_6_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
                     }
-                    // InternalSignalDSL.g:2984:3: ( rule__OpOther__Group_6_1_0__0 )
-                    // InternalSignalDSL.g:2984:4: rule__OpOther__Group_6_1_0__0
+                    // InternalSignalDSL.g:3032:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalSignalDSL.g:3032:4: rule__OpOther__Group_6_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6_1_0__0();
@@ -10627,10 +10799,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2988:2: ( '<' )
+                    // InternalSignalDSL.g:3036:2: ( '<' )
                     {
-                    // InternalSignalDSL.g:2988:2: ( '<' )
-                    // InternalSignalDSL.g:2989:3: '<'
+                    // InternalSignalDSL.g:3036:2: ( '<' )
+                    // InternalSignalDSL.g:3037:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -10646,10 +10818,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2994:2: ( '=>' )
+                    // InternalSignalDSL.g:3042:2: ( '=>' )
                     {
-                    // InternalSignalDSL.g:2994:2: ( '=>' )
-                    // InternalSignalDSL.g:2995:3: '=>'
+                    // InternalSignalDSL.g:3042:2: ( '=>' )
+                    // InternalSignalDSL.g:3043:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
@@ -10682,35 +10854,35 @@
 
 
     // $ANTLR start "rule__OpAdd__Alternatives"
-    // InternalSignalDSL.g:3004:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    // InternalSignalDSL.g:3052:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
     public final void rule__OpAdd__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3008:1: ( ( '+' ) | ( '-' ) )
-            int alt19=2;
-            int LA19_0 = input.LA(1);
+            // InternalSignalDSL.g:3056:1: ( ( '+' ) | ( '-' ) )
+            int alt20=2;
+            int LA20_0 = input.LA(1);
 
-            if ( (LA19_0==34) ) {
-                alt19=1;
+            if ( (LA20_0==34) ) {
+                alt20=1;
             }
-            else if ( (LA19_0==35) ) {
-                alt19=2;
+            else if ( (LA20_0==35) ) {
+                alt20=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 19, 0, input);
+                    new NoViableAltException("", 20, 0, input);
 
                 throw nvae;
             }
-            switch (alt19) {
+            switch (alt20) {
                 case 1 :
-                    // InternalSignalDSL.g:3009:2: ( '+' )
+                    // InternalSignalDSL.g:3057:2: ( '+' )
                     {
-                    // InternalSignalDSL.g:3009:2: ( '+' )
-                    // InternalSignalDSL.g:3010:3: '+'
+                    // InternalSignalDSL.g:3057:2: ( '+' )
+                    // InternalSignalDSL.g:3058:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
@@ -10726,10 +10898,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3015:2: ( '-' )
+                    // InternalSignalDSL.g:3063:2: ( '-' )
                     {
-                    // InternalSignalDSL.g:3015:2: ( '-' )
-                    // InternalSignalDSL.g:3016:3: '-'
+                    // InternalSignalDSL.g:3063:2: ( '-' )
+                    // InternalSignalDSL.g:3064:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
@@ -10762,49 +10934,49 @@
 
 
     // $ANTLR start "rule__OpMulti__Alternatives"
-    // InternalSignalDSL.g:3025:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    // InternalSignalDSL.g:3073:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
     public final void rule__OpMulti__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3029:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
-            int alt20=4;
+            // InternalSignalDSL.g:3077:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt21=4;
             switch ( input.LA(1) ) {
             case 36:
                 {
-                alt20=1;
+                alt21=1;
                 }
                 break;
             case 37:
                 {
-                alt20=2;
+                alt21=2;
                 }
                 break;
             case 38:
                 {
-                alt20=3;
+                alt21=3;
                 }
                 break;
             case 39:
                 {
-                alt20=4;
+                alt21=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 20, 0, input);
+                    new NoViableAltException("", 21, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt20) {
+            switch (alt21) {
                 case 1 :
-                    // InternalSignalDSL.g:3030:2: ( '*' )
+                    // InternalSignalDSL.g:3078:2: ( '*' )
                     {
-                    // InternalSignalDSL.g:3030:2: ( '*' )
-                    // InternalSignalDSL.g:3031:3: '*'
+                    // InternalSignalDSL.g:3078:2: ( '*' )
+                    // InternalSignalDSL.g:3079:3: '*'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
@@ -10820,10 +10992,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3036:2: ( '**' )
+                    // InternalSignalDSL.g:3084:2: ( '**' )
                     {
-                    // InternalSignalDSL.g:3036:2: ( '**' )
-                    // InternalSignalDSL.g:3037:3: '**'
+                    // InternalSignalDSL.g:3084:2: ( '**' )
+                    // InternalSignalDSL.g:3085:3: '**'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
@@ -10839,10 +11011,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3042:2: ( '/' )
+                    // InternalSignalDSL.g:3090:2: ( '/' )
                     {
-                    // InternalSignalDSL.g:3042:2: ( '/' )
-                    // InternalSignalDSL.g:3043:3: '/'
+                    // InternalSignalDSL.g:3090:2: ( '/' )
+                    // InternalSignalDSL.g:3091:3: '/'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
@@ -10858,10 +11030,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3048:2: ( '%' )
+                    // InternalSignalDSL.g:3096:2: ( '%' )
                     {
-                    // InternalSignalDSL.g:3048:2: ( '%' )
-                    // InternalSignalDSL.g:3049:3: '%'
+                    // InternalSignalDSL.g:3096:2: ( '%' )
+                    // InternalSignalDSL.g:3097:3: '%'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
@@ -10894,41 +11066,41 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Alternatives"
-    // InternalSignalDSL.g:3058:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    // InternalSignalDSL.g:3106:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
     public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3062:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
-            int alt21=2;
-            int LA21_0 = input.LA(1);
+            // InternalSignalDSL.g:3110:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt22=2;
+            int LA22_0 = input.LA(1);
 
-            if ( ((LA21_0>=34 && LA21_0<=35)||LA21_0==40) ) {
-                alt21=1;
+            if ( ((LA22_0>=34 && LA22_0<=35)||LA22_0==40) ) {
+                alt22=1;
             }
-            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_STRING)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==63||LA21_0==80||(LA21_0>=84 && LA21_0<=85)||LA21_0==88||LA21_0==90||(LA21_0>=93 && LA21_0<=101)||LA21_0==103||LA21_0==112) ) {
-                alt21=2;
+            else if ( ((LA22_0>=RULE_ID && LA22_0<=RULE_STRING)||LA22_0==27||(LA22_0>=45 && LA22_0<=50)||LA22_0==62||LA22_0==78||(LA22_0>=82 && LA22_0<=83)||LA22_0==86||LA22_0==88||(LA22_0>=91 && LA22_0<=99)||LA22_0==101||LA22_0==111) ) {
+                alt22=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 21, 0, input);
+                    new NoViableAltException("", 22, 0, input);
 
                 throw nvae;
             }
-            switch (alt21) {
+            switch (alt22) {
                 case 1 :
-                    // InternalSignalDSL.g:3063:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalSignalDSL.g:3111:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3063:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
-                    // InternalSignalDSL.g:3064:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalSignalDSL.g:3111:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalSignalDSL.g:3112:3: ( rule__XUnaryOperation__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:3065:3: ( rule__XUnaryOperation__Group_0__0 )
-                    // InternalSignalDSL.g:3065:4: rule__XUnaryOperation__Group_0__0
+                    // InternalSignalDSL.g:3113:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalSignalDSL.g:3113:4: rule__XUnaryOperation__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XUnaryOperation__Group_0__0();
@@ -10948,10 +11120,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3069:2: ( ruleXCastedExpression )
+                    // InternalSignalDSL.g:3117:2: ( ruleXCastedExpression )
                     {
-                    // InternalSignalDSL.g:3069:2: ( ruleXCastedExpression )
-                    // InternalSignalDSL.g:3070:3: ruleXCastedExpression
+                    // InternalSignalDSL.g:3117:2: ( ruleXCastedExpression )
+                    // InternalSignalDSL.g:3118:3: ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
@@ -10988,44 +11160,44 @@
 
 
     // $ANTLR start "rule__OpUnary__Alternatives"
-    // InternalSignalDSL.g:3079:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    // InternalSignalDSL.g:3127:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
     public final void rule__OpUnary__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3083:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
-            int alt22=3;
+            // InternalSignalDSL.g:3131:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt23=3;
             switch ( input.LA(1) ) {
             case 40:
                 {
-                alt22=1;
+                alt23=1;
                 }
                 break;
             case 35:
                 {
-                alt22=2;
+                alt23=2;
                 }
                 break;
             case 34:
                 {
-                alt22=3;
+                alt23=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt22) {
+            switch (alt23) {
                 case 1 :
-                    // InternalSignalDSL.g:3084:2: ( '!' )
+                    // InternalSignalDSL.g:3132:2: ( '!' )
                     {
-                    // InternalSignalDSL.g:3084:2: ( '!' )
-                    // InternalSignalDSL.g:3085:3: '!'
+                    // InternalSignalDSL.g:3132:2: ( '!' )
+                    // InternalSignalDSL.g:3133:3: '!'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
@@ -11041,10 +11213,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3090:2: ( '-' )
+                    // InternalSignalDSL.g:3138:2: ( '-' )
                     {
-                    // InternalSignalDSL.g:3090:2: ( '-' )
-                    // InternalSignalDSL.g:3091:3: '-'
+                    // InternalSignalDSL.g:3138:2: ( '-' )
+                    // InternalSignalDSL.g:3139:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
@@ -11060,10 +11232,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3096:2: ( '+' )
+                    // InternalSignalDSL.g:3144:2: ( '+' )
                     {
-                    // InternalSignalDSL.g:3096:2: ( '+' )
-                    // InternalSignalDSL.g:3097:3: '+'
+                    // InternalSignalDSL.g:3144:2: ( '+' )
+                    // InternalSignalDSL.g:3145:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
@@ -11096,35 +11268,35 @@
 
 
     // $ANTLR start "rule__OpPostfix__Alternatives"
-    // InternalSignalDSL.g:3106:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    // InternalSignalDSL.g:3154:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
     public final void rule__OpPostfix__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3110:1: ( ( '++' ) | ( '--' ) )
-            int alt23=2;
-            int LA23_0 = input.LA(1);
+            // InternalSignalDSL.g:3158:1: ( ( '++' ) | ( '--' ) )
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            if ( (LA23_0==41) ) {
-                alt23=1;
+            if ( (LA24_0==41) ) {
+                alt24=1;
             }
-            else if ( (LA23_0==42) ) {
-                alt23=2;
+            else if ( (LA24_0==42) ) {
+                alt24=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 23, 0, input);
+                    new NoViableAltException("", 24, 0, input);
 
                 throw nvae;
             }
-            switch (alt23) {
+            switch (alt24) {
                 case 1 :
-                    // InternalSignalDSL.g:3111:2: ( '++' )
+                    // InternalSignalDSL.g:3159:2: ( '++' )
                     {
-                    // InternalSignalDSL.g:3111:2: ( '++' )
-                    // InternalSignalDSL.g:3112:3: '++'
+                    // InternalSignalDSL.g:3159:2: ( '++' )
+                    // InternalSignalDSL.g:3160:3: '++'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
@@ -11140,10 +11312,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3117:2: ( '--' )
+                    // InternalSignalDSL.g:3165:2: ( '--' )
                     {
-                    // InternalSignalDSL.g:3117:2: ( '--' )
-                    // InternalSignalDSL.g:3118:3: '--'
+                    // InternalSignalDSL.g:3165:2: ( '--' )
+                    // InternalSignalDSL.g:3166:3: '--'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
@@ -11176,27 +11348,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1"
-    // InternalSignalDSL.g:3127:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
+    // InternalSignalDSL.g:3175:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3131:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
-            int alt24=2;
-            alt24 = dfa24.predict(input);
-            switch (alt24) {
+            // InternalSignalDSL.g:3179:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt25=2;
+            alt25 = dfa25.predict(input);
+            switch (alt25) {
                 case 1 :
-                    // InternalSignalDSL.g:3132:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:3180:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3132:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
-                    // InternalSignalDSL.g:3133:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalSignalDSL.g:3180:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:3181:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
                     }
-                    // InternalSignalDSL.g:3134:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
-                    // InternalSignalDSL.g:3134:4: rule__XMemberFeatureCall__Group_1_0__0
+                    // InternalSignalDSL.g:3182:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalSignalDSL.g:3182:4: rule__XMemberFeatureCall__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_0__0();
@@ -11216,16 +11388,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3138:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:3186:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3138:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
-                    // InternalSignalDSL.g:3139:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalSignalDSL.g:3186:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:3187:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
                     }
-                    // InternalSignalDSL.g:3140:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
-                    // InternalSignalDSL.g:3140:4: rule__XMemberFeatureCall__Group_1_1__0
+                    // InternalSignalDSL.g:3188:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalSignalDSL.g:3188:4: rule__XMemberFeatureCall__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1__0();
@@ -11262,35 +11434,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
-    // InternalSignalDSL.g:3148:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
+    // InternalSignalDSL.g:3196:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3152:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
-            int alt25=2;
-            int LA25_0 = input.LA(1);
+            // InternalSignalDSL.g:3200:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt26=2;
+            int LA26_0 = input.LA(1);
 
-            if ( (LA25_0==43) ) {
-                alt25=1;
+            if ( (LA26_0==43) ) {
+                alt26=1;
             }
-            else if ( (LA25_0==108) ) {
-                alt25=2;
+            else if ( (LA26_0==107) ) {
+                alt26=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt25) {
+            switch (alt26) {
                 case 1 :
-                    // InternalSignalDSL.g:3153:2: ( '.' )
+                    // InternalSignalDSL.g:3201:2: ( '.' )
                     {
-                    // InternalSignalDSL.g:3153:2: ( '.' )
-                    // InternalSignalDSL.g:3154:3: '.'
+                    // InternalSignalDSL.g:3201:2: ( '.' )
+                    // InternalSignalDSL.g:3202:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
@@ -11306,16 +11478,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3159:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3207:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
                     {
-                    // InternalSignalDSL.g:3159:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
-                    // InternalSignalDSL.g:3160:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalSignalDSL.g:3207:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3208:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
                     }
-                    // InternalSignalDSL.g:3161:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
-                    // InternalSignalDSL.g:3161:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+                    // InternalSignalDSL.g:3209:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalSignalDSL.g:3209:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1();
@@ -11352,44 +11524,44 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1"
-    // InternalSignalDSL.g:3169:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
+    // InternalSignalDSL.g:3217:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3173:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
-            int alt26=3;
+            // InternalSignalDSL.g:3221:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            int alt27=3;
             switch ( input.LA(1) ) {
             case 43:
                 {
-                alt26=1;
-                }
-                break;
-            case 109:
-                {
-                alt26=2;
+                alt27=1;
                 }
                 break;
             case 108:
                 {
-                alt26=3;
+                alt27=2;
+                }
+                break;
+            case 107:
+                {
+                alt27=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt26) {
+            switch (alt27) {
                 case 1 :
-                    // InternalSignalDSL.g:3174:2: ( '.' )
+                    // InternalSignalDSL.g:3222:2: ( '.' )
                     {
-                    // InternalSignalDSL.g:3174:2: ( '.' )
-                    // InternalSignalDSL.g:3175:3: '.'
+                    // InternalSignalDSL.g:3222:2: ( '.' )
+                    // InternalSignalDSL.g:3223:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
@@ -11405,16 +11577,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3180:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3228:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
                     {
-                    // InternalSignalDSL.g:3180:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
-                    // InternalSignalDSL.g:3181:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalSignalDSL.g:3228:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3229:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
                     }
-                    // InternalSignalDSL.g:3182:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
-                    // InternalSignalDSL.g:3182:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
+                    // InternalSignalDSL.g:3230:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalSignalDSL.g:3230:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1();
@@ -11434,16 +11606,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3186:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalSignalDSL.g:3234:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
                     {
-                    // InternalSignalDSL.g:3186:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
-                    // InternalSignalDSL.g:3187:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalSignalDSL.g:3234:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalSignalDSL.g:3235:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
                     }
-                    // InternalSignalDSL.g:3188:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
-                    // InternalSignalDSL.g:3188:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
+                    // InternalSignalDSL.g:3236:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalSignalDSL.g:3236:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2();
@@ -11480,27 +11652,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_3_1"
-    // InternalSignalDSL.g:3196:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );
+    // InternalSignalDSL.g:3244:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3200:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
-            int alt27=2;
-            alt27 = dfa27.predict(input);
-            switch (alt27) {
+            // InternalSignalDSL.g:3248:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            int alt28=2;
+            alt28 = dfa28.predict(input);
+            switch (alt28) {
                 case 1 :
-                    // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalSignalDSL.g:3249:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-                    // InternalSignalDSL.g:3202:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalSignalDSL.g:3249:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalSignalDSL.g:3250:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
                     }
-                    // InternalSignalDSL.g:3203:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-                    // InternalSignalDSL.g:3203:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+                    // InternalSignalDSL.g:3251:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalSignalDSL.g:3251:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -11520,16 +11692,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3207:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3255:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3207:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
-                    // InternalSignalDSL.g:3208:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalSignalDSL.g:3255:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3256:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
                     }
-                    // InternalSignalDSL.g:3209:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
-                    // InternalSignalDSL.g:3209:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
+                    // InternalSignalDSL.g:3257:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalSignalDSL.g:3257:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3_1_1__0();
@@ -11566,21 +11738,21 @@
 
 
     // $ANTLR start "rule__XPrimaryExpression__Alternatives"
-    // InternalSignalDSL.g:3217:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
+    // InternalSignalDSL.g:3265:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
     public final void rule__XPrimaryExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3221:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
-            int alt28=15;
-            alt28 = dfa28.predict(input);
-            switch (alt28) {
+            // InternalSignalDSL.g:3269:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            int alt29=15;
+            alt29 = dfa29.predict(input);
+            switch (alt29) {
                 case 1 :
-                    // InternalSignalDSL.g:3222:2: ( ruleXConstructorCall )
+                    // InternalSignalDSL.g:3270:2: ( ruleXConstructorCall )
                     {
-                    // InternalSignalDSL.g:3222:2: ( ruleXConstructorCall )
-                    // InternalSignalDSL.g:3223:3: ruleXConstructorCall
+                    // InternalSignalDSL.g:3270:2: ( ruleXConstructorCall )
+                    // InternalSignalDSL.g:3271:3: ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
@@ -11600,10 +11772,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3228:2: ( ruleXBlockExpression )
+                    // InternalSignalDSL.g:3276:2: ( ruleXBlockExpression )
                     {
-                    // InternalSignalDSL.g:3228:2: ( ruleXBlockExpression )
-                    // InternalSignalDSL.g:3229:3: ruleXBlockExpression
+                    // InternalSignalDSL.g:3276:2: ( ruleXBlockExpression )
+                    // InternalSignalDSL.g:3277:3: ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
@@ -11623,10 +11795,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3234:2: ( ruleXSwitchExpression )
+                    // InternalSignalDSL.g:3282:2: ( ruleXSwitchExpression )
                     {
-                    // InternalSignalDSL.g:3234:2: ( ruleXSwitchExpression )
-                    // InternalSignalDSL.g:3235:3: ruleXSwitchExpression
+                    // InternalSignalDSL.g:3282:2: ( ruleXSwitchExpression )
+                    // InternalSignalDSL.g:3283:3: ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
@@ -11646,16 +11818,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3240:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalSignalDSL.g:3288:2: ( ( ruleXSynchronizedExpression ) )
                     {
-                    // InternalSignalDSL.g:3240:2: ( ( ruleXSynchronizedExpression ) )
-                    // InternalSignalDSL.g:3241:3: ( ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3288:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalSignalDSL.g:3289:3: ( ruleXSynchronizedExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
                     }
-                    // InternalSignalDSL.g:3242:3: ( ruleXSynchronizedExpression )
-                    // InternalSignalDSL.g:3242:4: ruleXSynchronizedExpression
+                    // InternalSignalDSL.g:3290:3: ( ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3290:4: ruleXSynchronizedExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXSynchronizedExpression();
@@ -11675,10 +11847,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3246:2: ( ruleXFeatureCall )
+                    // InternalSignalDSL.g:3294:2: ( ruleXFeatureCall )
                     {
-                    // InternalSignalDSL.g:3246:2: ( ruleXFeatureCall )
-                    // InternalSignalDSL.g:3247:3: ruleXFeatureCall
+                    // InternalSignalDSL.g:3294:2: ( ruleXFeatureCall )
+                    // InternalSignalDSL.g:3295:3: ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
@@ -11698,10 +11870,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3252:2: ( ruleXLiteral )
+                    // InternalSignalDSL.g:3300:2: ( ruleXLiteral )
                     {
-                    // InternalSignalDSL.g:3252:2: ( ruleXLiteral )
-                    // InternalSignalDSL.g:3253:3: ruleXLiteral
+                    // InternalSignalDSL.g:3300:2: ( ruleXLiteral )
+                    // InternalSignalDSL.g:3301:3: ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
@@ -11721,10 +11893,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3258:2: ( ruleXIfExpression )
+                    // InternalSignalDSL.g:3306:2: ( ruleXIfExpression )
                     {
-                    // InternalSignalDSL.g:3258:2: ( ruleXIfExpression )
-                    // InternalSignalDSL.g:3259:3: ruleXIfExpression
+                    // InternalSignalDSL.g:3306:2: ( ruleXIfExpression )
+                    // InternalSignalDSL.g:3307:3: ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
@@ -11744,16 +11916,16 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
+                    // InternalSignalDSL.g:3312:2: ( ( ruleXForLoopExpression ) )
                     {
-                    // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
-                    // InternalSignalDSL.g:3265:3: ( ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3312:2: ( ( ruleXForLoopExpression ) )
+                    // InternalSignalDSL.g:3313:3: ( ruleXForLoopExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
                     }
-                    // InternalSignalDSL.g:3266:3: ( ruleXForLoopExpression )
-                    // InternalSignalDSL.g:3266:4: ruleXForLoopExpression
+                    // InternalSignalDSL.g:3314:3: ( ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3314:4: ruleXForLoopExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXForLoopExpression();
@@ -11773,10 +11945,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
+                    // InternalSignalDSL.g:3318:2: ( ruleXBasicForLoopExpression )
                     {
-                    // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
-                    // InternalSignalDSL.g:3271:3: ruleXBasicForLoopExpression
+                    // InternalSignalDSL.g:3318:2: ( ruleXBasicForLoopExpression )
+                    // InternalSignalDSL.g:3319:3: ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -11796,10 +11968,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalSignalDSL.g:3276:2: ( ruleXWhileExpression )
+                    // InternalSignalDSL.g:3324:2: ( ruleXWhileExpression )
                     {
-                    // InternalSignalDSL.g:3276:2: ( ruleXWhileExpression )
-                    // InternalSignalDSL.g:3277:3: ruleXWhileExpression
+                    // InternalSignalDSL.g:3324:2: ( ruleXWhileExpression )
+                    // InternalSignalDSL.g:3325:3: ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
@@ -11819,10 +11991,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalSignalDSL.g:3282:2: ( ruleXDoWhileExpression )
+                    // InternalSignalDSL.g:3330:2: ( ruleXDoWhileExpression )
                     {
-                    // InternalSignalDSL.g:3282:2: ( ruleXDoWhileExpression )
-                    // InternalSignalDSL.g:3283:3: ruleXDoWhileExpression
+                    // InternalSignalDSL.g:3330:2: ( ruleXDoWhileExpression )
+                    // InternalSignalDSL.g:3331:3: ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
@@ -11842,10 +12014,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalSignalDSL.g:3288:2: ( ruleXThrowExpression )
+                    // InternalSignalDSL.g:3336:2: ( ruleXThrowExpression )
                     {
-                    // InternalSignalDSL.g:3288:2: ( ruleXThrowExpression )
-                    // InternalSignalDSL.g:3289:3: ruleXThrowExpression
+                    // InternalSignalDSL.g:3336:2: ( ruleXThrowExpression )
+                    // InternalSignalDSL.g:3337:3: ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
@@ -11865,10 +12037,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalSignalDSL.g:3294:2: ( ruleXReturnExpression )
+                    // InternalSignalDSL.g:3342:2: ( ruleXReturnExpression )
                     {
-                    // InternalSignalDSL.g:3294:2: ( ruleXReturnExpression )
-                    // InternalSignalDSL.g:3295:3: ruleXReturnExpression
+                    // InternalSignalDSL.g:3342:2: ( ruleXReturnExpression )
+                    // InternalSignalDSL.g:3343:3: ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
@@ -11888,10 +12060,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalSignalDSL.g:3300:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalSignalDSL.g:3348:2: ( ruleXTryCatchFinallyExpression )
                     {
-                    // InternalSignalDSL.g:3300:2: ( ruleXTryCatchFinallyExpression )
-                    // InternalSignalDSL.g:3301:3: ruleXTryCatchFinallyExpression
+                    // InternalSignalDSL.g:3348:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalSignalDSL.g:3349:3: ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
@@ -11911,10 +12083,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalSignalDSL.g:3306:2: ( ruleXParenthesizedExpression )
+                    // InternalSignalDSL.g:3354:2: ( ruleXParenthesizedExpression )
                     {
-                    // InternalSignalDSL.g:3306:2: ( ruleXParenthesizedExpression )
-                    // InternalSignalDSL.g:3307:3: ruleXParenthesizedExpression
+                    // InternalSignalDSL.g:3354:2: ( ruleXParenthesizedExpression )
+                    // InternalSignalDSL.g:3355:3: ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
@@ -11951,67 +12123,67 @@
 
 
     // $ANTLR start "rule__XLiteral__Alternatives"
-    // InternalSignalDSL.g:3316:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    // InternalSignalDSL.g:3364:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
     public final void rule__XLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3320:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
-            int alt29=7;
+            // InternalSignalDSL.g:3368:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            int alt30=7;
             switch ( input.LA(1) ) {
-            case 84:
+            case 82:
                 {
-                alt29=1;
+                alt30=1;
                 }
                 break;
-            case 85:
+            case 83:
                 {
-                alt29=2;
+                alt30=2;
                 }
                 break;
             case 50:
-            case 112:
+            case 111:
                 {
-                alt29=3;
+                alt30=3;
                 }
                 break;
             case RULE_HEX:
             case RULE_INT:
             case RULE_DECIMAL:
                 {
-                alt29=4;
+                alt30=4;
                 }
                 break;
-            case 97:
+            case 95:
                 {
-                alt29=5;
+                alt30=5;
                 }
                 break;
             case RULE_STRING:
                 {
-                alt29=6;
+                alt30=6;
                 }
                 break;
-            case 98:
+            case 96:
                 {
-                alt29=7;
+                alt30=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 29, 0, input);
+                    new NoViableAltException("", 30, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt29) {
+            switch (alt30) {
                 case 1 :
-                    // InternalSignalDSL.g:3321:2: ( ruleXCollectionLiteral )
+                    // InternalSignalDSL.g:3369:2: ( ruleXCollectionLiteral )
                     {
-                    // InternalSignalDSL.g:3321:2: ( ruleXCollectionLiteral )
-                    // InternalSignalDSL.g:3322:3: ruleXCollectionLiteral
+                    // InternalSignalDSL.g:3369:2: ( ruleXCollectionLiteral )
+                    // InternalSignalDSL.g:3370:3: ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
@@ -12031,16 +12203,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3327:2: ( ( ruleXClosure ) )
+                    // InternalSignalDSL.g:3375:2: ( ( ruleXClosure ) )
                     {
-                    // InternalSignalDSL.g:3327:2: ( ( ruleXClosure ) )
-                    // InternalSignalDSL.g:3328:3: ( ruleXClosure )
+                    // InternalSignalDSL.g:3375:2: ( ( ruleXClosure ) )
+                    // InternalSignalDSL.g:3376:3: ( ruleXClosure )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
                     }
-                    // InternalSignalDSL.g:3329:3: ( ruleXClosure )
-                    // InternalSignalDSL.g:3329:4: ruleXClosure
+                    // InternalSignalDSL.g:3377:3: ( ruleXClosure )
+                    // InternalSignalDSL.g:3377:4: ruleXClosure
                     {
                     pushFollow(FOLLOW_2);
                     ruleXClosure();
@@ -12060,10 +12232,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3333:2: ( ruleXBooleanLiteral )
+                    // InternalSignalDSL.g:3381:2: ( ruleXBooleanLiteral )
                     {
-                    // InternalSignalDSL.g:3333:2: ( ruleXBooleanLiteral )
-                    // InternalSignalDSL.g:3334:3: ruleXBooleanLiteral
+                    // InternalSignalDSL.g:3381:2: ( ruleXBooleanLiteral )
+                    // InternalSignalDSL.g:3382:3: ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
@@ -12083,10 +12255,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3339:2: ( ruleXNumberLiteral )
+                    // InternalSignalDSL.g:3387:2: ( ruleXNumberLiteral )
                     {
-                    // InternalSignalDSL.g:3339:2: ( ruleXNumberLiteral )
-                    // InternalSignalDSL.g:3340:3: ruleXNumberLiteral
+                    // InternalSignalDSL.g:3387:2: ( ruleXNumberLiteral )
+                    // InternalSignalDSL.g:3388:3: ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
@@ -12106,10 +12278,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3345:2: ( ruleXNullLiteral )
+                    // InternalSignalDSL.g:3393:2: ( ruleXNullLiteral )
                     {
-                    // InternalSignalDSL.g:3345:2: ( ruleXNullLiteral )
-                    // InternalSignalDSL.g:3346:3: ruleXNullLiteral
+                    // InternalSignalDSL.g:3393:2: ( ruleXNullLiteral )
+                    // InternalSignalDSL.g:3394:3: ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
@@ -12129,10 +12301,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3351:2: ( ruleXStringLiteral )
+                    // InternalSignalDSL.g:3399:2: ( ruleXStringLiteral )
                     {
-                    // InternalSignalDSL.g:3351:2: ( ruleXStringLiteral )
-                    // InternalSignalDSL.g:3352:3: ruleXStringLiteral
+                    // InternalSignalDSL.g:3399:2: ( ruleXStringLiteral )
+                    // InternalSignalDSL.g:3400:3: ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
@@ -12152,10 +12324,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3357:2: ( ruleXTypeLiteral )
+                    // InternalSignalDSL.g:3405:2: ( ruleXTypeLiteral )
                     {
-                    // InternalSignalDSL.g:3357:2: ( ruleXTypeLiteral )
-                    // InternalSignalDSL.g:3358:3: ruleXTypeLiteral
+                    // InternalSignalDSL.g:3405:2: ( ruleXTypeLiteral )
+                    // InternalSignalDSL.g:3406:3: ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
@@ -12192,29 +12364,29 @@
 
 
     // $ANTLR start "rule__XCollectionLiteral__Alternatives"
-    // InternalSignalDSL.g:3367:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    // InternalSignalDSL.g:3415:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
     public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3371:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
-            int alt30=2;
-            int LA30_0 = input.LA(1);
+            // InternalSignalDSL.g:3419:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            int alt31=2;
+            int LA31_0 = input.LA(1);
 
-            if ( (LA30_0==84) ) {
-                int LA30_1 = input.LA(2);
+            if ( (LA31_0==82) ) {
+                int LA31_1 = input.LA(2);
 
-                if ( (LA30_1==63) ) {
-                    alt30=1;
+                if ( (LA31_1==62) ) {
+                    alt31=1;
                 }
-                else if ( (LA30_1==85) ) {
-                    alt30=2;
+                else if ( (LA31_1==83) ) {
+                    alt31=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 30, 1, input);
+                        new NoViableAltException("", 31, 1, input);
 
                     throw nvae;
                 }
@@ -12222,16 +12394,16 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 30, 0, input);
+                    new NoViableAltException("", 31, 0, input);
 
                 throw nvae;
             }
-            switch (alt30) {
+            switch (alt31) {
                 case 1 :
-                    // InternalSignalDSL.g:3372:2: ( ruleXSetLiteral )
+                    // InternalSignalDSL.g:3420:2: ( ruleXSetLiteral )
                     {
-                    // InternalSignalDSL.g:3372:2: ( ruleXSetLiteral )
-                    // InternalSignalDSL.g:3373:3: ruleXSetLiteral
+                    // InternalSignalDSL.g:3420:2: ( ruleXSetLiteral )
+                    // InternalSignalDSL.g:3421:3: ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
@@ -12251,10 +12423,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3378:2: ( ruleXListLiteral )
+                    // InternalSignalDSL.g:3426:2: ( ruleXListLiteral )
                     {
-                    // InternalSignalDSL.g:3378:2: ( ruleXListLiteral )
-                    // InternalSignalDSL.g:3379:3: ruleXListLiteral
+                    // InternalSignalDSL.g:3426:2: ( ruleXListLiteral )
+                    // InternalSignalDSL.g:3427:3: ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
@@ -12291,27 +12463,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Alternatives_2"
-    // InternalSignalDSL.g:3388:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
+    // InternalSignalDSL.g:3436:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
     public final void rule__XSwitchExpression__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3392:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
-            int alt31=2;
-            alt31 = dfa31.predict(input);
-            switch (alt31) {
+            // InternalSignalDSL.g:3440:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            int alt32=2;
+            alt32 = dfa32.predict(input);
+            switch (alt32) {
                 case 1 :
-                    // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3441:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:3394:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalSignalDSL.g:3441:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3442:3: ( rule__XSwitchExpression__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:3395:3: ( rule__XSwitchExpression__Group_2_0__0 )
-                    // InternalSignalDSL.g:3395:4: rule__XSwitchExpression__Group_2_0__0
+                    // InternalSignalDSL.g:3443:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalSignalDSL.g:3443:4: rule__XSwitchExpression__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_0__0();
@@ -12331,16 +12503,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3399:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3447:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3399:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
-                    // InternalSignalDSL.g:3400:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalSignalDSL.g:3447:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3448:3: ( rule__XSwitchExpression__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
                     }
-                    // InternalSignalDSL.g:3401:3: ( rule__XSwitchExpression__Group_2_1__0 )
-                    // InternalSignalDSL.g:3401:4: rule__XSwitchExpression__Group_2_1__0
+                    // InternalSignalDSL.g:3449:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalSignalDSL.g:3449:4: rule__XSwitchExpression__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1__0();
@@ -12377,41 +12549,41 @@
 
 
     // $ANTLR start "rule__XCasePart__Alternatives_3"
-    // InternalSignalDSL.g:3409:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
+    // InternalSignalDSL.g:3457:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
     public final void rule__XCasePart__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3413:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
-            int alt32=2;
-            int LA32_0 = input.LA(1);
+            // InternalSignalDSL.g:3461:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
 
-            if ( (LA32_0==73) ) {
-                alt32=1;
+            if ( (LA33_0==72) ) {
+                alt33=1;
             }
-            else if ( (LA32_0==82) ) {
-                alt32=2;
+            else if ( (LA33_0==80) ) {
+                alt33=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 32, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
-            switch (alt32) {
+            switch (alt33) {
                 case 1 :
-                    // InternalSignalDSL.g:3414:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3462:2: ( ( rule__XCasePart__Group_3_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3414:2: ( ( rule__XCasePart__Group_3_0__0 ) )
-                    // InternalSignalDSL.g:3415:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalSignalDSL.g:3462:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3463:3: ( rule__XCasePart__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
                     }
-                    // InternalSignalDSL.g:3416:3: ( rule__XCasePart__Group_3_0__0 )
-                    // InternalSignalDSL.g:3416:4: rule__XCasePart__Group_3_0__0
+                    // InternalSignalDSL.g:3464:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalSignalDSL.g:3464:4: rule__XCasePart__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_3_0__0();
@@ -12431,16 +12603,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3420:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalSignalDSL.g:3468:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
                     {
-                    // InternalSignalDSL.g:3420:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
-                    // InternalSignalDSL.g:3421:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalSignalDSL.g:3468:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalSignalDSL.g:3469:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
                     }
-                    // InternalSignalDSL.g:3422:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
-                    // InternalSignalDSL.g:3422:4: rule__XCasePart__FallThroughAssignment_3_1
+                    // InternalSignalDSL.g:3470:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalSignalDSL.g:3470:4: rule__XCasePart__FallThroughAssignment_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__FallThroughAssignment_3_1();
@@ -12477,35 +12649,35 @@
 
 
     // $ANTLR start "rule__XExpressionOrVarDeclaration__Alternatives"
-    // InternalSignalDSL.g:3430:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    // InternalSignalDSL.g:3478:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
     public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3434:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
-            int alt33=2;
-            int LA33_0 = input.LA(1);
+            // InternalSignalDSL.g:3482:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            if ( (LA33_0==44||LA33_0==111) ) {
-                alt33=1;
+            if ( (LA34_0==44||LA34_0==110) ) {
+                alt34=1;
             }
-            else if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_STRING)||LA33_0==27||(LA33_0>=34 && LA33_0<=35)||LA33_0==40||(LA33_0>=45 && LA33_0<=50)||LA33_0==63||LA33_0==80||(LA33_0>=84 && LA33_0<=85)||LA33_0==88||LA33_0==90||(LA33_0>=93 && LA33_0<=101)||LA33_0==103||LA33_0==112) ) {
-                alt33=2;
+            else if ( ((LA34_0>=RULE_ID && LA34_0<=RULE_STRING)||LA34_0==27||(LA34_0>=34 && LA34_0<=35)||LA34_0==40||(LA34_0>=45 && LA34_0<=50)||LA34_0==62||LA34_0==78||(LA34_0>=82 && LA34_0<=83)||LA34_0==86||LA34_0==88||(LA34_0>=91 && LA34_0<=99)||LA34_0==101||LA34_0==111) ) {
+                alt34=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 33, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
-            switch (alt33) {
+            switch (alt34) {
                 case 1 :
-                    // InternalSignalDSL.g:3435:2: ( ruleXVariableDeclaration )
+                    // InternalSignalDSL.g:3483:2: ( ruleXVariableDeclaration )
                     {
-                    // InternalSignalDSL.g:3435:2: ( ruleXVariableDeclaration )
-                    // InternalSignalDSL.g:3436:3: ruleXVariableDeclaration
+                    // InternalSignalDSL.g:3483:2: ( ruleXVariableDeclaration )
+                    // InternalSignalDSL.g:3484:3: ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
@@ -12525,10 +12697,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3441:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:3489:2: ( ruleXExpression )
                     {
-                    // InternalSignalDSL.g:3441:2: ( ruleXExpression )
-                    // InternalSignalDSL.g:3442:3: ruleXExpression
+                    // InternalSignalDSL.g:3489:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:3490:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
@@ -12565,41 +12737,41 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_1"
-    // InternalSignalDSL.g:3451:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    // InternalSignalDSL.g:3499:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
     public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3455:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
-            int alt34=2;
-            int LA34_0 = input.LA(1);
+            // InternalSignalDSL.g:3503:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            int alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( (LA34_0==111) ) {
-                alt34=1;
+            if ( (LA35_0==110) ) {
+                alt35=1;
             }
-            else if ( (LA34_0==44) ) {
-                alt34=2;
+            else if ( (LA35_0==44) ) {
+                alt35=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 34, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
-            switch (alt34) {
+            switch (alt35) {
                 case 1 :
-                    // InternalSignalDSL.g:3456:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalSignalDSL.g:3504:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3456:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
-                    // InternalSignalDSL.g:3457:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalSignalDSL.g:3504:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalSignalDSL.g:3505:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
                     }
-                    // InternalSignalDSL.g:3458:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
-                    // InternalSignalDSL.g:3458:4: rule__XVariableDeclaration__WriteableAssignment_1_0
+                    // InternalSignalDSL.g:3506:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalSignalDSL.g:3506:4: rule__XVariableDeclaration__WriteableAssignment_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__WriteableAssignment_1_0();
@@ -12619,10 +12791,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3462:2: ( 'val' )
+                    // InternalSignalDSL.g:3510:2: ( 'val' )
                     {
-                    // InternalSignalDSL.g:3462:2: ( 'val' )
-                    // InternalSignalDSL.g:3463:3: 'val'
+                    // InternalSignalDSL.g:3510:2: ( 'val' )
+                    // InternalSignalDSL.g:3511:3: 'val'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
@@ -12655,55 +12827,55 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_2"
-    // InternalSignalDSL.g:3472:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
+    // InternalSignalDSL.g:3520:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
     public final void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3476:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
-            int alt35=2;
-            int LA35_0 = input.LA(1);
+            // InternalSignalDSL.g:3524:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            int alt36=2;
+            int LA36_0 = input.LA(1);
 
-            if ( (LA35_0==RULE_ID) ) {
-                int LA35_1 = input.LA(2);
+            if ( (LA36_0==RULE_ID) ) {
+                int LA36_1 = input.LA(2);
 
-                if ( (synpred79_InternalSignalDSL()) ) {
-                    alt35=1;
+                if ( (synpred80_InternalSignalDSL()) ) {
+                    alt36=1;
                 }
                 else if ( (true) ) {
-                    alt35=2;
+                    alt36=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 35, 1, input);
+                        new NoViableAltException("", 36, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA35_0==31||LA35_0==80) ) {
-                alt35=1;
+            else if ( (LA36_0==31||LA36_0==78) ) {
+                alt36=1;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 35, 0, input);
+                    new NoViableAltException("", 36, 0, input);
 
                 throw nvae;
             }
-            switch (alt35) {
+            switch (alt36) {
                 case 1 :
-                    // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3525:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:3478:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:3525:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3526:3: ( rule__XVariableDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:3479:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-                    // InternalSignalDSL.g:3479:4: rule__XVariableDeclaration__Group_2_0__0
+                    // InternalSignalDSL.g:3527:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:3527:4: rule__XVariableDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_2_0__0();
@@ -12723,16 +12895,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3483:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalSignalDSL.g:3531:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
                     {
-                    // InternalSignalDSL.g:3483:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
-                    // InternalSignalDSL.g:3484:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalSignalDSL.g:3531:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalSignalDSL.g:3532:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
                     }
-                    // InternalSignalDSL.g:3485:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
-                    // InternalSignalDSL.g:3485:4: rule__XVariableDeclaration__NameAssignment_2_1
+                    // InternalSignalDSL.g:3533:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalSignalDSL.g:3533:4: rule__XVariableDeclaration__NameAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__NameAssignment_2_1();
@@ -12769,27 +12941,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Alternatives_3_1"
-    // InternalSignalDSL.g:3493:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
+    // InternalSignalDSL.g:3541:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
     public final void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3497:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
-            int alt36=2;
-            alt36 = dfa36.predict(input);
-            switch (alt36) {
+            // InternalSignalDSL.g:3545:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            int alt37=2;
+            alt37 = dfa37.predict(input);
+            switch (alt37) {
                 case 1 :
-                    // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalSignalDSL.g:3546:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-                    // InternalSignalDSL.g:3499:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalSignalDSL.g:3546:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalSignalDSL.g:3547:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
                     }
-                    // InternalSignalDSL.g:3500:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-                    // InternalSignalDSL.g:3500:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+                    // InternalSignalDSL.g:3548:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalSignalDSL.g:3548:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -12809,16 +12981,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3504:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3552:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3504:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
-                    // InternalSignalDSL.g:3505:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalSignalDSL.g:3552:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3553:3: ( rule__XFeatureCall__Group_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
                     }
-                    // InternalSignalDSL.g:3506:3: ( rule__XFeatureCall__Group_3_1_1__0 )
-                    // InternalSignalDSL.g:3506:4: rule__XFeatureCall__Group_3_1_1__0
+                    // InternalSignalDSL.g:3554:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalSignalDSL.g:3554:4: rule__XFeatureCall__Group_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3_1_1__0();
@@ -12855,54 +13027,54 @@
 
 
     // $ANTLR start "rule__FeatureCallID__Alternatives"
-    // InternalSignalDSL.g:3514:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    // InternalSignalDSL.g:3562:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
     public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3518:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
-            int alt37=5;
+            // InternalSignalDSL.g:3566:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            int alt38=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                alt37=1;
+                alt38=1;
                 }
                 break;
             case 45:
                 {
-                alt37=2;
+                alt38=2;
                 }
                 break;
             case 46:
                 {
-                alt37=3;
+                alt38=3;
                 }
                 break;
             case 47:
                 {
-                alt37=4;
+                alt38=4;
                 }
                 break;
             case 48:
                 {
-                alt37=5;
+                alt38=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 37, 0, input);
+                    new NoViableAltException("", 38, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt37) {
+            switch (alt38) {
                 case 1 :
-                    // InternalSignalDSL.g:3519:2: ( ruleValidID )
+                    // InternalSignalDSL.g:3567:2: ( ruleValidID )
                     {
-                    // InternalSignalDSL.g:3519:2: ( ruleValidID )
-                    // InternalSignalDSL.g:3520:3: ruleValidID
+                    // InternalSignalDSL.g:3567:2: ( ruleValidID )
+                    // InternalSignalDSL.g:3568:3: ruleValidID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
@@ -12922,10 +13094,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3525:2: ( 'extends' )
+                    // InternalSignalDSL.g:3573:2: ( 'extends' )
                     {
-                    // InternalSignalDSL.g:3525:2: ( 'extends' )
-                    // InternalSignalDSL.g:3526:3: 'extends'
+                    // InternalSignalDSL.g:3573:2: ( 'extends' )
+                    // InternalSignalDSL.g:3574:3: 'extends'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
@@ -12941,10 +13113,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3531:2: ( 'static' )
+                    // InternalSignalDSL.g:3579:2: ( 'static' )
                     {
-                    // InternalSignalDSL.g:3531:2: ( 'static' )
-                    // InternalSignalDSL.g:3532:3: 'static'
+                    // InternalSignalDSL.g:3579:2: ( 'static' )
+                    // InternalSignalDSL.g:3580:3: 'static'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
@@ -12960,10 +13132,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3537:2: ( 'import' )
+                    // InternalSignalDSL.g:3585:2: ( 'import' )
                     {
-                    // InternalSignalDSL.g:3537:2: ( 'import' )
-                    // InternalSignalDSL.g:3538:3: 'import'
+                    // InternalSignalDSL.g:3585:2: ( 'import' )
+                    // InternalSignalDSL.g:3586:3: 'import'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
@@ -12979,10 +13151,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3543:2: ( 'extension' )
+                    // InternalSignalDSL.g:3591:2: ( 'extension' )
                     {
-                    // InternalSignalDSL.g:3543:2: ( 'extension' )
-                    // InternalSignalDSL.g:3544:3: 'extension'
+                    // InternalSignalDSL.g:3591:2: ( 'extension' )
+                    // InternalSignalDSL.g:3592:3: 'extension'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
@@ -13015,35 +13187,35 @@
 
 
     // $ANTLR start "rule__IdOrSuper__Alternatives"
-    // InternalSignalDSL.g:3553:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    // InternalSignalDSL.g:3601:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
     public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3557:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
-            int alt38=2;
-            int LA38_0 = input.LA(1);
+            // InternalSignalDSL.g:3605:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            if ( (LA38_0==RULE_ID||(LA38_0>=45 && LA38_0<=48)) ) {
-                alt38=1;
+            if ( (LA39_0==RULE_ID||(LA39_0>=45 && LA39_0<=48)) ) {
+                alt39=1;
             }
-            else if ( (LA38_0==49) ) {
-                alt38=2;
+            else if ( (LA39_0==49) ) {
+                alt39=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
+                    new NoViableAltException("", 39, 0, input);
 
                 throw nvae;
             }
-            switch (alt38) {
+            switch (alt39) {
                 case 1 :
-                    // InternalSignalDSL.g:3558:2: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:3606:2: ( ruleFeatureCallID )
                     {
-                    // InternalSignalDSL.g:3558:2: ( ruleFeatureCallID )
-                    // InternalSignalDSL.g:3559:3: ruleFeatureCallID
+                    // InternalSignalDSL.g:3606:2: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:3607:3: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
@@ -13063,10 +13235,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3564:2: ( 'super' )
+                    // InternalSignalDSL.g:3612:2: ( 'super' )
                     {
-                    // InternalSignalDSL.g:3564:2: ( 'super' )
-                    // InternalSignalDSL.g:3565:3: 'super'
+                    // InternalSignalDSL.g:3612:2: ( 'super' )
+                    // InternalSignalDSL.g:3613:3: 'super'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
@@ -13099,27 +13271,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Alternatives_4_1"
-    // InternalSignalDSL.g:3574:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
+    // InternalSignalDSL.g:3622:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
     public final void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3578:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
-            int alt39=2;
-            alt39 = dfa39.predict(input);
-            switch (alt39) {
+            // InternalSignalDSL.g:3626:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            int alt40=2;
+            alt40 = dfa40.predict(input);
+            switch (alt40) {
                 case 1 :
-                    // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalSignalDSL.g:3627:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-                    // InternalSignalDSL.g:3580:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalSignalDSL.g:3627:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalSignalDSL.g:3628:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
                     }
-                    // InternalSignalDSL.g:3581:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-                    // InternalSignalDSL.g:3581:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+                    // InternalSignalDSL.g:3629:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalSignalDSL.g:3629:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -13139,16 +13311,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3585:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalSignalDSL.g:3633:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3585:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
-                    // InternalSignalDSL.g:3586:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalSignalDSL.g:3633:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalSignalDSL.g:3634:3: ( rule__XConstructorCall__Group_4_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
                     }
-                    // InternalSignalDSL.g:3587:3: ( rule__XConstructorCall__Group_4_1_1__0 )
-                    // InternalSignalDSL.g:3587:4: rule__XConstructorCall__Group_4_1_1__0
+                    // InternalSignalDSL.g:3635:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalSignalDSL.g:3635:4: rule__XConstructorCall__Group_4_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4_1_1__0();
@@ -13185,35 +13357,35 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Alternatives_1"
-    // InternalSignalDSL.g:3595:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    // InternalSignalDSL.g:3643:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
     public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3599:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
-            int alt40=2;
-            int LA40_0 = input.LA(1);
+            // InternalSignalDSL.g:3647:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
 
-            if ( (LA40_0==50) ) {
-                alt40=1;
+            if ( (LA41_0==50) ) {
+                alt41=1;
             }
-            else if ( (LA40_0==112) ) {
-                alt40=2;
+            else if ( (LA41_0==111) ) {
+                alt41=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 40, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt40) {
+            switch (alt41) {
                 case 1 :
-                    // InternalSignalDSL.g:3600:2: ( 'false' )
+                    // InternalSignalDSL.g:3648:2: ( 'false' )
                     {
-                    // InternalSignalDSL.g:3600:2: ( 'false' )
-                    // InternalSignalDSL.g:3601:3: 'false'
+                    // InternalSignalDSL.g:3648:2: ( 'false' )
+                    // InternalSignalDSL.g:3649:3: 'false'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
@@ -13229,16 +13401,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3606:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalSignalDSL.g:3654:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
                     {
-                    // InternalSignalDSL.g:3606:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
-                    // InternalSignalDSL.g:3607:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalSignalDSL.g:3654:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalSignalDSL.g:3655:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
                     }
-                    // InternalSignalDSL.g:3608:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
-                    // InternalSignalDSL.g:3608:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
+                    // InternalSignalDSL.g:3656:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalSignalDSL.g:3656:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBooleanLiteral__IsTrueAssignment_1_1();
@@ -13275,41 +13447,41 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Alternatives_3"
-    // InternalSignalDSL.g:3616:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
+    // InternalSignalDSL.g:3664:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
     public final void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3620:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
-            int alt41=2;
-            int LA41_0 = input.LA(1);
+            // InternalSignalDSL.g:3668:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
 
-            if ( (LA41_0==104) ) {
-                alt41=1;
+            if ( (LA42_0==102) ) {
+                alt42=1;
             }
-            else if ( (LA41_0==102) ) {
-                alt41=2;
+            else if ( (LA42_0==100) ) {
+                alt42=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt42) {
                 case 1 :
-                    // InternalSignalDSL.g:3621:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3669:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3621:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
-                    // InternalSignalDSL.g:3622:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalSignalDSL.g:3669:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3670:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
                     }
-                    // InternalSignalDSL.g:3623:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
-                    // InternalSignalDSL.g:3623:4: rule__XTryCatchFinallyExpression__Group_3_0__0
+                    // InternalSignalDSL.g:3671:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalSignalDSL.g:3671:4: rule__XTryCatchFinallyExpression__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0__0();
@@ -13329,16 +13501,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3627:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalSignalDSL.g:3675:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3627:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
-                    // InternalSignalDSL.g:3628:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalSignalDSL.g:3675:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalSignalDSL.g:3676:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
                     }
-                    // InternalSignalDSL.g:3629:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
-                    // InternalSignalDSL.g:3629:4: rule__XTryCatchFinallyExpression__Group_3_1__0
+                    // InternalSignalDSL.g:3677:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalSignalDSL.g:3677:4: rule__XTryCatchFinallyExpression__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_1__0();
@@ -13375,35 +13547,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives"
-    // InternalSignalDSL.g:3637:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    // InternalSignalDSL.g:3685:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
     public final void rule__Number__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3641:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
-            int alt42=2;
-            int LA42_0 = input.LA(1);
+            // InternalSignalDSL.g:3689:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
 
-            if ( (LA42_0==RULE_HEX) ) {
-                alt42=1;
+            if ( (LA43_0==RULE_HEX) ) {
+                alt43=1;
             }
-            else if ( ((LA42_0>=RULE_INT && LA42_0<=RULE_DECIMAL)) ) {
-                alt42=2;
+            else if ( ((LA43_0>=RULE_INT && LA43_0<=RULE_DECIMAL)) ) {
+                alt43=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 43, 0, input);
 
                 throw nvae;
             }
-            switch (alt42) {
+            switch (alt43) {
                 case 1 :
-                    // InternalSignalDSL.g:3642:2: ( RULE_HEX )
+                    // InternalSignalDSL.g:3690:2: ( RULE_HEX )
                     {
-                    // InternalSignalDSL.g:3642:2: ( RULE_HEX )
-                    // InternalSignalDSL.g:3643:3: RULE_HEX
+                    // InternalSignalDSL.g:3690:2: ( RULE_HEX )
+                    // InternalSignalDSL.g:3691:3: RULE_HEX
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
@@ -13419,16 +13591,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3648:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalSignalDSL.g:3696:2: ( ( rule__Number__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3648:2: ( ( rule__Number__Group_1__0 ) )
-                    // InternalSignalDSL.g:3649:3: ( rule__Number__Group_1__0 )
+                    // InternalSignalDSL.g:3696:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalSignalDSL.g:3697:3: ( rule__Number__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:3650:3: ( rule__Number__Group_1__0 )
-                    // InternalSignalDSL.g:3650:4: rule__Number__Group_1__0
+                    // InternalSignalDSL.g:3698:3: ( rule__Number__Group_1__0 )
+                    // InternalSignalDSL.g:3698:4: rule__Number__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1__0();
@@ -13465,35 +13637,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_0"
-    // InternalSignalDSL.g:3658:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalSignalDSL.g:3706:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3662:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
-            int alt43=2;
-            int LA43_0 = input.LA(1);
+            // InternalSignalDSL.g:3710:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt44=2;
+            int LA44_0 = input.LA(1);
 
-            if ( (LA43_0==RULE_INT) ) {
-                alt43=1;
+            if ( (LA44_0==RULE_INT) ) {
+                alt44=1;
             }
-            else if ( (LA43_0==RULE_DECIMAL) ) {
-                alt43=2;
+            else if ( (LA44_0==RULE_DECIMAL) ) {
+                alt44=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
-            switch (alt43) {
+            switch (alt44) {
                 case 1 :
-                    // InternalSignalDSL.g:3663:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3711:2: ( RULE_INT )
                     {
-                    // InternalSignalDSL.g:3663:2: ( RULE_INT )
-                    // InternalSignalDSL.g:3664:3: RULE_INT
+                    // InternalSignalDSL.g:3711:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3712:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
@@ -13509,10 +13681,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3669:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3717:2: ( RULE_DECIMAL )
                     {
-                    // InternalSignalDSL.g:3669:2: ( RULE_DECIMAL )
-                    // InternalSignalDSL.g:3670:3: RULE_DECIMAL
+                    // InternalSignalDSL.g:3717:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3718:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
@@ -13545,35 +13717,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_1_1"
-    // InternalSignalDSL.g:3679:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalSignalDSL.g:3727:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3683:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
-            int alt44=2;
-            int LA44_0 = input.LA(1);
+            // InternalSignalDSL.g:3731:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            if ( (LA44_0==RULE_INT) ) {
-                alt44=1;
+            if ( (LA45_0==RULE_INT) ) {
+                alt45=1;
             }
-            else if ( (LA44_0==RULE_DECIMAL) ) {
-                alt44=2;
+            else if ( (LA45_0==RULE_DECIMAL) ) {
+                alt45=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 44, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
-            switch (alt44) {
+            switch (alt45) {
                 case 1 :
-                    // InternalSignalDSL.g:3684:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3732:2: ( RULE_INT )
                     {
-                    // InternalSignalDSL.g:3684:2: ( RULE_INT )
-                    // InternalSignalDSL.g:3685:3: RULE_INT
+                    // InternalSignalDSL.g:3732:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3733:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
@@ -13589,10 +13761,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3690:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3738:2: ( RULE_DECIMAL )
                     {
-                    // InternalSignalDSL.g:3690:2: ( RULE_DECIMAL )
-                    // InternalSignalDSL.g:3691:3: RULE_DECIMAL
+                    // InternalSignalDSL.g:3738:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3739:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
@@ -13625,41 +13797,41 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Alternatives"
-    // InternalSignalDSL.g:3700:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    // InternalSignalDSL.g:3748:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
     public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3704:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
-            int alt45=2;
-            int LA45_0 = input.LA(1);
+            // InternalSignalDSL.g:3752:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            int alt46=2;
+            int LA46_0 = input.LA(1);
 
-            if ( (LA45_0==RULE_ID) ) {
-                alt45=1;
+            if ( (LA46_0==RULE_ID) ) {
+                alt46=1;
             }
-            else if ( (LA45_0==31||LA45_0==80) ) {
-                alt45=2;
+            else if ( (LA46_0==31||LA46_0==78) ) {
+                alt46=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 45, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
-            switch (alt45) {
+            switch (alt46) {
                 case 1 :
-                    // InternalSignalDSL.g:3705:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalSignalDSL.g:3753:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3705:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
-                    // InternalSignalDSL.g:3706:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalSignalDSL.g:3753:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalSignalDSL.g:3754:3: ( rule__JvmTypeReference__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:3707:3: ( rule__JvmTypeReference__Group_0__0 )
-                    // InternalSignalDSL.g:3707:4: rule__JvmTypeReference__Group_0__0
+                    // InternalSignalDSL.g:3755:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalSignalDSL.g:3755:4: rule__JvmTypeReference__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmTypeReference__Group_0__0();
@@ -13679,10 +13851,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3711:2: ( ruleXFunctionTypeRef )
+                    // InternalSignalDSL.g:3759:2: ( ruleXFunctionTypeRef )
                     {
-                    // InternalSignalDSL.g:3711:2: ( ruleXFunctionTypeRef )
-                    // InternalSignalDSL.g:3712:3: ruleXFunctionTypeRef
+                    // InternalSignalDSL.g:3759:2: ( ruleXFunctionTypeRef )
+                    // InternalSignalDSL.g:3760:3: ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
@@ -13719,35 +13891,35 @@
 
 
     // $ANTLR start "rule__JvmArgumentTypeReference__Alternatives"
-    // InternalSignalDSL.g:3721:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    // InternalSignalDSL.g:3769:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
     public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3725:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
-            int alt46=2;
-            int LA46_0 = input.LA(1);
+            // InternalSignalDSL.g:3773:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
 
-            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==80) ) {
-                alt46=1;
+            if ( (LA47_0==RULE_ID||LA47_0==31||LA47_0==78) ) {
+                alt47=1;
             }
-            else if ( (LA46_0==105) ) {
-                alt46=2;
+            else if ( (LA47_0==103) ) {
+                alt47=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 46, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
-            switch (alt46) {
+            switch (alt47) {
                 case 1 :
-                    // InternalSignalDSL.g:3726:2: ( ruleJvmTypeReference )
+                    // InternalSignalDSL.g:3774:2: ( ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:3726:2: ( ruleJvmTypeReference )
-                    // InternalSignalDSL.g:3727:3: ruleJvmTypeReference
+                    // InternalSignalDSL.g:3774:2: ( ruleJvmTypeReference )
+                    // InternalSignalDSL.g:3775:3: ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
@@ -13767,10 +13939,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3732:2: ( ruleJvmWildcardTypeReference )
+                    // InternalSignalDSL.g:3780:2: ( ruleJvmWildcardTypeReference )
                     {
-                    // InternalSignalDSL.g:3732:2: ( ruleJvmWildcardTypeReference )
-                    // InternalSignalDSL.g:3733:3: ruleJvmWildcardTypeReference
+                    // InternalSignalDSL.g:3780:2: ( ruleJvmWildcardTypeReference )
+                    // InternalSignalDSL.g:3781:3: ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
@@ -13807,41 +13979,41 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Alternatives_2"
-    // InternalSignalDSL.g:3742:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
+    // InternalSignalDSL.g:3790:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
     public final void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3746:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
-            int alt47=2;
-            int LA47_0 = input.LA(1);
+            // InternalSignalDSL.g:3794:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
 
-            if ( (LA47_0==45) ) {
-                alt47=1;
+            if ( (LA48_0==45) ) {
+                alt48=1;
             }
-            else if ( (LA47_0==49) ) {
-                alt47=2;
+            else if ( (LA48_0==49) ) {
+                alt48=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
+                    new NoViableAltException("", 48, 0, input);
 
                 throw nvae;
             }
-            switch (alt47) {
+            switch (alt48) {
                 case 1 :
-                    // InternalSignalDSL.g:3747:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3795:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3747:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:3748:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalSignalDSL.g:3795:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3796:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:3749:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
-                    // InternalSignalDSL.g:3749:4: rule__JvmWildcardTypeReference__Group_2_0__0
+                    // InternalSignalDSL.g:3797:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalSignalDSL.g:3797:4: rule__JvmWildcardTypeReference__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_0__0();
@@ -13861,16 +14033,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3753:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3801:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3753:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
-                    // InternalSignalDSL.g:3754:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalSignalDSL.g:3801:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3802:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
                     }
-                    // InternalSignalDSL.g:3755:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
-                    // InternalSignalDSL.g:3755:4: rule__JvmWildcardTypeReference__Group_2_1__0
+                    // InternalSignalDSL.g:3803:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalSignalDSL.g:3803:4: rule__JvmWildcardTypeReference__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_1__0();
@@ -13907,43 +14079,43 @@
 
 
     // $ANTLR start "rule__SignalActionEnum__Alternatives"
-    // InternalSignalDSL.g:3763:1: rule__SignalActionEnum__Alternatives : ( ( ( 'Import' ) ) | ( ( 'Export' ) ) );
+    // InternalSignalDSL.g:3811:1: rule__SignalActionEnum__Alternatives : ( ( ( 'import' ) ) | ( ( 'export' ) ) );
     public final void rule__SignalActionEnum__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3767:1: ( ( ( 'Import' ) ) | ( ( 'Export' ) ) )
-            int alt48=2;
-            int LA48_0 = input.LA(1);
+            // InternalSignalDSL.g:3815:1: ( ( ( 'import' ) ) | ( ( 'export' ) ) )
+            int alt49=2;
+            int LA49_0 = input.LA(1);
 
-            if ( (LA48_0==51) ) {
-                alt48=1;
+            if ( (LA49_0==47) ) {
+                alt49=1;
             }
-            else if ( (LA48_0==52) ) {
-                alt48=2;
+            else if ( (LA49_0==51) ) {
+                alt49=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 48, 0, input);
+                    new NoViableAltException("", 49, 0, input);
 
                 throw nvae;
             }
-            switch (alt48) {
+            switch (alt49) {
                 case 1 :
-                    // InternalSignalDSL.g:3768:2: ( ( 'Import' ) )
+                    // InternalSignalDSL.g:3816:2: ( ( 'import' ) )
                     {
-                    // InternalSignalDSL.g:3768:2: ( ( 'Import' ) )
-                    // InternalSignalDSL.g:3769:3: ( 'Import' )
+                    // InternalSignalDSL.g:3816:2: ( ( 'import' ) )
+                    // InternalSignalDSL.g:3817:3: ( 'import' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0()); 
                     }
-                    // InternalSignalDSL.g:3770:3: ( 'Import' )
-                    // InternalSignalDSL.g:3770:4: 'Import'
+                    // InternalSignalDSL.g:3818:3: ( 'import' )
+                    // InternalSignalDSL.g:3818:4: 'import'
                     {
-                    match(input,51,FOLLOW_2); if (state.failed) return ;
+                    match(input,47,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -13957,18 +14129,18 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3774:2: ( ( 'Export' ) )
+                    // InternalSignalDSL.g:3822:2: ( ( 'export' ) )
                     {
-                    // InternalSignalDSL.g:3774:2: ( ( 'Export' ) )
-                    // InternalSignalDSL.g:3775:3: ( 'Export' )
+                    // InternalSignalDSL.g:3822:2: ( ( 'export' ) )
+                    // InternalSignalDSL.g:3823:3: ( 'export' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1()); 
                     }
-                    // InternalSignalDSL.g:3776:3: ( 'Export' )
-                    // InternalSignalDSL.g:3776:4: 'Export'
+                    // InternalSignalDSL.g:3824:3: ( 'export' )
+                    // InternalSignalDSL.g:3824:4: 'export'
                     {
-                    match(input,52,FOLLOW_2); if (state.failed) return ;
+                    match(input,51,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -13999,43 +14171,43 @@
 
 
     // $ANTLR start "rule__SignalExecutionTypeEnum__Alternatives"
-    // InternalSignalDSL.g:3784:1: rule__SignalExecutionTypeEnum__Alternatives : ( ( ( 'sequential' ) ) | ( ( 'parallel' ) ) );
+    // InternalSignalDSL.g:3832:1: rule__SignalExecutionTypeEnum__Alternatives : ( ( ( 'sequential' ) ) | ( ( 'parallel' ) ) );
     public final void rule__SignalExecutionTypeEnum__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3788:1: ( ( ( 'sequential' ) ) | ( ( 'parallel' ) ) )
-            int alt49=2;
-            int LA49_0 = input.LA(1);
+            // InternalSignalDSL.g:3836:1: ( ( ( 'sequential' ) ) | ( ( 'parallel' ) ) )
+            int alt50=2;
+            int LA50_0 = input.LA(1);
 
-            if ( (LA49_0==53) ) {
-                alt49=1;
+            if ( (LA50_0==52) ) {
+                alt50=1;
             }
-            else if ( (LA49_0==54) ) {
-                alt49=2;
+            else if ( (LA50_0==53) ) {
+                alt50=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 49, 0, input);
+                    new NoViableAltException("", 50, 0, input);
 
                 throw nvae;
             }
-            switch (alt49) {
+            switch (alt50) {
                 case 1 :
-                    // InternalSignalDSL.g:3789:2: ( ( 'sequential' ) )
+                    // InternalSignalDSL.g:3837:2: ( ( 'sequential' ) )
                     {
-                    // InternalSignalDSL.g:3789:2: ( ( 'sequential' ) )
-                    // InternalSignalDSL.g:3790:3: ( 'sequential' )
+                    // InternalSignalDSL.g:3837:2: ( ( 'sequential' ) )
+                    // InternalSignalDSL.g:3838:3: ( 'sequential' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0()); 
                     }
-                    // InternalSignalDSL.g:3791:3: ( 'sequential' )
-                    // InternalSignalDSL.g:3791:4: 'sequential'
+                    // InternalSignalDSL.g:3839:3: ( 'sequential' )
+                    // InternalSignalDSL.g:3839:4: 'sequential'
                     {
-                    match(input,53,FOLLOW_2); if (state.failed) return ;
+                    match(input,52,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14049,18 +14221,18 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3795:2: ( ( 'parallel' ) )
+                    // InternalSignalDSL.g:3843:2: ( ( 'parallel' ) )
                     {
-                    // InternalSignalDSL.g:3795:2: ( ( 'parallel' ) )
-                    // InternalSignalDSL.g:3796:3: ( 'parallel' )
+                    // InternalSignalDSL.g:3843:2: ( ( 'parallel' ) )
+                    // InternalSignalDSL.g:3844:3: ( 'parallel' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1()); 
                     }
-                    // InternalSignalDSL.g:3797:3: ( 'parallel' )
-                    // InternalSignalDSL.g:3797:4: 'parallel'
+                    // InternalSignalDSL.g:3845:3: ( 'parallel' )
+                    // InternalSignalDSL.g:3845:4: 'parallel'
                     {
-                    match(input,54,FOLLOW_2); if (state.failed) return ;
+                    match(input,53,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14091,72 +14263,72 @@
 
 
     // $ANTLR start "rule__DayOfWeekEnum__Alternatives"
-    // InternalSignalDSL.g:3805:1: rule__DayOfWeekEnum__Alternatives : ( ( ( 'sunday' ) ) | ( ( 'monday' ) ) | ( ( 'tuesday' ) ) | ( ( 'wednesday' ) ) | ( ( 'thursday' ) ) | ( ( 'friday' ) ) | ( ( 'saturday' ) ) );
+    // InternalSignalDSL.g:3853:1: rule__DayOfWeekEnum__Alternatives : ( ( ( 'sunday' ) ) | ( ( 'monday' ) ) | ( ( 'tuesday' ) ) | ( ( 'wednesday' ) ) | ( ( 'thursday' ) ) | ( ( 'friday' ) ) | ( ( 'saturday' ) ) );
     public final void rule__DayOfWeekEnum__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3809:1: ( ( ( 'sunday' ) ) | ( ( 'monday' ) ) | ( ( 'tuesday' ) ) | ( ( 'wednesday' ) ) | ( ( 'thursday' ) ) | ( ( 'friday' ) ) | ( ( 'saturday' ) ) )
-            int alt50=7;
+            // InternalSignalDSL.g:3857:1: ( ( ( 'sunday' ) ) | ( ( 'monday' ) ) | ( ( 'tuesday' ) ) | ( ( 'wednesday' ) ) | ( ( 'thursday' ) ) | ( ( 'friday' ) ) | ( ( 'saturday' ) ) )
+            int alt51=7;
             switch ( input.LA(1) ) {
+            case 54:
+                {
+                alt51=1;
+                }
+                break;
             case 55:
                 {
-                alt50=1;
+                alt51=2;
                 }
                 break;
             case 56:
                 {
-                alt50=2;
+                alt51=3;
                 }
                 break;
             case 57:
                 {
-                alt50=3;
+                alt51=4;
                 }
                 break;
             case 58:
                 {
-                alt50=4;
+                alt51=5;
                 }
                 break;
             case 59:
                 {
-                alt50=5;
+                alt51=6;
                 }
                 break;
             case 60:
                 {
-                alt50=6;
-                }
-                break;
-            case 61:
-                {
-                alt50=7;
+                alt51=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 50, 0, input);
+                    new NoViableAltException("", 51, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt50) {
+            switch (alt51) {
                 case 1 :
-                    // InternalSignalDSL.g:3810:2: ( ( 'sunday' ) )
+                    // InternalSignalDSL.g:3858:2: ( ( 'sunday' ) )
                     {
-                    // InternalSignalDSL.g:3810:2: ( ( 'sunday' ) )
-                    // InternalSignalDSL.g:3811:3: ( 'sunday' )
+                    // InternalSignalDSL.g:3858:2: ( ( 'sunday' ) )
+                    // InternalSignalDSL.g:3859:3: ( 'sunday' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0()); 
                     }
-                    // InternalSignalDSL.g:3812:3: ( 'sunday' )
-                    // InternalSignalDSL.g:3812:4: 'sunday'
+                    // InternalSignalDSL.g:3860:3: ( 'sunday' )
+                    // InternalSignalDSL.g:3860:4: 'sunday'
                     {
-                    match(input,55,FOLLOW_2); if (state.failed) return ;
+                    match(input,54,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14170,18 +14342,18 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3816:2: ( ( 'monday' ) )
+                    // InternalSignalDSL.g:3864:2: ( ( 'monday' ) )
                     {
-                    // InternalSignalDSL.g:3816:2: ( ( 'monday' ) )
-                    // InternalSignalDSL.g:3817:3: ( 'monday' )
+                    // InternalSignalDSL.g:3864:2: ( ( 'monday' ) )
+                    // InternalSignalDSL.g:3865:3: ( 'monday' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1()); 
                     }
-                    // InternalSignalDSL.g:3818:3: ( 'monday' )
-                    // InternalSignalDSL.g:3818:4: 'monday'
+                    // InternalSignalDSL.g:3866:3: ( 'monday' )
+                    // InternalSignalDSL.g:3866:4: 'monday'
                     {
-                    match(input,56,FOLLOW_2); if (state.failed) return ;
+                    match(input,55,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14195,18 +14367,18 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3822:2: ( ( 'tuesday' ) )
+                    // InternalSignalDSL.g:3870:2: ( ( 'tuesday' ) )
                     {
-                    // InternalSignalDSL.g:3822:2: ( ( 'tuesday' ) )
-                    // InternalSignalDSL.g:3823:3: ( 'tuesday' )
+                    // InternalSignalDSL.g:3870:2: ( ( 'tuesday' ) )
+                    // InternalSignalDSL.g:3871:3: ( 'tuesday' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2()); 
                     }
-                    // InternalSignalDSL.g:3824:3: ( 'tuesday' )
-                    // InternalSignalDSL.g:3824:4: 'tuesday'
+                    // InternalSignalDSL.g:3872:3: ( 'tuesday' )
+                    // InternalSignalDSL.g:3872:4: 'tuesday'
                     {
-                    match(input,57,FOLLOW_2); if (state.failed) return ;
+                    match(input,56,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14220,18 +14392,18 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3828:2: ( ( 'wednesday' ) )
+                    // InternalSignalDSL.g:3876:2: ( ( 'wednesday' ) )
                     {
-                    // InternalSignalDSL.g:3828:2: ( ( 'wednesday' ) )
-                    // InternalSignalDSL.g:3829:3: ( 'wednesday' )
+                    // InternalSignalDSL.g:3876:2: ( ( 'wednesday' ) )
+                    // InternalSignalDSL.g:3877:3: ( 'wednesday' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3()); 
                     }
-                    // InternalSignalDSL.g:3830:3: ( 'wednesday' )
-                    // InternalSignalDSL.g:3830:4: 'wednesday'
+                    // InternalSignalDSL.g:3878:3: ( 'wednesday' )
+                    // InternalSignalDSL.g:3878:4: 'wednesday'
                     {
-                    match(input,58,FOLLOW_2); if (state.failed) return ;
+                    match(input,57,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14245,18 +14417,18 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3834:2: ( ( 'thursday' ) )
+                    // InternalSignalDSL.g:3882:2: ( ( 'thursday' ) )
                     {
-                    // InternalSignalDSL.g:3834:2: ( ( 'thursday' ) )
-                    // InternalSignalDSL.g:3835:3: ( 'thursday' )
+                    // InternalSignalDSL.g:3882:2: ( ( 'thursday' ) )
+                    // InternalSignalDSL.g:3883:3: ( 'thursday' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4()); 
                     }
-                    // InternalSignalDSL.g:3836:3: ( 'thursday' )
-                    // InternalSignalDSL.g:3836:4: 'thursday'
+                    // InternalSignalDSL.g:3884:3: ( 'thursday' )
+                    // InternalSignalDSL.g:3884:4: 'thursday'
                     {
-                    match(input,59,FOLLOW_2); if (state.failed) return ;
+                    match(input,58,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14270,18 +14442,18 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3840:2: ( ( 'friday' ) )
+                    // InternalSignalDSL.g:3888:2: ( ( 'friday' ) )
                     {
-                    // InternalSignalDSL.g:3840:2: ( ( 'friday' ) )
-                    // InternalSignalDSL.g:3841:3: ( 'friday' )
+                    // InternalSignalDSL.g:3888:2: ( ( 'friday' ) )
+                    // InternalSignalDSL.g:3889:3: ( 'friday' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5()); 
                     }
-                    // InternalSignalDSL.g:3842:3: ( 'friday' )
-                    // InternalSignalDSL.g:3842:4: 'friday'
+                    // InternalSignalDSL.g:3890:3: ( 'friday' )
+                    // InternalSignalDSL.g:3890:4: 'friday'
                     {
-                    match(input,60,FOLLOW_2); if (state.failed) return ;
+                    match(input,59,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14295,18 +14467,18 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3846:2: ( ( 'saturday' ) )
+                    // InternalSignalDSL.g:3894:2: ( ( 'saturday' ) )
                     {
-                    // InternalSignalDSL.g:3846:2: ( ( 'saturday' ) )
-                    // InternalSignalDSL.g:3847:3: ( 'saturday' )
+                    // InternalSignalDSL.g:3894:2: ( ( 'saturday' ) )
+                    // InternalSignalDSL.g:3895:3: ( 'saturday' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6()); 
                     }
-                    // InternalSignalDSL.g:3848:3: ( 'saturday' )
-                    // InternalSignalDSL.g:3848:4: 'saturday'
+                    // InternalSignalDSL.g:3896:3: ( 'saturday' )
+                    // InternalSignalDSL.g:3896:4: 'saturday'
                     {
-                    match(input,61,FOLLOW_2); if (state.failed) return ;
+                    match(input,60,FOLLOW_2); if (state.failed) return ;
 
                     }
 
@@ -14337,14 +14509,14 @@
 
 
     // $ANTLR start "rule__SignalModel__Group__0"
-    // InternalSignalDSL.g:3856:1: rule__SignalModel__Group__0 : rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 ;
+    // InternalSignalDSL.g:3904:1: rule__SignalModel__Group__0 : rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 ;
     public final void rule__SignalModel__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3860:1: ( rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 )
-            // InternalSignalDSL.g:3861:2: rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1
+            // InternalSignalDSL.g:3908:1: ( rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 )
+            // InternalSignalDSL.g:3909:2: rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__SignalModel__Group__0__Impl();
@@ -14375,31 +14547,31 @@
 
 
     // $ANTLR start "rule__SignalModel__Group__0__Impl"
-    // InternalSignalDSL.g:3868:1: rule__SignalModel__Group__0__Impl : ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) ;
+    // InternalSignalDSL.g:3916:1: rule__SignalModel__Group__0__Impl : ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) ;
     public final void rule__SignalModel__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3872:1: ( ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) )
-            // InternalSignalDSL.g:3873:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
+            // InternalSignalDSL.g:3920:1: ( ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) )
+            // InternalSignalDSL.g:3921:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
             {
-            // InternalSignalDSL.g:3873:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
-            // InternalSignalDSL.g:3874:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
+            // InternalSignalDSL.g:3921:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
+            // InternalSignalDSL.g:3922:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getImportSectionAssignment_0()); 
             }
-            // InternalSignalDSL.g:3875:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
-            int alt51=2;
-            int LA51_0 = input.LA(1);
+            // InternalSignalDSL.g:3923:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            if ( (LA51_0==47) ) {
-                alt51=1;
+            if ( (LA52_0==47) ) {
+                alt52=1;
             }
-            switch (alt51) {
+            switch (alt52) {
                 case 1 :
-                    // InternalSignalDSL.g:3875:3: rule__SignalModel__ImportSectionAssignment_0
+                    // InternalSignalDSL.g:3923:3: rule__SignalModel__ImportSectionAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__SignalModel__ImportSectionAssignment_0();
@@ -14437,14 +14609,14 @@
 
 
     // $ANTLR start "rule__SignalModel__Group__1"
-    // InternalSignalDSL.g:3883:1: rule__SignalModel__Group__1 : rule__SignalModel__Group__1__Impl ;
+    // InternalSignalDSL.g:3931:1: rule__SignalModel__Group__1 : rule__SignalModel__Group__1__Impl ;
     public final void rule__SignalModel__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3887:1: ( rule__SignalModel__Group__1__Impl )
-            // InternalSignalDSL.g:3888:2: rule__SignalModel__Group__1__Impl
+            // InternalSignalDSL.g:3935:1: ( rule__SignalModel__Group__1__Impl )
+            // InternalSignalDSL.g:3936:2: rule__SignalModel__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__SignalModel__Group__1__Impl();
@@ -14470,23 +14642,23 @@
 
 
     // $ANTLR start "rule__SignalModel__Group__1__Impl"
-    // InternalSignalDSL.g:3894:1: rule__SignalModel__Group__1__Impl : ( ( rule__SignalModel__PackagesAssignment_1 ) ) ;
+    // InternalSignalDSL.g:3942:1: rule__SignalModel__Group__1__Impl : ( ( rule__SignalModel__PackagesAssignment_1 ) ) ;
     public final void rule__SignalModel__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3898:1: ( ( ( rule__SignalModel__PackagesAssignment_1 ) ) )
-            // InternalSignalDSL.g:3899:1: ( ( rule__SignalModel__PackagesAssignment_1 ) )
+            // InternalSignalDSL.g:3946:1: ( ( ( rule__SignalModel__PackagesAssignment_1 ) ) )
+            // InternalSignalDSL.g:3947:1: ( ( rule__SignalModel__PackagesAssignment_1 ) )
             {
-            // InternalSignalDSL.g:3899:1: ( ( rule__SignalModel__PackagesAssignment_1 ) )
-            // InternalSignalDSL.g:3900:2: ( rule__SignalModel__PackagesAssignment_1 )
+            // InternalSignalDSL.g:3947:1: ( ( rule__SignalModel__PackagesAssignment_1 ) )
+            // InternalSignalDSL.g:3948:2: ( rule__SignalModel__PackagesAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getPackagesAssignment_1()); 
             }
-            // InternalSignalDSL.g:3901:2: ( rule__SignalModel__PackagesAssignment_1 )
-            // InternalSignalDSL.g:3901:3: rule__SignalModel__PackagesAssignment_1
+            // InternalSignalDSL.g:3949:2: ( rule__SignalModel__PackagesAssignment_1 )
+            // InternalSignalDSL.g:3949:3: rule__SignalModel__PackagesAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__SignalModel__PackagesAssignment_1();
@@ -14521,14 +14693,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__0"
-    // InternalSignalDSL.g:3910:1: rule__SignalPackage__Group__0 : rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 ;
+    // InternalSignalDSL.g:3958:1: rule__SignalPackage__Group__0 : rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 ;
     public final void rule__SignalPackage__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3914:1: ( rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 )
-            // InternalSignalDSL.g:3915:2: rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1
+            // InternalSignalDSL.g:3962:1: ( rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 )
+            // InternalSignalDSL.g:3963:2: rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__SignalPackage__Group__0__Impl();
@@ -14559,23 +14731,23 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__0__Impl"
-    // InternalSignalDSL.g:3922:1: rule__SignalPackage__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:3970:1: rule__SignalPackage__Group__0__Impl : ( () ) ;
     public final void rule__SignalPackage__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3926:1: ( ( () ) )
-            // InternalSignalDSL.g:3927:1: ( () )
+            // InternalSignalDSL.g:3974:1: ( ( () ) )
+            // InternalSignalDSL.g:3975:1: ( () )
             {
-            // InternalSignalDSL.g:3927:1: ( () )
-            // InternalSignalDSL.g:3928:2: ()
+            // InternalSignalDSL.g:3975:1: ( () )
+            // InternalSignalDSL.g:3976:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getSignalPackageAction_0()); 
             }
-            // InternalSignalDSL.g:3929:2: ()
-            // InternalSignalDSL.g:3929:3: 
+            // InternalSignalDSL.g:3977:2: ()
+            // InternalSignalDSL.g:3977:3: 
             {
             }
 
@@ -14600,14 +14772,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__1"
-    // InternalSignalDSL.g:3937:1: rule__SignalPackage__Group__1 : rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 ;
+    // InternalSignalDSL.g:3985:1: rule__SignalPackage__Group__1 : rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 ;
     public final void rule__SignalPackage__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3941:1: ( rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 )
-            // InternalSignalDSL.g:3942:2: rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2
+            // InternalSignalDSL.g:3989:1: ( rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 )
+            // InternalSignalDSL.g:3990:2: rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2
             {
             pushFollow(FOLLOW_6);
             rule__SignalPackage__Group__1__Impl();
@@ -14638,22 +14810,22 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__1__Impl"
-    // InternalSignalDSL.g:3949:1: rule__SignalPackage__Group__1__Impl : ( 'package' ) ;
+    // InternalSignalDSL.g:3997:1: rule__SignalPackage__Group__1__Impl : ( 'package' ) ;
     public final void rule__SignalPackage__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3953:1: ( ( 'package' ) )
-            // InternalSignalDSL.g:3954:1: ( 'package' )
+            // InternalSignalDSL.g:4001:1: ( ( 'package' ) )
+            // InternalSignalDSL.g:4002:1: ( 'package' )
             {
-            // InternalSignalDSL.g:3954:1: ( 'package' )
-            // InternalSignalDSL.g:3955:2: 'package'
+            // InternalSignalDSL.g:4002:1: ( 'package' )
+            // InternalSignalDSL.g:4003:2: 'package'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getPackageKeyword_1()); 
             }
-            match(input,62,FOLLOW_2); if (state.failed) return ;
+            match(input,61,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalPackageAccess().getPackageKeyword_1()); 
             }
@@ -14679,14 +14851,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__2"
-    // InternalSignalDSL.g:3964:1: rule__SignalPackage__Group__2 : rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 ;
+    // InternalSignalDSL.g:4012:1: rule__SignalPackage__Group__2 : rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 ;
     public final void rule__SignalPackage__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3968:1: ( rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 )
-            // InternalSignalDSL.g:3969:2: rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3
+            // InternalSignalDSL.g:4016:1: ( rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 )
+            // InternalSignalDSL.g:4017:2: rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__SignalPackage__Group__2__Impl();
@@ -14717,23 +14889,23 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__2__Impl"
-    // InternalSignalDSL.g:3976:1: rule__SignalPackage__Group__2__Impl : ( ( rule__SignalPackage__NameAssignment_2 ) ) ;
+    // InternalSignalDSL.g:4024:1: rule__SignalPackage__Group__2__Impl : ( ( rule__SignalPackage__NameAssignment_2 ) ) ;
     public final void rule__SignalPackage__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3980:1: ( ( ( rule__SignalPackage__NameAssignment_2 ) ) )
-            // InternalSignalDSL.g:3981:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4028:1: ( ( ( rule__SignalPackage__NameAssignment_2 ) ) )
+            // InternalSignalDSL.g:4029:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
             {
-            // InternalSignalDSL.g:3981:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
-            // InternalSignalDSL.g:3982:2: ( rule__SignalPackage__NameAssignment_2 )
+            // InternalSignalDSL.g:4029:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4030:2: ( rule__SignalPackage__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getNameAssignment_2()); 
             }
-            // InternalSignalDSL.g:3983:2: ( rule__SignalPackage__NameAssignment_2 )
-            // InternalSignalDSL.g:3983:3: rule__SignalPackage__NameAssignment_2
+            // InternalSignalDSL.g:4031:2: ( rule__SignalPackage__NameAssignment_2 )
+            // InternalSignalDSL.g:4031:3: rule__SignalPackage__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__SignalPackage__NameAssignment_2();
@@ -14768,14 +14940,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__3"
-    // InternalSignalDSL.g:3991:1: rule__SignalPackage__Group__3 : rule__SignalPackage__Group__3__Impl ;
+    // InternalSignalDSL.g:4039:1: rule__SignalPackage__Group__3 : rule__SignalPackage__Group__3__Impl ;
     public final void rule__SignalPackage__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3995:1: ( rule__SignalPackage__Group__3__Impl )
-            // InternalSignalDSL.g:3996:2: rule__SignalPackage__Group__3__Impl
+            // InternalSignalDSL.g:4043:1: ( rule__SignalPackage__Group__3__Impl )
+            // InternalSignalDSL.g:4044:2: rule__SignalPackage__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__SignalPackage__Group__3__Impl();
@@ -14801,31 +14973,31 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__3__Impl"
-    // InternalSignalDSL.g:4002:1: rule__SignalPackage__Group__3__Impl : ( ( rule__SignalPackage__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:4050:1: rule__SignalPackage__Group__3__Impl : ( ( rule__SignalPackage__Group_3__0 )? ) ;
     public final void rule__SignalPackage__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4006:1: ( ( ( rule__SignalPackage__Group_3__0 )? ) )
-            // InternalSignalDSL.g:4007:1: ( ( rule__SignalPackage__Group_3__0 )? )
+            // InternalSignalDSL.g:4054:1: ( ( ( rule__SignalPackage__Group_3__0 )? ) )
+            // InternalSignalDSL.g:4055:1: ( ( rule__SignalPackage__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:4007:1: ( ( rule__SignalPackage__Group_3__0 )? )
-            // InternalSignalDSL.g:4008:2: ( rule__SignalPackage__Group_3__0 )?
+            // InternalSignalDSL.g:4055:1: ( ( rule__SignalPackage__Group_3__0 )? )
+            // InternalSignalDSL.g:4056:2: ( rule__SignalPackage__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:4009:2: ( rule__SignalPackage__Group_3__0 )?
-            int alt52=2;
-            int LA52_0 = input.LA(1);
+            // InternalSignalDSL.g:4057:2: ( rule__SignalPackage__Group_3__0 )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
 
-            if ( (LA52_0==63) ) {
-                alt52=1;
+            if ( (LA53_0==62) ) {
+                alt53=1;
             }
-            switch (alt52) {
+            switch (alt53) {
                 case 1 :
-                    // InternalSignalDSL.g:4009:3: rule__SignalPackage__Group_3__0
+                    // InternalSignalDSL.g:4057:3: rule__SignalPackage__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__SignalPackage__Group_3__0();
@@ -14863,14 +15035,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__0"
-    // InternalSignalDSL.g:4018:1: rule__SignalPackage__Group_3__0 : rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 ;
+    // InternalSignalDSL.g:4066:1: rule__SignalPackage__Group_3__0 : rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 ;
     public final void rule__SignalPackage__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4022:1: ( rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 )
-            // InternalSignalDSL.g:4023:2: rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1
+            // InternalSignalDSL.g:4070:1: ( rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 )
+            // InternalSignalDSL.g:4071:2: rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1
             {
             pushFollow(FOLLOW_8);
             rule__SignalPackage__Group_3__0__Impl();
@@ -14901,22 +15073,22 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__0__Impl"
-    // InternalSignalDSL.g:4030:1: rule__SignalPackage__Group_3__0__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:4078:1: rule__SignalPackage__Group_3__0__Impl : ( '{' ) ;
     public final void rule__SignalPackage__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4034:1: ( ( '{' ) )
-            // InternalSignalDSL.g:4035:1: ( '{' )
+            // InternalSignalDSL.g:4082:1: ( ( '{' ) )
+            // InternalSignalDSL.g:4083:1: ( '{' )
             {
-            // InternalSignalDSL.g:4035:1: ( '{' )
-            // InternalSignalDSL.g:4036:2: '{'
+            // InternalSignalDSL.g:4083:1: ( '{' )
+            // InternalSignalDSL.g:4084:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
             }
-            match(input,63,FOLLOW_2); if (state.failed) return ;
+            match(input,62,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
             }
@@ -14942,14 +15114,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__1"
-    // InternalSignalDSL.g:4045:1: rule__SignalPackage__Group_3__1 : rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 ;
+    // InternalSignalDSL.g:4093:1: rule__SignalPackage__Group_3__1 : rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 ;
     public final void rule__SignalPackage__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4049:1: ( rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 )
-            // InternalSignalDSL.g:4050:2: rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2
+            // InternalSignalDSL.g:4097:1: ( rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 )
+            // InternalSignalDSL.g:4098:2: rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2
             {
             pushFollow(FOLLOW_8);
             rule__SignalPackage__Group_3__1__Impl();
@@ -14980,38 +15152,38 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__1__Impl"
-    // InternalSignalDSL.g:4057:1: rule__SignalPackage__Group_3__1__Impl : ( ( rule__SignalPackage__WatchersAssignment_3_1 )* ) ;
+    // InternalSignalDSL.g:4105:1: rule__SignalPackage__Group_3__1__Impl : ( ( rule__SignalPackage__SignalsAssignment_3_1 )* ) ;
     public final void rule__SignalPackage__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4061:1: ( ( ( rule__SignalPackage__WatchersAssignment_3_1 )* ) )
-            // InternalSignalDSL.g:4062:1: ( ( rule__SignalPackage__WatchersAssignment_3_1 )* )
+            // InternalSignalDSL.g:4109:1: ( ( ( rule__SignalPackage__SignalsAssignment_3_1 )* ) )
+            // InternalSignalDSL.g:4110:1: ( ( rule__SignalPackage__SignalsAssignment_3_1 )* )
             {
-            // InternalSignalDSL.g:4062:1: ( ( rule__SignalPackage__WatchersAssignment_3_1 )* )
-            // InternalSignalDSL.g:4063:2: ( rule__SignalPackage__WatchersAssignment_3_1 )*
+            // InternalSignalDSL.g:4110:1: ( ( rule__SignalPackage__SignalsAssignment_3_1 )* )
+            // InternalSignalDSL.g:4111:2: ( rule__SignalPackage__SignalsAssignment_3_1 )*
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalPackageAccess().getWatchersAssignment_3_1()); 
+               before(grammarAccess.getSignalPackageAccess().getSignalsAssignment_3_1()); 
             }
-            // InternalSignalDSL.g:4064:2: ( rule__SignalPackage__WatchersAssignment_3_1 )*
-            loop53:
+            // InternalSignalDSL.g:4112:2: ( rule__SignalPackage__SignalsAssignment_3_1 )*
+            loop54:
             do {
-                int alt53=2;
-                int LA53_0 = input.LA(1);
+                int alt54=2;
+                int LA54_0 = input.LA(1);
 
-                if ( (LA53_0==65) ) {
-                    alt53=1;
+                if ( (LA54_0==64||LA54_0==68) ) {
+                    alt54=1;
                 }
 
 
-                switch (alt53) {
+                switch (alt54) {
             	case 1 :
-            	    // InternalSignalDSL.g:4064:3: rule__SignalPackage__WatchersAssignment_3_1
+            	    // InternalSignalDSL.g:4112:3: rule__SignalPackage__SignalsAssignment_3_1
             	    {
             	    pushFollow(FOLLOW_9);
-            	    rule__SignalPackage__WatchersAssignment_3_1();
+            	    rule__SignalPackage__SignalsAssignment_3_1();
 
             	    state._fsp--;
             	    if (state.failed) return ;
@@ -15020,12 +15192,12 @@
             	    break;
 
             	default :
-            	    break loop53;
+            	    break loop54;
                 }
             } while (true);
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalPackageAccess().getWatchersAssignment_3_1()); 
+               after(grammarAccess.getSignalPackageAccess().getSignalsAssignment_3_1()); 
             }
 
             }
@@ -15049,14 +15221,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__2"
-    // InternalSignalDSL.g:4072:1: rule__SignalPackage__Group_3__2 : rule__SignalPackage__Group_3__2__Impl ;
+    // InternalSignalDSL.g:4120:1: rule__SignalPackage__Group_3__2 : rule__SignalPackage__Group_3__2__Impl ;
     public final void rule__SignalPackage__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4076:1: ( rule__SignalPackage__Group_3__2__Impl )
-            // InternalSignalDSL.g:4077:2: rule__SignalPackage__Group_3__2__Impl
+            // InternalSignalDSL.g:4124:1: ( rule__SignalPackage__Group_3__2__Impl )
+            // InternalSignalDSL.g:4125:2: rule__SignalPackage__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__SignalPackage__Group_3__2__Impl();
@@ -15082,22 +15254,22 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__2__Impl"
-    // InternalSignalDSL.g:4083:1: rule__SignalPackage__Group_3__2__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:4131:1: rule__SignalPackage__Group_3__2__Impl : ( '}' ) ;
     public final void rule__SignalPackage__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4087:1: ( ( '}' ) )
-            // InternalSignalDSL.g:4088:1: ( '}' )
+            // InternalSignalDSL.g:4135:1: ( ( '}' ) )
+            // InternalSignalDSL.g:4136:1: ( '}' )
             {
-            // InternalSignalDSL.g:4088:1: ( '}' )
-            // InternalSignalDSL.g:4089:2: '}'
+            // InternalSignalDSL.g:4136:1: ( '}' )
+            // InternalSignalDSL.g:4137:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getRightCurlyBracketKeyword_3_2()); 
             }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalPackageAccess().getRightCurlyBracketKeyword_3_2()); 
             }
@@ -15123,14 +15295,14 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__0"
-    // InternalSignalDSL.g:4099:1: rule__SignalWatcher__Group__0 : rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 ;
+    // InternalSignalDSL.g:4147:1: rule__SignalWatcher__Group__0 : rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 ;
     public final void rule__SignalWatcher__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4103:1: ( rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 )
-            // InternalSignalDSL.g:4104:2: rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1
+            // InternalSignalDSL.g:4151:1: ( rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 )
+            // InternalSignalDSL.g:4152:2: rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1
             {
             pushFollow(FOLLOW_10);
             rule__SignalWatcher__Group__0__Impl();
@@ -15161,23 +15333,23 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__0__Impl"
-    // InternalSignalDSL.g:4111:1: rule__SignalWatcher__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:4159:1: rule__SignalWatcher__Group__0__Impl : ( () ) ;
     public final void rule__SignalWatcher__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4115:1: ( ( () ) )
-            // InternalSignalDSL.g:4116:1: ( () )
+            // InternalSignalDSL.g:4163:1: ( ( () ) )
+            // InternalSignalDSL.g:4164:1: ( () )
             {
-            // InternalSignalDSL.g:4116:1: ( () )
-            // InternalSignalDSL.g:4117:2: ()
+            // InternalSignalDSL.g:4164:1: ( () )
+            // InternalSignalDSL.g:4165:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getSignalWatcherAction_0()); 
             }
-            // InternalSignalDSL.g:4118:2: ()
-            // InternalSignalDSL.g:4118:3: 
+            // InternalSignalDSL.g:4166:2: ()
+            // InternalSignalDSL.g:4166:3: 
             {
             }
 
@@ -15202,14 +15374,14 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__1"
-    // InternalSignalDSL.g:4126:1: rule__SignalWatcher__Group__1 : rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 ;
+    // InternalSignalDSL.g:4174:1: rule__SignalWatcher__Group__1 : rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 ;
     public final void rule__SignalWatcher__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4130:1: ( rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 )
-            // InternalSignalDSL.g:4131:2: rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2
+            // InternalSignalDSL.g:4178:1: ( rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 )
+            // InternalSignalDSL.g:4179:2: rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2
             {
             pushFollow(FOLLOW_6);
             rule__SignalWatcher__Group__1__Impl();
@@ -15240,22 +15412,22 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__1__Impl"
-    // InternalSignalDSL.g:4138:1: rule__SignalWatcher__Group__1__Impl : ( 'watcher' ) ;
+    // InternalSignalDSL.g:4186:1: rule__SignalWatcher__Group__1__Impl : ( 'watcher' ) ;
     public final void rule__SignalWatcher__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4142:1: ( ( 'watcher' ) )
-            // InternalSignalDSL.g:4143:1: ( 'watcher' )
+            // InternalSignalDSL.g:4190:1: ( ( 'watcher' ) )
+            // InternalSignalDSL.g:4191:1: ( 'watcher' )
             {
-            // InternalSignalDSL.g:4143:1: ( 'watcher' )
-            // InternalSignalDSL.g:4144:2: 'watcher'
+            // InternalSignalDSL.g:4191:1: ( 'watcher' )
+            // InternalSignalDSL.g:4192:2: 'watcher'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getWatcherKeyword_1()); 
             }
-            match(input,65,FOLLOW_2); if (state.failed) return ;
+            match(input,64,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalWatcherAccess().getWatcherKeyword_1()); 
             }
@@ -15281,14 +15453,14 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__2"
-    // InternalSignalDSL.g:4153:1: rule__SignalWatcher__Group__2 : rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 ;
+    // InternalSignalDSL.g:4201:1: rule__SignalWatcher__Group__2 : rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 ;
     public final void rule__SignalWatcher__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4157:1: ( rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 )
-            // InternalSignalDSL.g:4158:2: rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3
+            // InternalSignalDSL.g:4205:1: ( rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 )
+            // InternalSignalDSL.g:4206:2: rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3
             {
             pushFollow(FOLLOW_11);
             rule__SignalWatcher__Group__2__Impl();
@@ -15319,23 +15491,23 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__2__Impl"
-    // InternalSignalDSL.g:4165:1: rule__SignalWatcher__Group__2__Impl : ( ( rule__SignalWatcher__NameAssignment_2 ) ) ;
+    // InternalSignalDSL.g:4213:1: rule__SignalWatcher__Group__2__Impl : ( ( rule__SignalWatcher__NameAssignment_2 ) ) ;
     public final void rule__SignalWatcher__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4169:1: ( ( ( rule__SignalWatcher__NameAssignment_2 ) ) )
-            // InternalSignalDSL.g:4170:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4217:1: ( ( ( rule__SignalWatcher__NameAssignment_2 ) ) )
+            // InternalSignalDSL.g:4218:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
             {
-            // InternalSignalDSL.g:4170:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
-            // InternalSignalDSL.g:4171:2: ( rule__SignalWatcher__NameAssignment_2 )
+            // InternalSignalDSL.g:4218:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4219:2: ( rule__SignalWatcher__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getNameAssignment_2()); 
             }
-            // InternalSignalDSL.g:4172:2: ( rule__SignalWatcher__NameAssignment_2 )
-            // InternalSignalDSL.g:4172:3: rule__SignalWatcher__NameAssignment_2
+            // InternalSignalDSL.g:4220:2: ( rule__SignalWatcher__NameAssignment_2 )
+            // InternalSignalDSL.g:4220:3: rule__SignalWatcher__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__SignalWatcher__NameAssignment_2();
@@ -15370,22 +15542,17 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__3"
-    // InternalSignalDSL.g:4180:1: rule__SignalWatcher__Group__3 : rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4 ;
+    // InternalSignalDSL.g:4228:1: rule__SignalWatcher__Group__3 : rule__SignalWatcher__Group__3__Impl ;
     public final void rule__SignalWatcher__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4184:1: ( rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4 )
-            // InternalSignalDSL.g:4185:2: rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4
+            // InternalSignalDSL.g:4232:1: ( rule__SignalWatcher__Group__3__Impl )
+            // InternalSignalDSL.g:4233:2: rule__SignalWatcher__Group__3__Impl
             {
-            pushFollow(FOLLOW_12);
-            rule__SignalWatcher__Group__3__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__4();
+            rule__SignalWatcher__Group__3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15408,24 +15575,34 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__3__Impl"
-    // InternalSignalDSL.g:4192:1: rule__SignalWatcher__Group__3__Impl : ( 'directory' ) ;
+    // InternalSignalDSL.g:4239:1: rule__SignalWatcher__Group__3__Impl : ( ( rule__SignalWatcher__DefinitionAssignment_3 ) ) ;
     public final void rule__SignalWatcher__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4196:1: ( ( 'directory' ) )
-            // InternalSignalDSL.g:4197:1: ( 'directory' )
+            // InternalSignalDSL.g:4243:1: ( ( ( rule__SignalWatcher__DefinitionAssignment_3 ) ) )
+            // InternalSignalDSL.g:4244:1: ( ( rule__SignalWatcher__DefinitionAssignment_3 ) )
             {
-            // InternalSignalDSL.g:4197:1: ( 'directory' )
-            // InternalSignalDSL.g:4198:2: 'directory'
+            // InternalSignalDSL.g:4244:1: ( ( rule__SignalWatcher__DefinitionAssignment_3 ) )
+            // InternalSignalDSL.g:4245:2: ( rule__SignalWatcher__DefinitionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3()); 
+               before(grammarAccess.getSignalWatcherAccess().getDefinitionAssignment_3()); 
             }
-            match(input,66,FOLLOW_2); if (state.failed) return ;
+            // InternalSignalDSL.g:4246:2: ( rule__SignalWatcher__DefinitionAssignment_3 )
+            // InternalSignalDSL.g:4246:3: rule__SignalWatcher__DefinitionAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalWatcher__DefinitionAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3()); 
+               after(grammarAccess.getSignalWatcherAccess().getDefinitionAssignment_3()); 
             }
 
             }
@@ -15448,23 +15625,23 @@
     // $ANTLR end "rule__SignalWatcher__Group__3__Impl"
 
 
-    // $ANTLR start "rule__SignalWatcher__Group__4"
-    // InternalSignalDSL.g:4207:1: rule__SignalWatcher__Group__4 : rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5 ;
-    public final void rule__SignalWatcher__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileMask__Group__0"
+    // InternalSignalDSL.g:4255:1: rule__WatcherWithFileMask__Group__0 : rule__WatcherWithFileMask__Group__0__Impl rule__WatcherWithFileMask__Group__1 ;
+    public final void rule__WatcherWithFileMask__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4211:1: ( rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5 )
-            // InternalSignalDSL.g:4212:2: rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5
+            // InternalSignalDSL.g:4259:1: ( rule__WatcherWithFileMask__Group__0__Impl rule__WatcherWithFileMask__Group__1 )
+            // InternalSignalDSL.g:4260:2: rule__WatcherWithFileMask__Group__0__Impl rule__WatcherWithFileMask__Group__1
             {
-            pushFollow(FOLLOW_7);
-            rule__SignalWatcher__Group__4__Impl();
+            pushFollow(FOLLOW_12);
+            rule__WatcherWithFileMask__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__5();
+            rule__WatcherWithFileMask__Group__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15483,38 +15660,32 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalWatcher__Group__4"
+    // $ANTLR end "rule__WatcherWithFileMask__Group__0"
 
 
-    // $ANTLR start "rule__SignalWatcher__Group__4__Impl"
-    // InternalSignalDSL.g:4219:1: rule__SignalWatcher__Group__4__Impl : ( ( rule__SignalWatcher__DirectoryAssignment_4 ) ) ;
-    public final void rule__SignalWatcher__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileMask__Group__0__Impl"
+    // InternalSignalDSL.g:4267:1: rule__WatcherWithFileMask__Group__0__Impl : ( () ) ;
+    public final void rule__WatcherWithFileMask__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4223:1: ( ( ( rule__SignalWatcher__DirectoryAssignment_4 ) ) )
-            // InternalSignalDSL.g:4224:1: ( ( rule__SignalWatcher__DirectoryAssignment_4 ) )
+            // InternalSignalDSL.g:4271:1: ( ( () ) )
+            // InternalSignalDSL.g:4272:1: ( () )
             {
-            // InternalSignalDSL.g:4224:1: ( ( rule__SignalWatcher__DirectoryAssignment_4 ) )
-            // InternalSignalDSL.g:4225:2: ( rule__SignalWatcher__DirectoryAssignment_4 )
+            // InternalSignalDSL.g:4272:1: ( () )
+            // InternalSignalDSL.g:4273:2: ()
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getDirectoryAssignment_4()); 
+               before(grammarAccess.getWatcherWithFileMaskAccess().getWatcherWithFileMaskAction_0()); 
             }
-            // InternalSignalDSL.g:4226:2: ( rule__SignalWatcher__DirectoryAssignment_4 )
-            // InternalSignalDSL.g:4226:3: rule__SignalWatcher__DirectoryAssignment_4
+            // InternalSignalDSL.g:4274:2: ()
+            // InternalSignalDSL.g:4274:3: 
             {
-            pushFollow(FOLLOW_2);
-            rule__SignalWatcher__DirectoryAssignment_4();
-
-            state._fsp--;
-            if (state.failed) return ;
-
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getDirectoryAssignment_4()); 
+               after(grammarAccess.getWatcherWithFileMaskAccess().getWatcherWithFileMaskAction_0()); 
             }
 
             }
@@ -15523,10 +15694,6 @@
             }
 
         }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
         finally {
 
             	restoreStackSize(stackSize);
@@ -15534,26 +15701,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalWatcher__Group__4__Impl"
+    // $ANTLR end "rule__WatcherWithFileMask__Group__0__Impl"
 
 
-    // $ANTLR start "rule__SignalWatcher__Group__5"
-    // InternalSignalDSL.g:4234:1: rule__SignalWatcher__Group__5 : rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6 ;
-    public final void rule__SignalWatcher__Group__5() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileMask__Group__1"
+    // InternalSignalDSL.g:4282:1: rule__WatcherWithFileMask__Group__1 : rule__WatcherWithFileMask__Group__1__Impl rule__WatcherWithFileMask__Group__2 ;
+    public final void rule__WatcherWithFileMask__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4238:1: ( rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6 )
-            // InternalSignalDSL.g:4239:2: rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6
+            // InternalSignalDSL.g:4286:1: ( rule__WatcherWithFileMask__Group__1__Impl rule__WatcherWithFileMask__Group__2 )
+            // InternalSignalDSL.g:4287:2: rule__WatcherWithFileMask__Group__1__Impl rule__WatcherWithFileMask__Group__2
             {
             pushFollow(FOLLOW_13);
-            rule__SignalWatcher__Group__5__Impl();
+            rule__WatcherWithFileMask__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__6();
+            rule__WatcherWithFileMask__Group__2();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15572,28 +15739,616 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalWatcher__Group__5"
+    // $ANTLR end "rule__WatcherWithFileMask__Group__1"
 
 
-    // $ANTLR start "rule__SignalWatcher__Group__5__Impl"
-    // InternalSignalDSL.g:4246:1: rule__SignalWatcher__Group__5__Impl : ( '{' ) ;
-    public final void rule__SignalWatcher__Group__5__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileMask__Group__1__Impl"
+    // InternalSignalDSL.g:4294:1: rule__WatcherWithFileMask__Group__1__Impl : ( 'filemask' ) ;
+    public final void rule__WatcherWithFileMask__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4250:1: ( ( '{' ) )
-            // InternalSignalDSL.g:4251:1: ( '{' )
+            // InternalSignalDSL.g:4298:1: ( ( 'filemask' ) )
+            // InternalSignalDSL.g:4299:1: ( 'filemask' )
             {
-            // InternalSignalDSL.g:4251:1: ( '{' )
-            // InternalSignalDSL.g:4252:2: '{'
+            // InternalSignalDSL.g:4299:1: ( 'filemask' )
+            // InternalSignalDSL.g:4300:2: 'filemask'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); 
+               before(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskKeyword_1()); 
+            }
+            match(input,65,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__1__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__2"
+    // InternalSignalDSL.g:4309:1: rule__WatcherWithFileMask__Group__2 : rule__WatcherWithFileMask__Group__2__Impl rule__WatcherWithFileMask__Group__3 ;
+    public final void rule__WatcherWithFileMask__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4313:1: ( rule__WatcherWithFileMask__Group__2__Impl rule__WatcherWithFileMask__Group__3 )
+            // InternalSignalDSL.g:4314:2: rule__WatcherWithFileMask__Group__2__Impl rule__WatcherWithFileMask__Group__3
+            {
+            pushFollow(FOLLOW_14);
+            rule__WatcherWithFileMask__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__2"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__2__Impl"
+    // InternalSignalDSL.g:4321:1: rule__WatcherWithFileMask__Group__2__Impl : ( ( rule__WatcherWithFileMask__FilemaskAssignment_2 ) ) ;
+    public final void rule__WatcherWithFileMask__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4325:1: ( ( ( rule__WatcherWithFileMask__FilemaskAssignment_2 ) ) )
+            // InternalSignalDSL.g:4326:1: ( ( rule__WatcherWithFileMask__FilemaskAssignment_2 ) )
+            {
+            // InternalSignalDSL.g:4326:1: ( ( rule__WatcherWithFileMask__FilemaskAssignment_2 ) )
+            // InternalSignalDSL.g:4327:2: ( rule__WatcherWithFileMask__FilemaskAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskAssignment_2()); 
+            }
+            // InternalSignalDSL.g:4328:2: ( rule__WatcherWithFileMask__FilemaskAssignment_2 )
+            // InternalSignalDSL.g:4328:3: rule__WatcherWithFileMask__FilemaskAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__FilemaskAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__2__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__3"
+    // InternalSignalDSL.g:4336:1: rule__WatcherWithFileMask__Group__3 : rule__WatcherWithFileMask__Group__3__Impl rule__WatcherWithFileMask__Group__4 ;
+    public final void rule__WatcherWithFileMask__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4340:1: ( rule__WatcherWithFileMask__Group__3__Impl rule__WatcherWithFileMask__Group__4 )
+            // InternalSignalDSL.g:4341:2: rule__WatcherWithFileMask__Group__3__Impl rule__WatcherWithFileMask__Group__4
+            {
+            pushFollow(FOLLOW_15);
+            rule__WatcherWithFileMask__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__3"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__3__Impl"
+    // InternalSignalDSL.g:4348:1: rule__WatcherWithFileMask__Group__3__Impl : ( ( rule__WatcherWithFileMask__ExecutiontypeAssignment_3 ) ) ;
+    public final void rule__WatcherWithFileMask__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4352:1: ( ( ( rule__WatcherWithFileMask__ExecutiontypeAssignment_3 ) ) )
+            // InternalSignalDSL.g:4353:1: ( ( rule__WatcherWithFileMask__ExecutiontypeAssignment_3 ) )
+            {
+            // InternalSignalDSL.g:4353:1: ( ( rule__WatcherWithFileMask__ExecutiontypeAssignment_3 ) )
+            // InternalSignalDSL.g:4354:2: ( rule__WatcherWithFileMask__ExecutiontypeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeAssignment_3()); 
+            }
+            // InternalSignalDSL.g:4355:2: ( rule__WatcherWithFileMask__ExecutiontypeAssignment_3 )
+            // InternalSignalDSL.g:4355:3: rule__WatcherWithFileMask__ExecutiontypeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__ExecutiontypeAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__3__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__4"
+    // InternalSignalDSL.g:4363:1: rule__WatcherWithFileMask__Group__4 : rule__WatcherWithFileMask__Group__4__Impl rule__WatcherWithFileMask__Group__5 ;
+    public final void rule__WatcherWithFileMask__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4367:1: ( rule__WatcherWithFileMask__Group__4__Impl rule__WatcherWithFileMask__Group__5 )
+            // InternalSignalDSL.g:4368:2: rule__WatcherWithFileMask__Group__4__Impl rule__WatcherWithFileMask__Group__5
+            {
+            pushFollow(FOLLOW_6);
+            rule__WatcherWithFileMask__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__4"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__4__Impl"
+    // InternalSignalDSL.g:4375:1: rule__WatcherWithFileMask__Group__4__Impl : ( 'from' ) ;
+    public final void rule__WatcherWithFileMask__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4379:1: ( ( 'from' ) )
+            // InternalSignalDSL.g:4380:1: ( 'from' )
+            {
+            // InternalSignalDSL.g:4380:1: ( 'from' )
+            // InternalSignalDSL.g:4381:2: 'from'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getFromKeyword_4()); 
+            }
+            match(input,66,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getFromKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__4__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__5"
+    // InternalSignalDSL.g:4390:1: rule__WatcherWithFileMask__Group__5 : rule__WatcherWithFileMask__Group__5__Impl rule__WatcherWithFileMask__Group__6 ;
+    public final void rule__WatcherWithFileMask__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4394:1: ( rule__WatcherWithFileMask__Group__5__Impl rule__WatcherWithFileMask__Group__6 )
+            // InternalSignalDSL.g:4395:2: rule__WatcherWithFileMask__Group__5__Impl rule__WatcherWithFileMask__Group__6
+            {
+            pushFollow(FOLLOW_7);
+            rule__WatcherWithFileMask__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__5"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__5__Impl"
+    // InternalSignalDSL.g:4402:1: rule__WatcherWithFileMask__Group__5__Impl : ( ( rule__WatcherWithFileMask__InterchangegroupAssignment_5 ) ) ;
+    public final void rule__WatcherWithFileMask__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4406:1: ( ( ( rule__WatcherWithFileMask__InterchangegroupAssignment_5 ) ) )
+            // InternalSignalDSL.g:4407:1: ( ( rule__WatcherWithFileMask__InterchangegroupAssignment_5 ) )
+            {
+            // InternalSignalDSL.g:4407:1: ( ( rule__WatcherWithFileMask__InterchangegroupAssignment_5 ) )
+            // InternalSignalDSL.g:4408:2: ( rule__WatcherWithFileMask__InterchangegroupAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupAssignment_5()); 
+            }
+            // InternalSignalDSL.g:4409:2: ( rule__WatcherWithFileMask__InterchangegroupAssignment_5 )
+            // InternalSignalDSL.g:4409:3: rule__WatcherWithFileMask__InterchangegroupAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__InterchangegroupAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__5__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__6"
+    // InternalSignalDSL.g:4417:1: rule__WatcherWithFileMask__Group__6 : rule__WatcherWithFileMask__Group__6__Impl rule__WatcherWithFileMask__Group__7 ;
+    public final void rule__WatcherWithFileMask__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4421:1: ( rule__WatcherWithFileMask__Group__6__Impl rule__WatcherWithFileMask__Group__7 )
+            // InternalSignalDSL.g:4422:2: rule__WatcherWithFileMask__Group__6__Impl rule__WatcherWithFileMask__Group__7
+            {
+            pushFollow(FOLLOW_16);
+            rule__WatcherWithFileMask__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__6"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__6__Impl"
+    // InternalSignalDSL.g:4429:1: rule__WatcherWithFileMask__Group__6__Impl : ( '{' ) ;
+    public final void rule__WatcherWithFileMask__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4433:1: ( ( '{' ) )
+            // InternalSignalDSL.g:4434:1: ( '{' )
+            {
+            // InternalSignalDSL.g:4434:1: ( '{' )
+            // InternalSignalDSL.g:4435:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+            match(input,62,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__6__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__7"
+    // InternalSignalDSL.g:4444:1: rule__WatcherWithFileMask__Group__7 : rule__WatcherWithFileMask__Group__7__Impl rule__WatcherWithFileMask__Group__8 ;
+    public final void rule__WatcherWithFileMask__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4448:1: ( rule__WatcherWithFileMask__Group__7__Impl rule__WatcherWithFileMask__Group__8 )
+            // InternalSignalDSL.g:4449:2: rule__WatcherWithFileMask__Group__7__Impl rule__WatcherWithFileMask__Group__8
+            {
+            pushFollow(FOLLOW_17);
+            rule__WatcherWithFileMask__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__Group__8();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__7"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__7__Impl"
+    // InternalSignalDSL.g:4456:1: rule__WatcherWithFileMask__Group__7__Impl : ( ( rule__WatcherWithFileMask__InterchangeAssignment_7 ) ) ;
+    public final void rule__WatcherWithFileMask__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4460:1: ( ( ( rule__WatcherWithFileMask__InterchangeAssignment_7 ) ) )
+            // InternalSignalDSL.g:4461:1: ( ( rule__WatcherWithFileMask__InterchangeAssignment_7 ) )
+            {
+            // InternalSignalDSL.g:4461:1: ( ( rule__WatcherWithFileMask__InterchangeAssignment_7 ) )
+            // InternalSignalDSL.g:4462:2: ( rule__WatcherWithFileMask__InterchangeAssignment_7 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeAssignment_7()); 
+            }
+            // InternalSignalDSL.g:4463:2: ( rule__WatcherWithFileMask__InterchangeAssignment_7 )
+            // InternalSignalDSL.g:4463:3: rule__WatcherWithFileMask__InterchangeAssignment_7
+            {
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__InterchangeAssignment_7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeAssignment_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__7__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__8"
+    // InternalSignalDSL.g:4471:1: rule__WatcherWithFileMask__Group__8 : rule__WatcherWithFileMask__Group__8__Impl ;
+    public final void rule__WatcherWithFileMask__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4475:1: ( rule__WatcherWithFileMask__Group__8__Impl )
+            // InternalSignalDSL.g:4476:2: rule__WatcherWithFileMask__Group__8__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileMask__Group__8__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__Group__8"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__Group__8__Impl"
+    // InternalSignalDSL.g:4482:1: rule__WatcherWithFileMask__Group__8__Impl : ( '}' ) ;
+    public final void rule__WatcherWithFileMask__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4486:1: ( ( '}' ) )
+            // InternalSignalDSL.g:4487:1: ( '}' )
+            {
+            // InternalSignalDSL.g:4487:1: ( '}' )
+            // InternalSignalDSL.g:4488:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getRightCurlyBracketKeyword_8()); 
             }
             match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); 
+               after(grammarAccess.getWatcherWithFileMaskAccess().getRightCurlyBracketKeyword_8()); 
             }
 
             }
@@ -15613,26 +16368,105 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalWatcher__Group__5__Impl"
+    // $ANTLR end "rule__WatcherWithFileMask__Group__8__Impl"
 
 
-    // $ANTLR start "rule__SignalWatcher__Group__6"
-    // InternalSignalDSL.g:4261:1: rule__SignalWatcher__Group__6 : rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7 ;
-    public final void rule__SignalWatcher__Group__6() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__0"
+    // InternalSignalDSL.g:4498:1: rule__WatcherWithFileName__Group__0 : rule__WatcherWithFileName__Group__0__Impl rule__WatcherWithFileName__Group__1 ;
+    public final void rule__WatcherWithFileName__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4265:1: ( rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7 )
-            // InternalSignalDSL.g:4266:2: rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7
+            // InternalSignalDSL.g:4502:1: ( rule__WatcherWithFileName__Group__0__Impl rule__WatcherWithFileName__Group__1 )
+            // InternalSignalDSL.g:4503:2: rule__WatcherWithFileName__Group__0__Impl rule__WatcherWithFileName__Group__1
+            {
+            pushFollow(FOLLOW_11);
+            rule__WatcherWithFileName__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileName__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__0"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__0__Impl"
+    // InternalSignalDSL.g:4510:1: rule__WatcherWithFileName__Group__0__Impl : ( () ) ;
+    public final void rule__WatcherWithFileName__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4514:1: ( ( () ) )
+            // InternalSignalDSL.g:4515:1: ( () )
+            {
+            // InternalSignalDSL.g:4515:1: ( () )
+            // InternalSignalDSL.g:4516:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getWatcherWithFileNameAction_0()); 
+            }
+            // InternalSignalDSL.g:4517:2: ()
+            // InternalSignalDSL.g:4517:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getWatcherWithFileNameAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__0__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__1"
+    // InternalSignalDSL.g:4525:1: rule__WatcherWithFileName__Group__1 : rule__WatcherWithFileName__Group__1__Impl rule__WatcherWithFileName__Group__2 ;
+    public final void rule__WatcherWithFileName__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4529:1: ( rule__WatcherWithFileName__Group__1__Impl rule__WatcherWithFileName__Group__2 )
+            // InternalSignalDSL.g:4530:2: rule__WatcherWithFileName__Group__1__Impl rule__WatcherWithFileName__Group__2
             {
             pushFollow(FOLLOW_13);
-            rule__SignalWatcher__Group__6__Impl();
+            rule__WatcherWithFileName__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__7();
+            rule__WatcherWithFileName__Group__2();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15651,288 +16485,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalWatcher__Group__6"
+    // $ANTLR end "rule__WatcherWithFileName__Group__1"
 
 
-    // $ANTLR start "rule__SignalWatcher__Group__6__Impl"
-    // InternalSignalDSL.g:4273:1: rule__SignalWatcher__Group__6__Impl : ( ( rule__SignalWatcher__HandlersAssignment_6 )* ) ;
-    public final void rule__SignalWatcher__Group__6__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__1__Impl"
+    // InternalSignalDSL.g:4537:1: rule__WatcherWithFileName__Group__1__Impl : ( 'filename' ) ;
+    public final void rule__WatcherWithFileName__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4277:1: ( ( ( rule__SignalWatcher__HandlersAssignment_6 )* ) )
-            // InternalSignalDSL.g:4278:1: ( ( rule__SignalWatcher__HandlersAssignment_6 )* )
+            // InternalSignalDSL.g:4541:1: ( ( 'filename' ) )
+            // InternalSignalDSL.g:4542:1: ( 'filename' )
             {
-            // InternalSignalDSL.g:4278:1: ( ( rule__SignalWatcher__HandlersAssignment_6 )* )
-            // InternalSignalDSL.g:4279:2: ( rule__SignalWatcher__HandlersAssignment_6 )*
+            // InternalSignalDSL.g:4542:1: ( 'filename' )
+            // InternalSignalDSL.g:4543:2: 'filename'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); 
-            }
-            // InternalSignalDSL.g:4280:2: ( rule__SignalWatcher__HandlersAssignment_6 )*
-            loop54:
-            do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
-
-                if ( (LA54_0==67) ) {
-                    alt54=1;
-                }
-
-
-                switch (alt54) {
-            	case 1 :
-            	    // InternalSignalDSL.g:4280:3: rule__SignalWatcher__HandlersAssignment_6
-            	    {
-            	    pushFollow(FOLLOW_14);
-            	    rule__SignalWatcher__HandlersAssignment_6();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop54;
-                }
-            } while (true);
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__Group__6__Impl"
-
-
-    // $ANTLR start "rule__SignalWatcher__Group__7"
-    // InternalSignalDSL.g:4288:1: rule__SignalWatcher__Group__7 : rule__SignalWatcher__Group__7__Impl ;
-    public final void rule__SignalWatcher__Group__7() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4292:1: ( rule__SignalWatcher__Group__7__Impl )
-            // InternalSignalDSL.g:4293:2: rule__SignalWatcher__Group__7__Impl
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__7__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__Group__7"
-
-
-    // $ANTLR start "rule__SignalWatcher__Group__7__Impl"
-    // InternalSignalDSL.g:4299:1: rule__SignalWatcher__Group__7__Impl : ( '}' ) ;
-    public final void rule__SignalWatcher__Group__7__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4303:1: ( ( '}' ) )
-            // InternalSignalDSL.g:4304:1: ( '}' )
-            {
-            // InternalSignalDSL.g:4304:1: ( '}' )
-            // InternalSignalDSL.g:4305:2: '}'
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); 
-            }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__Group__7__Impl"
-
-
-    // $ANTLR start "rule__SignalHandler__Group__0"
-    // InternalSignalDSL.g:4315:1: rule__SignalHandler__Group__0 : rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1 ;
-    public final void rule__SignalHandler__Group__0() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4319:1: ( rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1 )
-            // InternalSignalDSL.g:4320:2: rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1
-            {
-            pushFollow(FOLLOW_15);
-            rule__SignalHandler__Group__0__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__1();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__Group__0"
-
-
-    // $ANTLR start "rule__SignalHandler__Group__0__Impl"
-    // InternalSignalDSL.g:4327:1: rule__SignalHandler__Group__0__Impl : ( () ) ;
-    public final void rule__SignalHandler__Group__0__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4331:1: ( ( () ) )
-            // InternalSignalDSL.g:4332:1: ( () )
-            {
-            // InternalSignalDSL.g:4332:1: ( () )
-            // InternalSignalDSL.g:4333:2: ()
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getSignalHandlerAction_0()); 
-            }
-            // InternalSignalDSL.g:4334:2: ()
-            // InternalSignalDSL.g:4334:3: 
-            {
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getSignalHandlerAction_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__Group__0__Impl"
-
-
-    // $ANTLR start "rule__SignalHandler__Group__1"
-    // InternalSignalDSL.g:4342:1: rule__SignalHandler__Group__1 : rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2 ;
-    public final void rule__SignalHandler__Group__1() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4346:1: ( rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2 )
-            // InternalSignalDSL.g:4347:2: rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2
-            {
-            pushFollow(FOLLOW_6);
-            rule__SignalHandler__Group__1__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__2();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__Group__1"
-
-
-    // $ANTLR start "rule__SignalHandler__Group__1__Impl"
-    // InternalSignalDSL.g:4354:1: rule__SignalHandler__Group__1__Impl : ( 'handler' ) ;
-    public final void rule__SignalHandler__Group__1__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4358:1: ( ( 'handler' ) )
-            // InternalSignalDSL.g:4359:1: ( 'handler' )
-            {
-            // InternalSignalDSL.g:4359:1: ( 'handler' )
-            // InternalSignalDSL.g:4360:2: 'handler'
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1()); 
+               before(grammarAccess.getWatcherWithFileNameAccess().getFilenameKeyword_1()); 
             }
             match(input,67,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1()); 
+               after(grammarAccess.getWatcherWithFileNameAccess().getFilenameKeyword_1()); 
             }
 
             }
@@ -15952,26 +16526,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__1__Impl"
+    // $ANTLR end "rule__WatcherWithFileName__Group__1__Impl"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__2"
-    // InternalSignalDSL.g:4369:1: rule__SignalHandler__Group__2 : rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3 ;
-    public final void rule__SignalHandler__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__2"
+    // InternalSignalDSL.g:4552:1: rule__WatcherWithFileName__Group__2 : rule__WatcherWithFileName__Group__2__Impl rule__WatcherWithFileName__Group__3 ;
+    public final void rule__WatcherWithFileName__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4373:1: ( rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3 )
-            // InternalSignalDSL.g:4374:2: rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3
+            // InternalSignalDSL.g:4556:1: ( rule__WatcherWithFileName__Group__2__Impl rule__WatcherWithFileName__Group__3 )
+            // InternalSignalDSL.g:4557:2: rule__WatcherWithFileName__Group__2__Impl rule__WatcherWithFileName__Group__3
             {
-            pushFollow(FOLLOW_16);
-            rule__SignalHandler__Group__2__Impl();
+            pushFollow(FOLLOW_14);
+            rule__WatcherWithFileName__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__3();
+            rule__WatcherWithFileName__Group__3();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15990,30 +16564,30 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__2"
+    // $ANTLR end "rule__WatcherWithFileName__Group__2"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__2__Impl"
-    // InternalSignalDSL.g:4381:1: rule__SignalHandler__Group__2__Impl : ( ( rule__SignalHandler__NameAssignment_2 ) ) ;
-    public final void rule__SignalHandler__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__2__Impl"
+    // InternalSignalDSL.g:4564:1: rule__WatcherWithFileName__Group__2__Impl : ( ( rule__WatcherWithFileName__FilenameAssignment_2 ) ) ;
+    public final void rule__WatcherWithFileName__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4385:1: ( ( ( rule__SignalHandler__NameAssignment_2 ) ) )
-            // InternalSignalDSL.g:4386:1: ( ( rule__SignalHandler__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4568:1: ( ( ( rule__WatcherWithFileName__FilenameAssignment_2 ) ) )
+            // InternalSignalDSL.g:4569:1: ( ( rule__WatcherWithFileName__FilenameAssignment_2 ) )
             {
-            // InternalSignalDSL.g:4386:1: ( ( rule__SignalHandler__NameAssignment_2 ) )
-            // InternalSignalDSL.g:4387:2: ( rule__SignalHandler__NameAssignment_2 )
+            // InternalSignalDSL.g:4569:1: ( ( rule__WatcherWithFileName__FilenameAssignment_2 ) )
+            // InternalSignalDSL.g:4570:2: ( rule__WatcherWithFileName__FilenameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getNameAssignment_2()); 
+               before(grammarAccess.getWatcherWithFileNameAccess().getFilenameAssignment_2()); 
             }
-            // InternalSignalDSL.g:4388:2: ( rule__SignalHandler__NameAssignment_2 )
-            // InternalSignalDSL.g:4388:3: rule__SignalHandler__NameAssignment_2
+            // InternalSignalDSL.g:4571:2: ( rule__WatcherWithFileName__FilenameAssignment_2 )
+            // InternalSignalDSL.g:4571:3: rule__WatcherWithFileName__FilenameAssignment_2
             {
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__NameAssignment_2();
+            rule__WatcherWithFileName__FilenameAssignment_2();
 
             state._fsp--;
             if (state.failed) return ;
@@ -16021,7 +16595,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getNameAssignment_2()); 
+               after(grammarAccess.getWatcherWithFileNameAccess().getFilenameAssignment_2()); 
             }
 
             }
@@ -16041,26 +16615,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__2__Impl"
+    // $ANTLR end "rule__WatcherWithFileName__Group__2__Impl"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__3"
-    // InternalSignalDSL.g:4396:1: rule__SignalHandler__Group__3 : rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4 ;
-    public final void rule__SignalHandler__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__3"
+    // InternalSignalDSL.g:4579:1: rule__WatcherWithFileName__Group__3 : rule__WatcherWithFileName__Group__3__Impl rule__WatcherWithFileName__Group__4 ;
+    public final void rule__WatcherWithFileName__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4400:1: ( rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4 )
-            // InternalSignalDSL.g:4401:2: rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4
+            // InternalSignalDSL.g:4583:1: ( rule__WatcherWithFileName__Group__3__Impl rule__WatcherWithFileName__Group__4 )
+            // InternalSignalDSL.g:4584:2: rule__WatcherWithFileName__Group__3__Impl rule__WatcherWithFileName__Group__4
             {
-            pushFollow(FOLLOW_16);
-            rule__SignalHandler__Group__3__Impl();
+            pushFollow(FOLLOW_15);
+            rule__WatcherWithFileName__Group__3__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__4();
+            rule__WatcherWithFileName__Group__4();
 
             state._fsp--;
             if (state.failed) return ;
@@ -16079,42 +16653,378 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__3"
+    // $ANTLR end "rule__WatcherWithFileName__Group__3"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__3__Impl"
-    // InternalSignalDSL.g:4408:1: rule__SignalHandler__Group__3__Impl : ( ( rule__SignalHandler__InterchangesAssignment_3 )* ) ;
-    public final void rule__SignalHandler__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__3__Impl"
+    // InternalSignalDSL.g:4591:1: rule__WatcherWithFileName__Group__3__Impl : ( ( rule__WatcherWithFileName__ExecutiontypeAssignment_3 ) ) ;
+    public final void rule__WatcherWithFileName__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4412:1: ( ( ( rule__SignalHandler__InterchangesAssignment_3 )* ) )
-            // InternalSignalDSL.g:4413:1: ( ( rule__SignalHandler__InterchangesAssignment_3 )* )
+            // InternalSignalDSL.g:4595:1: ( ( ( rule__WatcherWithFileName__ExecutiontypeAssignment_3 ) ) )
+            // InternalSignalDSL.g:4596:1: ( ( rule__WatcherWithFileName__ExecutiontypeAssignment_3 ) )
             {
-            // InternalSignalDSL.g:4413:1: ( ( rule__SignalHandler__InterchangesAssignment_3 )* )
-            // InternalSignalDSL.g:4414:2: ( rule__SignalHandler__InterchangesAssignment_3 )*
+            // InternalSignalDSL.g:4596:1: ( ( rule__WatcherWithFileName__ExecutiontypeAssignment_3 ) )
+            // InternalSignalDSL.g:4597:2: ( rule__WatcherWithFileName__ExecutiontypeAssignment_3 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); 
+               before(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeAssignment_3()); 
             }
-            // InternalSignalDSL.g:4415:2: ( rule__SignalHandler__InterchangesAssignment_3 )*
+            // InternalSignalDSL.g:4598:2: ( rule__WatcherWithFileName__ExecutiontypeAssignment_3 )
+            // InternalSignalDSL.g:4598:3: rule__WatcherWithFileName__ExecutiontypeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileName__ExecutiontypeAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__3__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__4"
+    // InternalSignalDSL.g:4606:1: rule__WatcherWithFileName__Group__4 : rule__WatcherWithFileName__Group__4__Impl rule__WatcherWithFileName__Group__5 ;
+    public final void rule__WatcherWithFileName__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4610:1: ( rule__WatcherWithFileName__Group__4__Impl rule__WatcherWithFileName__Group__5 )
+            // InternalSignalDSL.g:4611:2: rule__WatcherWithFileName__Group__4__Impl rule__WatcherWithFileName__Group__5
+            {
+            pushFollow(FOLLOW_6);
+            rule__WatcherWithFileName__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileName__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__4"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__4__Impl"
+    // InternalSignalDSL.g:4618:1: rule__WatcherWithFileName__Group__4__Impl : ( 'from' ) ;
+    public final void rule__WatcherWithFileName__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4622:1: ( ( 'from' ) )
+            // InternalSignalDSL.g:4623:1: ( 'from' )
+            {
+            // InternalSignalDSL.g:4623:1: ( 'from' )
+            // InternalSignalDSL.g:4624:2: 'from'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getFromKeyword_4()); 
+            }
+            match(input,66,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getFromKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__4__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__5"
+    // InternalSignalDSL.g:4633:1: rule__WatcherWithFileName__Group__5 : rule__WatcherWithFileName__Group__5__Impl rule__WatcherWithFileName__Group__6 ;
+    public final void rule__WatcherWithFileName__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4637:1: ( rule__WatcherWithFileName__Group__5__Impl rule__WatcherWithFileName__Group__6 )
+            // InternalSignalDSL.g:4638:2: rule__WatcherWithFileName__Group__5__Impl rule__WatcherWithFileName__Group__6
+            {
+            pushFollow(FOLLOW_7);
+            rule__WatcherWithFileName__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileName__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__5"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__5__Impl"
+    // InternalSignalDSL.g:4645:1: rule__WatcherWithFileName__Group__5__Impl : ( ( rule__WatcherWithFileName__InterchangegroupAssignment_5 ) ) ;
+    public final void rule__WatcherWithFileName__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4649:1: ( ( ( rule__WatcherWithFileName__InterchangegroupAssignment_5 ) ) )
+            // InternalSignalDSL.g:4650:1: ( ( rule__WatcherWithFileName__InterchangegroupAssignment_5 ) )
+            {
+            // InternalSignalDSL.g:4650:1: ( ( rule__WatcherWithFileName__InterchangegroupAssignment_5 ) )
+            // InternalSignalDSL.g:4651:2: ( rule__WatcherWithFileName__InterchangegroupAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupAssignment_5()); 
+            }
+            // InternalSignalDSL.g:4652:2: ( rule__WatcherWithFileName__InterchangegroupAssignment_5 )
+            // InternalSignalDSL.g:4652:3: rule__WatcherWithFileName__InterchangegroupAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileName__InterchangegroupAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__5__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__6"
+    // InternalSignalDSL.g:4660:1: rule__WatcherWithFileName__Group__6 : rule__WatcherWithFileName__Group__6__Impl rule__WatcherWithFileName__Group__7 ;
+    public final void rule__WatcherWithFileName__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4664:1: ( rule__WatcherWithFileName__Group__6__Impl rule__WatcherWithFileName__Group__7 )
+            // InternalSignalDSL.g:4665:2: rule__WatcherWithFileName__Group__6__Impl rule__WatcherWithFileName__Group__7
+            {
+            pushFollow(FOLLOW_18);
+            rule__WatcherWithFileName__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileName__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__6"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__6__Impl"
+    // InternalSignalDSL.g:4672:1: rule__WatcherWithFileName__Group__6__Impl : ( '{' ) ;
+    public final void rule__WatcherWithFileName__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4676:1: ( ( '{' ) )
+            // InternalSignalDSL.g:4677:1: ( '{' )
+            {
+            // InternalSignalDSL.g:4677:1: ( '{' )
+            // InternalSignalDSL.g:4678:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+            match(input,62,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__6__Impl"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__7"
+    // InternalSignalDSL.g:4687:1: rule__WatcherWithFileName__Group__7 : rule__WatcherWithFileName__Group__7__Impl rule__WatcherWithFileName__Group__8 ;
+    public final void rule__WatcherWithFileName__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4691:1: ( rule__WatcherWithFileName__Group__7__Impl rule__WatcherWithFileName__Group__8 )
+            // InternalSignalDSL.g:4692:2: rule__WatcherWithFileName__Group__7__Impl rule__WatcherWithFileName__Group__8
+            {
+            pushFollow(FOLLOW_18);
+            rule__WatcherWithFileName__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WatcherWithFileName__Group__8();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__Group__7"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__Group__7__Impl"
+    // InternalSignalDSL.g:4699:1: rule__WatcherWithFileName__Group__7__Impl : ( ( rule__WatcherWithFileName__InterchangesAssignment_7 )* ) ;
+    public final void rule__WatcherWithFileName__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4703:1: ( ( ( rule__WatcherWithFileName__InterchangesAssignment_7 )* ) )
+            // InternalSignalDSL.g:4704:1: ( ( rule__WatcherWithFileName__InterchangesAssignment_7 )* )
+            {
+            // InternalSignalDSL.g:4704:1: ( ( rule__WatcherWithFileName__InterchangesAssignment_7 )* )
+            // InternalSignalDSL.g:4705:2: ( rule__WatcherWithFileName__InterchangesAssignment_7 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getInterchangesAssignment_7()); 
+            }
+            // InternalSignalDSL.g:4706:2: ( rule__WatcherWithFileName__InterchangesAssignment_7 )*
             loop55:
             do {
                 int alt55=2;
                 int LA55_0 = input.LA(1);
 
-                if ( ((LA55_0>=51 && LA55_0<=52)) ) {
+                if ( (LA55_0==47||LA55_0==51) ) {
                     alt55=1;
                 }
 
 
                 switch (alt55) {
             	case 1 :
-            	    // InternalSignalDSL.g:4415:3: rule__SignalHandler__InterchangesAssignment_3
+            	    // InternalSignalDSL.g:4706:3: rule__WatcherWithFileName__InterchangesAssignment_7
             	    {
-            	    pushFollow(FOLLOW_17);
-            	    rule__SignalHandler__InterchangesAssignment_3();
+            	    pushFollow(FOLLOW_19);
+            	    rule__WatcherWithFileName__InterchangesAssignment_7();
 
             	    state._fsp--;
             	    if (state.failed) return ;
@@ -16128,7 +17038,7 @@
             } while (true);
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); 
+               after(grammarAccess.getWatcherWithFileNameAccess().getInterchangesAssignment_7()); 
             }
 
             }
@@ -16148,83 +17058,27 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__3__Impl"
+    // $ANTLR end "rule__WatcherWithFileName__Group__7__Impl"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__4"
-    // InternalSignalDSL.g:4423:1: rule__SignalHandler__Group__4 : rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5 ;
-    public final void rule__SignalHandler__Group__4() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__8"
+    // InternalSignalDSL.g:4714:1: rule__WatcherWithFileName__Group__8 : rule__WatcherWithFileName__Group__8__Impl ;
+    public final void rule__WatcherWithFileName__Group__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4427:1: ( rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5 )
-            // InternalSignalDSL.g:4428:2: rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5
-            {
-            pushFollow(FOLLOW_18);
-            rule__SignalHandler__Group__4__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__5();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__Group__4"
-
-
-    // $ANTLR start "rule__SignalHandler__Group__4__Impl"
-    // InternalSignalDSL.g:4435:1: rule__SignalHandler__Group__4__Impl : ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) ) ;
-    public final void rule__SignalHandler__Group__4__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4439:1: ( ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) ) )
-            // InternalSignalDSL.g:4440:1: ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) )
-            {
-            // InternalSignalDSL.g:4440:1: ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) )
-            // InternalSignalDSL.g:4441:2: ( rule__SignalHandler__ExecutiontypeAssignment_4 )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); 
-            }
-            // InternalSignalDSL.g:4442:2: ( rule__SignalHandler__ExecutiontypeAssignment_4 )
-            // InternalSignalDSL.g:4442:3: rule__SignalHandler__ExecutiontypeAssignment_4
+            // InternalSignalDSL.g:4718:1: ( rule__WatcherWithFileName__Group__8__Impl )
+            // InternalSignalDSL.g:4719:2: rule__WatcherWithFileName__Group__8__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__ExecutiontypeAssignment_4();
+            rule__WatcherWithFileName__Group__8__Impl();
 
             state._fsp--;
             if (state.failed) return ;
 
             }
 
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); 
-            }
-
-            }
-
-
-            }
-
         }
         catch (RecognitionException re) {
             reportError(re);
@@ -16237,71 +17091,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__4__Impl"
+    // $ANTLR end "rule__WatcherWithFileName__Group__8"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__5"
-    // InternalSignalDSL.g:4450:1: rule__SignalHandler__Group__5 : rule__SignalHandler__Group__5__Impl ;
-    public final void rule__SignalHandler__Group__5() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__Group__8__Impl"
+    // InternalSignalDSL.g:4725:1: rule__WatcherWithFileName__Group__8__Impl : ( '}' ) ;
+    public final void rule__WatcherWithFileName__Group__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4454:1: ( rule__SignalHandler__Group__5__Impl )
-            // InternalSignalDSL.g:4455:2: rule__SignalHandler__Group__5__Impl
+            // InternalSignalDSL.g:4729:1: ( ( '}' ) )
+            // InternalSignalDSL.g:4730:1: ( '}' )
             {
-            pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__5__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__Group__5"
-
-
-    // $ANTLR start "rule__SignalHandler__Group__5__Impl"
-    // InternalSignalDSL.g:4461:1: rule__SignalHandler__Group__5__Impl : ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) ) ;
-    public final void rule__SignalHandler__Group__5__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4465:1: ( ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) ) )
-            // InternalSignalDSL.g:4466:1: ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) )
-            {
-            // InternalSignalDSL.g:4466:1: ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) )
-            // InternalSignalDSL.g:4467:2: ( rule__SignalHandler__TriggerpolicyAssignment_5 )
+            // InternalSignalDSL.g:4730:1: ( '}' )
+            // InternalSignalDSL.g:4731:2: '}'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); 
+               before(grammarAccess.getWatcherWithFileNameAccess().getRightCurlyBracketKeyword_8()); 
             }
-            // InternalSignalDSL.g:4468:2: ( rule__SignalHandler__TriggerpolicyAssignment_5 )
-            // InternalSignalDSL.g:4468:3: rule__SignalHandler__TriggerpolicyAssignment_5
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalHandler__TriggerpolicyAssignment_5();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); 
+               after(grammarAccess.getWatcherWithFileNameAccess().getRightCurlyBracketKeyword_8()); 
             }
 
             }
@@ -16321,183 +17132,20 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__5__Impl"
-
-
-    // $ANTLR start "rule__TriggerFile__Group__0"
-    // InternalSignalDSL.g:4477:1: rule__TriggerFile__Group__0 : rule__TriggerFile__Group__0__Impl rule__TriggerFile__Group__1 ;
-    public final void rule__TriggerFile__Group__0() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4481:1: ( rule__TriggerFile__Group__0__Impl rule__TriggerFile__Group__1 )
-            // InternalSignalDSL.g:4482:2: rule__TriggerFile__Group__0__Impl rule__TriggerFile__Group__1
-            {
-            pushFollow(FOLLOW_12);
-            rule__TriggerFile__Group__0__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_2);
-            rule__TriggerFile__Group__1();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__TriggerFile__Group__0"
-
-
-    // $ANTLR start "rule__TriggerFile__Group__0__Impl"
-    // InternalSignalDSL.g:4489:1: rule__TriggerFile__Group__0__Impl : ( 'forFileMask' ) ;
-    public final void rule__TriggerFile__Group__0__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4493:1: ( ( 'forFileMask' ) )
-            // InternalSignalDSL.g:4494:1: ( 'forFileMask' )
-            {
-            // InternalSignalDSL.g:4494:1: ( 'forFileMask' )
-            // InternalSignalDSL.g:4495:2: 'forFileMask'
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); 
-            }
-            match(input,68,FOLLOW_2); if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__TriggerFile__Group__0__Impl"
-
-
-    // $ANTLR start "rule__TriggerFile__Group__1"
-    // InternalSignalDSL.g:4504:1: rule__TriggerFile__Group__1 : rule__TriggerFile__Group__1__Impl ;
-    public final void rule__TriggerFile__Group__1() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4508:1: ( rule__TriggerFile__Group__1__Impl )
-            // InternalSignalDSL.g:4509:2: rule__TriggerFile__Group__1__Impl
-            {
-            pushFollow(FOLLOW_2);
-            rule__TriggerFile__Group__1__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__TriggerFile__Group__1"
-
-
-    // $ANTLR start "rule__TriggerFile__Group__1__Impl"
-    // InternalSignalDSL.g:4515:1: rule__TriggerFile__Group__1__Impl : ( ( rule__TriggerFile__FilemaskAssignment_1 ) ) ;
-    public final void rule__TriggerFile__Group__1__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4519:1: ( ( ( rule__TriggerFile__FilemaskAssignment_1 ) ) )
-            // InternalSignalDSL.g:4520:1: ( ( rule__TriggerFile__FilemaskAssignment_1 ) )
-            {
-            // InternalSignalDSL.g:4520:1: ( ( rule__TriggerFile__FilemaskAssignment_1 ) )
-            // InternalSignalDSL.g:4521:2: ( rule__TriggerFile__FilemaskAssignment_1 )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); 
-            }
-            // InternalSignalDSL.g:4522:2: ( rule__TriggerFile__FilemaskAssignment_1 )
-            // InternalSignalDSL.g:4522:3: rule__TriggerFile__FilemaskAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__TriggerFile__FilemaskAssignment_1();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__TriggerFile__Group__1__Impl"
+    // $ANTLR end "rule__WatcherWithFileName__Group__8__Impl"
 
 
     // $ANTLR start "rule__SignalScheduler__Group__0"
-    // InternalSignalDSL.g:4531:1: rule__SignalScheduler__Group__0 : rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1 ;
+    // InternalSignalDSL.g:4741:1: rule__SignalScheduler__Group__0 : rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1 ;
     public final void rule__SignalScheduler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4535:1: ( rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1 )
-            // InternalSignalDSL.g:4536:2: rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1
+            // InternalSignalDSL.g:4745:1: ( rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1 )
+            // InternalSignalDSL.g:4746:2: rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1
             {
-            pushFollow(FOLLOW_19);
+            pushFollow(FOLLOW_20);
             rule__SignalScheduler__Group__0__Impl();
 
             state._fsp--;
@@ -16526,24 +17174,28 @@
 
 
     // $ANTLR start "rule__SignalScheduler__Group__0__Impl"
-    // InternalSignalDSL.g:4543:1: rule__SignalScheduler__Group__0__Impl : ( 'scheduleFor' ) ;
+    // InternalSignalDSL.g:4753:1: rule__SignalScheduler__Group__0__Impl : ( () ) ;
     public final void rule__SignalScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4547:1: ( ( 'scheduleFor' ) )
-            // InternalSignalDSL.g:4548:1: ( 'scheduleFor' )
+            // InternalSignalDSL.g:4757:1: ( ( () ) )
+            // InternalSignalDSL.g:4758:1: ( () )
             {
-            // InternalSignalDSL.g:4548:1: ( 'scheduleFor' )
-            // InternalSignalDSL.g:4549:2: 'scheduleFor'
+            // InternalSignalDSL.g:4758:1: ( () )
+            // InternalSignalDSL.g:4759:2: ()
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); 
+               before(grammarAccess.getSignalSchedulerAccess().getSignalSchedulerAction_0()); 
             }
-            match(input,69,FOLLOW_2); if (state.failed) return ;
+            // InternalSignalDSL.g:4760:2: ()
+            // InternalSignalDSL.g:4760:3: 
+            {
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); 
+               after(grammarAccess.getSignalSchedulerAccess().getSignalSchedulerAction_0()); 
             }
 
             }
@@ -16552,10 +17204,6 @@
             }
 
         }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
         finally {
 
             	restoreStackSize(stackSize);
@@ -16567,20 +17215,25 @@
 
 
     // $ANTLR start "rule__SignalScheduler__Group__1"
-    // InternalSignalDSL.g:4558:1: rule__SignalScheduler__Group__1 : rule__SignalScheduler__Group__1__Impl ;
+    // InternalSignalDSL.g:4768:1: rule__SignalScheduler__Group__1 : rule__SignalScheduler__Group__1__Impl rule__SignalScheduler__Group__2 ;
     public final void rule__SignalScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4562:1: ( rule__SignalScheduler__Group__1__Impl )
-            // InternalSignalDSL.g:4563:2: rule__SignalScheduler__Group__1__Impl
+            // InternalSignalDSL.g:4772:1: ( rule__SignalScheduler__Group__1__Impl rule__SignalScheduler__Group__2 )
+            // InternalSignalDSL.g:4773:2: rule__SignalScheduler__Group__1__Impl rule__SignalScheduler__Group__2
             {
-            pushFollow(FOLLOW_2);
+            pushFollow(FOLLOW_6);
             rule__SignalScheduler__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
@@ -16600,34 +17253,24 @@
 
 
     // $ANTLR start "rule__SignalScheduler__Group__1__Impl"
-    // InternalSignalDSL.g:4569:1: rule__SignalScheduler__Group__1__Impl : ( ( rule__SignalScheduler__SchedulerAssignment_1 ) ) ;
+    // InternalSignalDSL.g:4780:1: rule__SignalScheduler__Group__1__Impl : ( 'scheduler' ) ;
     public final void rule__SignalScheduler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4573:1: ( ( ( rule__SignalScheduler__SchedulerAssignment_1 ) ) )
-            // InternalSignalDSL.g:4574:1: ( ( rule__SignalScheduler__SchedulerAssignment_1 ) )
+            // InternalSignalDSL.g:4784:1: ( ( 'scheduler' ) )
+            // InternalSignalDSL.g:4785:1: ( 'scheduler' )
             {
-            // InternalSignalDSL.g:4574:1: ( ( rule__SignalScheduler__SchedulerAssignment_1 ) )
-            // InternalSignalDSL.g:4575:2: ( rule__SignalScheduler__SchedulerAssignment_1 )
+            // InternalSignalDSL.g:4785:1: ( 'scheduler' )
+            // InternalSignalDSL.g:4786:2: 'scheduler'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); 
+               before(grammarAccess.getSignalSchedulerAccess().getSchedulerKeyword_1()); 
             }
-            // InternalSignalDSL.g:4576:2: ( rule__SignalScheduler__SchedulerAssignment_1 )
-            // InternalSignalDSL.g:4576:3: rule__SignalScheduler__SchedulerAssignment_1
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalScheduler__SchedulerAssignment_1();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
+            match(input,68,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); 
+               after(grammarAccess.getSignalSchedulerAccess().getSchedulerKeyword_1()); 
             }
 
             }
@@ -16650,17 +17293,723 @@
     // $ANTLR end "rule__SignalScheduler__Group__1__Impl"
 
 
+    // $ANTLR start "rule__SignalScheduler__Group__2"
+    // InternalSignalDSL.g:4795:1: rule__SignalScheduler__Group__2 : rule__SignalScheduler__Group__2__Impl rule__SignalScheduler__Group__3 ;
+    public final void rule__SignalScheduler__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4799:1: ( rule__SignalScheduler__Group__2__Impl rule__SignalScheduler__Group__3 )
+            // InternalSignalDSL.g:4800:2: rule__SignalScheduler__Group__2__Impl rule__SignalScheduler__Group__3
+            {
+            pushFollow(FOLLOW_21);
+            rule__SignalScheduler__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__2"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__2__Impl"
+    // InternalSignalDSL.g:4807:1: rule__SignalScheduler__Group__2__Impl : ( ( rule__SignalScheduler__NameAssignment_2 ) ) ;
+    public final void rule__SignalScheduler__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4811:1: ( ( ( rule__SignalScheduler__NameAssignment_2 ) ) )
+            // InternalSignalDSL.g:4812:1: ( ( rule__SignalScheduler__NameAssignment_2 ) )
+            {
+            // InternalSignalDSL.g:4812:1: ( ( rule__SignalScheduler__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4813:2: ( rule__SignalScheduler__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getNameAssignment_2()); 
+            }
+            // InternalSignalDSL.g:4814:2: ( rule__SignalScheduler__NameAssignment_2 )
+            // InternalSignalDSL.g:4814:3: rule__SignalScheduler__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__2__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__3"
+    // InternalSignalDSL.g:4822:1: rule__SignalScheduler__Group__3 : rule__SignalScheduler__Group__3__Impl rule__SignalScheduler__Group__4 ;
+    public final void rule__SignalScheduler__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4826:1: ( rule__SignalScheduler__Group__3__Impl rule__SignalScheduler__Group__4 )
+            // InternalSignalDSL.g:4827:2: rule__SignalScheduler__Group__3__Impl rule__SignalScheduler__Group__4
+            {
+            pushFollow(FOLLOW_22);
+            rule__SignalScheduler__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__3"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__3__Impl"
+    // InternalSignalDSL.g:4834:1: rule__SignalScheduler__Group__3__Impl : ( ( rule__SignalScheduler__SchedulertypeAssignment_3 ) ) ;
+    public final void rule__SignalScheduler__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4838:1: ( ( ( rule__SignalScheduler__SchedulertypeAssignment_3 ) ) )
+            // InternalSignalDSL.g:4839:1: ( ( rule__SignalScheduler__SchedulertypeAssignment_3 ) )
+            {
+            // InternalSignalDSL.g:4839:1: ( ( rule__SignalScheduler__SchedulertypeAssignment_3 ) )
+            // InternalSignalDSL.g:4840:2: ( rule__SignalScheduler__SchedulertypeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getSchedulertypeAssignment_3()); 
+            }
+            // InternalSignalDSL.g:4841:2: ( rule__SignalScheduler__SchedulertypeAssignment_3 )
+            // InternalSignalDSL.g:4841:3: rule__SignalScheduler__SchedulertypeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__SchedulertypeAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getSchedulertypeAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__3__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__4"
+    // InternalSignalDSL.g:4849:1: rule__SignalScheduler__Group__4 : rule__SignalScheduler__Group__4__Impl rule__SignalScheduler__Group__5 ;
+    public final void rule__SignalScheduler__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4853:1: ( rule__SignalScheduler__Group__4__Impl rule__SignalScheduler__Group__5 )
+            // InternalSignalDSL.g:4854:2: rule__SignalScheduler__Group__4__Impl rule__SignalScheduler__Group__5
+            {
+            pushFollow(FOLLOW_22);
+            rule__SignalScheduler__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__4"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__4__Impl"
+    // InternalSignalDSL.g:4861:1: rule__SignalScheduler__Group__4__Impl : ( ( rule__SignalScheduler__ExecutiontypeAssignment_4 )? ) ;
+    public final void rule__SignalScheduler__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4865:1: ( ( ( rule__SignalScheduler__ExecutiontypeAssignment_4 )? ) )
+            // InternalSignalDSL.g:4866:1: ( ( rule__SignalScheduler__ExecutiontypeAssignment_4 )? )
+            {
+            // InternalSignalDSL.g:4866:1: ( ( rule__SignalScheduler__ExecutiontypeAssignment_4 )? )
+            // InternalSignalDSL.g:4867:2: ( rule__SignalScheduler__ExecutiontypeAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getExecutiontypeAssignment_4()); 
+            }
+            // InternalSignalDSL.g:4868:2: ( rule__SignalScheduler__ExecutiontypeAssignment_4 )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( ((LA56_0>=52 && LA56_0<=53)) ) {
+                alt56=1;
+            }
+            switch (alt56) {
+                case 1 :
+                    // InternalSignalDSL.g:4868:3: rule__SignalScheduler__ExecutiontypeAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__SignalScheduler__ExecutiontypeAssignment_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getExecutiontypeAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__4__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__5"
+    // InternalSignalDSL.g:4876:1: rule__SignalScheduler__Group__5 : rule__SignalScheduler__Group__5__Impl rule__SignalScheduler__Group__6 ;
+    public final void rule__SignalScheduler__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4880:1: ( rule__SignalScheduler__Group__5__Impl rule__SignalScheduler__Group__6 )
+            // InternalSignalDSL.g:4881:2: rule__SignalScheduler__Group__5__Impl rule__SignalScheduler__Group__6
+            {
+            pushFollow(FOLLOW_6);
+            rule__SignalScheduler__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__5"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__5__Impl"
+    // InternalSignalDSL.g:4888:1: rule__SignalScheduler__Group__5__Impl : ( 'from' ) ;
+    public final void rule__SignalScheduler__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4892:1: ( ( 'from' ) )
+            // InternalSignalDSL.g:4893:1: ( 'from' )
+            {
+            // InternalSignalDSL.g:4893:1: ( 'from' )
+            // InternalSignalDSL.g:4894:2: 'from'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getFromKeyword_5()); 
+            }
+            match(input,66,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getFromKeyword_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__5__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__6"
+    // InternalSignalDSL.g:4903:1: rule__SignalScheduler__Group__6 : rule__SignalScheduler__Group__6__Impl rule__SignalScheduler__Group__7 ;
+    public final void rule__SignalScheduler__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4907:1: ( rule__SignalScheduler__Group__6__Impl rule__SignalScheduler__Group__7 )
+            // InternalSignalDSL.g:4908:2: rule__SignalScheduler__Group__6__Impl rule__SignalScheduler__Group__7
+            {
+            pushFollow(FOLLOW_7);
+            rule__SignalScheduler__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__6"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__6__Impl"
+    // InternalSignalDSL.g:4915:1: rule__SignalScheduler__Group__6__Impl : ( ( rule__SignalScheduler__InterchangegroupAssignment_6 ) ) ;
+    public final void rule__SignalScheduler__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4919:1: ( ( ( rule__SignalScheduler__InterchangegroupAssignment_6 ) ) )
+            // InternalSignalDSL.g:4920:1: ( ( rule__SignalScheduler__InterchangegroupAssignment_6 ) )
+            {
+            // InternalSignalDSL.g:4920:1: ( ( rule__SignalScheduler__InterchangegroupAssignment_6 ) )
+            // InternalSignalDSL.g:4921:2: ( rule__SignalScheduler__InterchangegroupAssignment_6 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getInterchangegroupAssignment_6()); 
+            }
+            // InternalSignalDSL.g:4922:2: ( rule__SignalScheduler__InterchangegroupAssignment_6 )
+            // InternalSignalDSL.g:4922:3: rule__SignalScheduler__InterchangegroupAssignment_6
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__InterchangegroupAssignment_6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getInterchangegroupAssignment_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__6__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__7"
+    // InternalSignalDSL.g:4930:1: rule__SignalScheduler__Group__7 : rule__SignalScheduler__Group__7__Impl rule__SignalScheduler__Group__8 ;
+    public final void rule__SignalScheduler__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4934:1: ( rule__SignalScheduler__Group__7__Impl rule__SignalScheduler__Group__8 )
+            // InternalSignalDSL.g:4935:2: rule__SignalScheduler__Group__7__Impl rule__SignalScheduler__Group__8
+            {
+            pushFollow(FOLLOW_18);
+            rule__SignalScheduler__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__8();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__7"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__7__Impl"
+    // InternalSignalDSL.g:4942:1: rule__SignalScheduler__Group__7__Impl : ( '{' ) ;
+    public final void rule__SignalScheduler__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4946:1: ( ( '{' ) )
+            // InternalSignalDSL.g:4947:1: ( '{' )
+            {
+            // InternalSignalDSL.g:4947:1: ( '{' )
+            // InternalSignalDSL.g:4948:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getLeftCurlyBracketKeyword_7()); 
+            }
+            match(input,62,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getLeftCurlyBracketKeyword_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__7__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__8"
+    // InternalSignalDSL.g:4957:1: rule__SignalScheduler__Group__8 : rule__SignalScheduler__Group__8__Impl rule__SignalScheduler__Group__9 ;
+    public final void rule__SignalScheduler__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4961:1: ( rule__SignalScheduler__Group__8__Impl rule__SignalScheduler__Group__9 )
+            // InternalSignalDSL.g:4962:2: rule__SignalScheduler__Group__8__Impl rule__SignalScheduler__Group__9
+            {
+            pushFollow(FOLLOW_18);
+            rule__SignalScheduler__Group__8__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__9();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__8"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__8__Impl"
+    // InternalSignalDSL.g:4969:1: rule__SignalScheduler__Group__8__Impl : ( ( rule__SignalScheduler__InterchangesAssignment_8 )* ) ;
+    public final void rule__SignalScheduler__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4973:1: ( ( ( rule__SignalScheduler__InterchangesAssignment_8 )* ) )
+            // InternalSignalDSL.g:4974:1: ( ( rule__SignalScheduler__InterchangesAssignment_8 )* )
+            {
+            // InternalSignalDSL.g:4974:1: ( ( rule__SignalScheduler__InterchangesAssignment_8 )* )
+            // InternalSignalDSL.g:4975:2: ( rule__SignalScheduler__InterchangesAssignment_8 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getInterchangesAssignment_8()); 
+            }
+            // InternalSignalDSL.g:4976:2: ( rule__SignalScheduler__InterchangesAssignment_8 )*
+            loop57:
+            do {
+                int alt57=2;
+                int LA57_0 = input.LA(1);
+
+                if ( (LA57_0==47||LA57_0==51) ) {
+                    alt57=1;
+                }
+
+
+                switch (alt57) {
+            	case 1 :
+            	    // InternalSignalDSL.g:4976:3: rule__SignalScheduler__InterchangesAssignment_8
+            	    {
+            	    pushFollow(FOLLOW_19);
+            	    rule__SignalScheduler__InterchangesAssignment_8();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop57;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getInterchangesAssignment_8()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__8__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__9"
+    // InternalSignalDSL.g:4984:1: rule__SignalScheduler__Group__9 : rule__SignalScheduler__Group__9__Impl ;
+    public final void rule__SignalScheduler__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4988:1: ( rule__SignalScheduler__Group__9__Impl )
+            // InternalSignalDSL.g:4989:2: rule__SignalScheduler__Group__9__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__9__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__9"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__9__Impl"
+    // InternalSignalDSL.g:4995:1: rule__SignalScheduler__Group__9__Impl : ( '}' ) ;
+    public final void rule__SignalScheduler__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4999:1: ( ( '}' ) )
+            // InternalSignalDSL.g:5000:1: ( '}' )
+            {
+            // InternalSignalDSL.g:5000:1: ( '}' )
+            // InternalSignalDSL.g:5001:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getRightCurlyBracketKeyword_9()); 
+            }
+            match(input,63,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getRightCurlyBracketKeyword_9()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__9__Impl"
+
+
     // $ANTLR start "rule__CronScheduler__Group__0"
-    // InternalSignalDSL.g:4585:1: rule__CronScheduler__Group__0 : rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1 ;
+    // InternalSignalDSL.g:5011:1: rule__CronScheduler__Group__0 : rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1 ;
     public final void rule__CronScheduler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4589:1: ( rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1 )
-            // InternalSignalDSL.g:4590:2: rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1
+            // InternalSignalDSL.g:5015:1: ( rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1 )
+            // InternalSignalDSL.g:5016:2: rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1
             {
-            pushFollow(FOLLOW_12);
+            pushFollow(FOLLOW_13);
             rule__CronScheduler__Group__0__Impl();
 
             state._fsp--;
@@ -16689,22 +18038,22 @@
 
 
     // $ANTLR start "rule__CronScheduler__Group__0__Impl"
-    // InternalSignalDSL.g:4597:1: rule__CronScheduler__Group__0__Impl : ( 'cron' ) ;
+    // InternalSignalDSL.g:5023:1: rule__CronScheduler__Group__0__Impl : ( 'cron' ) ;
     public final void rule__CronScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4601:1: ( ( 'cron' ) )
-            // InternalSignalDSL.g:4602:1: ( 'cron' )
+            // InternalSignalDSL.g:5027:1: ( ( 'cron' ) )
+            // InternalSignalDSL.g:5028:1: ( 'cron' )
             {
-            // InternalSignalDSL.g:4602:1: ( 'cron' )
-            // InternalSignalDSL.g:4603:2: 'cron'
+            // InternalSignalDSL.g:5028:1: ( 'cron' )
+            // InternalSignalDSL.g:5029:2: 'cron'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCronSchedulerAccess().getCronKeyword_0()); 
             }
-            match(input,70,FOLLOW_2); if (state.failed) return ;
+            match(input,69,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getCronSchedulerAccess().getCronKeyword_0()); 
             }
@@ -16730,14 +18079,14 @@
 
 
     // $ANTLR start "rule__CronScheduler__Group__1"
-    // InternalSignalDSL.g:4612:1: rule__CronScheduler__Group__1 : rule__CronScheduler__Group__1__Impl ;
+    // InternalSignalDSL.g:5038:1: rule__CronScheduler__Group__1 : rule__CronScheduler__Group__1__Impl ;
     public final void rule__CronScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4616:1: ( rule__CronScheduler__Group__1__Impl )
-            // InternalSignalDSL.g:4617:2: rule__CronScheduler__Group__1__Impl
+            // InternalSignalDSL.g:5042:1: ( rule__CronScheduler__Group__1__Impl )
+            // InternalSignalDSL.g:5043:2: rule__CronScheduler__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__CronScheduler__Group__1__Impl();
@@ -16763,23 +18112,23 @@
 
 
     // $ANTLR start "rule__CronScheduler__Group__1__Impl"
-    // InternalSignalDSL.g:4623:1: rule__CronScheduler__Group__1__Impl : ( ( rule__CronScheduler__ExpressionAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5049:1: rule__CronScheduler__Group__1__Impl : ( ( rule__CronScheduler__ExpressionAssignment_1 ) ) ;
     public final void rule__CronScheduler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4627:1: ( ( ( rule__CronScheduler__ExpressionAssignment_1 ) ) )
-            // InternalSignalDSL.g:4628:1: ( ( rule__CronScheduler__ExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:5053:1: ( ( ( rule__CronScheduler__ExpressionAssignment_1 ) ) )
+            // InternalSignalDSL.g:5054:1: ( ( rule__CronScheduler__ExpressionAssignment_1 ) )
             {
-            // InternalSignalDSL.g:4628:1: ( ( rule__CronScheduler__ExpressionAssignment_1 ) )
-            // InternalSignalDSL.g:4629:2: ( rule__CronScheduler__ExpressionAssignment_1 )
+            // InternalSignalDSL.g:5054:1: ( ( rule__CronScheduler__ExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:5055:2: ( rule__CronScheduler__ExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCronSchedulerAccess().getExpressionAssignment_1()); 
             }
-            // InternalSignalDSL.g:4630:2: ( rule__CronScheduler__ExpressionAssignment_1 )
-            // InternalSignalDSL.g:4630:3: rule__CronScheduler__ExpressionAssignment_1
+            // InternalSignalDSL.g:5056:2: ( rule__CronScheduler__ExpressionAssignment_1 )
+            // InternalSignalDSL.g:5056:3: rule__CronScheduler__ExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__CronScheduler__ExpressionAssignment_1();
@@ -16814,16 +18163,16 @@
 
 
     // $ANTLR start "rule__HourlyScheduler__Group__0"
-    // InternalSignalDSL.g:4639:1: rule__HourlyScheduler__Group__0 : rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1 ;
+    // InternalSignalDSL.g:5065:1: rule__HourlyScheduler__Group__0 : rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1 ;
     public final void rule__HourlyScheduler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4643:1: ( rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1 )
-            // InternalSignalDSL.g:4644:2: rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1
+            // InternalSignalDSL.g:5069:1: ( rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1 )
+            // InternalSignalDSL.g:5070:2: rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__HourlyScheduler__Group__0__Impl();
 
             state._fsp--;
@@ -16852,24 +18201,24 @@
 
 
     // $ANTLR start "rule__HourlyScheduler__Group__0__Impl"
-    // InternalSignalDSL.g:4651:1: rule__HourlyScheduler__Group__0__Impl : ( 'hourlyAt' ) ;
+    // InternalSignalDSL.g:5077:1: rule__HourlyScheduler__Group__0__Impl : ( 'hourlyat' ) ;
     public final void rule__HourlyScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4655:1: ( ( 'hourlyAt' ) )
-            // InternalSignalDSL.g:4656:1: ( 'hourlyAt' )
+            // InternalSignalDSL.g:5081:1: ( ( 'hourlyat' ) )
+            // InternalSignalDSL.g:5082:1: ( 'hourlyat' )
             {
-            // InternalSignalDSL.g:4656:1: ( 'hourlyAt' )
-            // InternalSignalDSL.g:4657:2: 'hourlyAt'
+            // InternalSignalDSL.g:5082:1: ( 'hourlyat' )
+            // InternalSignalDSL.g:5083:2: 'hourlyat'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); 
+               before(grammarAccess.getHourlySchedulerAccess().getHourlyatKeyword_0()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,70,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); 
+               after(grammarAccess.getHourlySchedulerAccess().getHourlyatKeyword_0()); 
             }
 
             }
@@ -16893,14 +18242,14 @@
 
 
     // $ANTLR start "rule__HourlyScheduler__Group__1"
-    // InternalSignalDSL.g:4666:1: rule__HourlyScheduler__Group__1 : rule__HourlyScheduler__Group__1__Impl ;
+    // InternalSignalDSL.g:5092:1: rule__HourlyScheduler__Group__1 : rule__HourlyScheduler__Group__1__Impl ;
     public final void rule__HourlyScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4670:1: ( rule__HourlyScheduler__Group__1__Impl )
-            // InternalSignalDSL.g:4671:2: rule__HourlyScheduler__Group__1__Impl
+            // InternalSignalDSL.g:5096:1: ( rule__HourlyScheduler__Group__1__Impl )
+            // InternalSignalDSL.g:5097:2: rule__HourlyScheduler__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__HourlyScheduler__Group__1__Impl();
@@ -16926,23 +18275,23 @@
 
 
     // $ANTLR start "rule__HourlyScheduler__Group__1__Impl"
-    // InternalSignalDSL.g:4677:1: rule__HourlyScheduler__Group__1__Impl : ( ( rule__HourlyScheduler__MinuteAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5103:1: rule__HourlyScheduler__Group__1__Impl : ( ( rule__HourlyScheduler__MinuteAssignment_1 ) ) ;
     public final void rule__HourlyScheduler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4681:1: ( ( ( rule__HourlyScheduler__MinuteAssignment_1 ) ) )
-            // InternalSignalDSL.g:4682:1: ( ( rule__HourlyScheduler__MinuteAssignment_1 ) )
+            // InternalSignalDSL.g:5107:1: ( ( ( rule__HourlyScheduler__MinuteAssignment_1 ) ) )
+            // InternalSignalDSL.g:5108:1: ( ( rule__HourlyScheduler__MinuteAssignment_1 ) )
             {
-            // InternalSignalDSL.g:4682:1: ( ( rule__HourlyScheduler__MinuteAssignment_1 ) )
-            // InternalSignalDSL.g:4683:2: ( rule__HourlyScheduler__MinuteAssignment_1 )
+            // InternalSignalDSL.g:5108:1: ( ( rule__HourlyScheduler__MinuteAssignment_1 ) )
+            // InternalSignalDSL.g:5109:2: ( rule__HourlyScheduler__MinuteAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getHourlySchedulerAccess().getMinuteAssignment_1()); 
             }
-            // InternalSignalDSL.g:4684:2: ( rule__HourlyScheduler__MinuteAssignment_1 )
-            // InternalSignalDSL.g:4684:3: rule__HourlyScheduler__MinuteAssignment_1
+            // InternalSignalDSL.g:5110:2: ( rule__HourlyScheduler__MinuteAssignment_1 )
+            // InternalSignalDSL.g:5110:3: rule__HourlyScheduler__MinuteAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__HourlyScheduler__MinuteAssignment_1();
@@ -16977,16 +18326,16 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__0"
-    // InternalSignalDSL.g:4693:1: rule__DailyScheduler__Group__0 : rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1 ;
+    // InternalSignalDSL.g:5119:1: rule__DailyScheduler__Group__0 : rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1 ;
     public final void rule__DailyScheduler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4697:1: ( rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1 )
-            // InternalSignalDSL.g:4698:2: rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1
+            // InternalSignalDSL.g:5123:1: ( rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1 )
+            // InternalSignalDSL.g:5124:2: rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__DailyScheduler__Group__0__Impl();
 
             state._fsp--;
@@ -17015,24 +18364,24 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__0__Impl"
-    // InternalSignalDSL.g:4705:1: rule__DailyScheduler__Group__0__Impl : ( 'dailyAt' ) ;
+    // InternalSignalDSL.g:5131:1: rule__DailyScheduler__Group__0__Impl : ( 'dailyat' ) ;
     public final void rule__DailyScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4709:1: ( ( 'dailyAt' ) )
-            // InternalSignalDSL.g:4710:1: ( 'dailyAt' )
+            // InternalSignalDSL.g:5135:1: ( ( 'dailyat' ) )
+            // InternalSignalDSL.g:5136:1: ( 'dailyat' )
             {
-            // InternalSignalDSL.g:4710:1: ( 'dailyAt' )
-            // InternalSignalDSL.g:4711:2: 'dailyAt'
+            // InternalSignalDSL.g:5136:1: ( 'dailyat' )
+            // InternalSignalDSL.g:5137:2: 'dailyat'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); 
+               before(grammarAccess.getDailySchedulerAccess().getDailyatKeyword_0()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,71,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); 
+               after(grammarAccess.getDailySchedulerAccess().getDailyatKeyword_0()); 
             }
 
             }
@@ -17056,16 +18405,16 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__1"
-    // InternalSignalDSL.g:4720:1: rule__DailyScheduler__Group__1 : rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2 ;
+    // InternalSignalDSL.g:5146:1: rule__DailyScheduler__Group__1 : rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2 ;
     public final void rule__DailyScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4724:1: ( rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2 )
-            // InternalSignalDSL.g:4725:2: rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2
+            // InternalSignalDSL.g:5150:1: ( rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2 )
+            // InternalSignalDSL.g:5151:2: rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_24);
             rule__DailyScheduler__Group__1__Impl();
 
             state._fsp--;
@@ -17094,23 +18443,23 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__1__Impl"
-    // InternalSignalDSL.g:4732:1: rule__DailyScheduler__Group__1__Impl : ( ( rule__DailyScheduler__HourAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5158:1: rule__DailyScheduler__Group__1__Impl : ( ( rule__DailyScheduler__HourAssignment_1 ) ) ;
     public final void rule__DailyScheduler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4736:1: ( ( ( rule__DailyScheduler__HourAssignment_1 ) ) )
-            // InternalSignalDSL.g:4737:1: ( ( rule__DailyScheduler__HourAssignment_1 ) )
+            // InternalSignalDSL.g:5162:1: ( ( ( rule__DailyScheduler__HourAssignment_1 ) ) )
+            // InternalSignalDSL.g:5163:1: ( ( rule__DailyScheduler__HourAssignment_1 ) )
             {
-            // InternalSignalDSL.g:4737:1: ( ( rule__DailyScheduler__HourAssignment_1 ) )
-            // InternalSignalDSL.g:4738:2: ( rule__DailyScheduler__HourAssignment_1 )
+            // InternalSignalDSL.g:5163:1: ( ( rule__DailyScheduler__HourAssignment_1 ) )
+            // InternalSignalDSL.g:5164:2: ( rule__DailyScheduler__HourAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDailySchedulerAccess().getHourAssignment_1()); 
             }
-            // InternalSignalDSL.g:4739:2: ( rule__DailyScheduler__HourAssignment_1 )
-            // InternalSignalDSL.g:4739:3: rule__DailyScheduler__HourAssignment_1
+            // InternalSignalDSL.g:5165:2: ( rule__DailyScheduler__HourAssignment_1 )
+            // InternalSignalDSL.g:5165:3: rule__DailyScheduler__HourAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__DailyScheduler__HourAssignment_1();
@@ -17145,16 +18494,16 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__2"
-    // InternalSignalDSL.g:4747:1: rule__DailyScheduler__Group__2 : rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3 ;
+    // InternalSignalDSL.g:5173:1: rule__DailyScheduler__Group__2 : rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3 ;
     public final void rule__DailyScheduler__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4751:1: ( rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3 )
-            // InternalSignalDSL.g:4752:2: rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3
+            // InternalSignalDSL.g:5177:1: ( rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3 )
+            // InternalSignalDSL.g:5178:2: rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__DailyScheduler__Group__2__Impl();
 
             state._fsp--;
@@ -17183,22 +18532,22 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__2__Impl"
-    // InternalSignalDSL.g:4759:1: rule__DailyScheduler__Group__2__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:5185:1: rule__DailyScheduler__Group__2__Impl : ( ':' ) ;
     public final void rule__DailyScheduler__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4763:1: ( ( ':' ) )
-            // InternalSignalDSL.g:4764:1: ( ':' )
+            // InternalSignalDSL.g:5189:1: ( ( ':' ) )
+            // InternalSignalDSL.g:5190:1: ( ':' )
             {
-            // InternalSignalDSL.g:4764:1: ( ':' )
-            // InternalSignalDSL.g:4765:2: ':'
+            // InternalSignalDSL.g:5190:1: ( ':' )
+            // InternalSignalDSL.g:5191:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDailySchedulerAccess().getColonKeyword_2()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getDailySchedulerAccess().getColonKeyword_2()); 
             }
@@ -17224,14 +18573,14 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__3"
-    // InternalSignalDSL.g:4774:1: rule__DailyScheduler__Group__3 : rule__DailyScheduler__Group__3__Impl ;
+    // InternalSignalDSL.g:5200:1: rule__DailyScheduler__Group__3 : rule__DailyScheduler__Group__3__Impl ;
     public final void rule__DailyScheduler__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4778:1: ( rule__DailyScheduler__Group__3__Impl )
-            // InternalSignalDSL.g:4779:2: rule__DailyScheduler__Group__3__Impl
+            // InternalSignalDSL.g:5204:1: ( rule__DailyScheduler__Group__3__Impl )
+            // InternalSignalDSL.g:5205:2: rule__DailyScheduler__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__DailyScheduler__Group__3__Impl();
@@ -17257,23 +18606,23 @@
 
 
     // $ANTLR start "rule__DailyScheduler__Group__3__Impl"
-    // InternalSignalDSL.g:4785:1: rule__DailyScheduler__Group__3__Impl : ( ( rule__DailyScheduler__MinuteAssignment_3 ) ) ;
+    // InternalSignalDSL.g:5211:1: rule__DailyScheduler__Group__3__Impl : ( ( rule__DailyScheduler__MinuteAssignment_3 ) ) ;
     public final void rule__DailyScheduler__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4789:1: ( ( ( rule__DailyScheduler__MinuteAssignment_3 ) ) )
-            // InternalSignalDSL.g:4790:1: ( ( rule__DailyScheduler__MinuteAssignment_3 ) )
+            // InternalSignalDSL.g:5215:1: ( ( ( rule__DailyScheduler__MinuteAssignment_3 ) ) )
+            // InternalSignalDSL.g:5216:1: ( ( rule__DailyScheduler__MinuteAssignment_3 ) )
             {
-            // InternalSignalDSL.g:4790:1: ( ( rule__DailyScheduler__MinuteAssignment_3 ) )
-            // InternalSignalDSL.g:4791:2: ( rule__DailyScheduler__MinuteAssignment_3 )
+            // InternalSignalDSL.g:5216:1: ( ( rule__DailyScheduler__MinuteAssignment_3 ) )
+            // InternalSignalDSL.g:5217:2: ( rule__DailyScheduler__MinuteAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDailySchedulerAccess().getMinuteAssignment_3()); 
             }
-            // InternalSignalDSL.g:4792:2: ( rule__DailyScheduler__MinuteAssignment_3 )
-            // InternalSignalDSL.g:4792:3: rule__DailyScheduler__MinuteAssignment_3
+            // InternalSignalDSL.g:5218:2: ( rule__DailyScheduler__MinuteAssignment_3 )
+            // InternalSignalDSL.g:5218:3: rule__DailyScheduler__MinuteAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__DailyScheduler__MinuteAssignment_3();
@@ -17308,16 +18657,16 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__0"
-    // InternalSignalDSL.g:4801:1: rule__WeeklyScheduler__Group__0 : rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1 ;
+    // InternalSignalDSL.g:5227:1: rule__WeeklyScheduler__Group__0 : rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1 ;
     public final void rule__WeeklyScheduler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4805:1: ( rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1 )
-            // InternalSignalDSL.g:4806:2: rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1
+            // InternalSignalDSL.g:5231:1: ( rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1 )
+            // InternalSignalDSL.g:5232:2: rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1
             {
-            pushFollow(FOLLOW_22);
+            pushFollow(FOLLOW_25);
             rule__WeeklyScheduler__Group__0__Impl();
 
             state._fsp--;
@@ -17346,24 +18695,24 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__0__Impl"
-    // InternalSignalDSL.g:4813:1: rule__WeeklyScheduler__Group__0__Impl : ( 'weeklyOn' ) ;
+    // InternalSignalDSL.g:5239:1: rule__WeeklyScheduler__Group__0__Impl : ( 'weeklyon' ) ;
     public final void rule__WeeklyScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4817:1: ( ( 'weeklyOn' ) )
-            // InternalSignalDSL.g:4818:1: ( 'weeklyOn' )
+            // InternalSignalDSL.g:5243:1: ( ( 'weeklyon' ) )
+            // InternalSignalDSL.g:5244:1: ( 'weeklyon' )
             {
-            // InternalSignalDSL.g:4818:1: ( 'weeklyOn' )
-            // InternalSignalDSL.g:4819:2: 'weeklyOn'
+            // InternalSignalDSL.g:5244:1: ( 'weeklyon' )
+            // InternalSignalDSL.g:5245:2: 'weeklyon'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); 
+               before(grammarAccess.getWeeklySchedulerAccess().getWeeklyonKeyword_0()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); 
+               after(grammarAccess.getWeeklySchedulerAccess().getWeeklyonKeyword_0()); 
             }
 
             }
@@ -17387,16 +18736,16 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__1"
-    // InternalSignalDSL.g:4828:1: rule__WeeklyScheduler__Group__1 : rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2 ;
+    // InternalSignalDSL.g:5254:1: rule__WeeklyScheduler__Group__1 : rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2 ;
     public final void rule__WeeklyScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4832:1: ( rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2 )
-            // InternalSignalDSL.g:4833:2: rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2
+            // InternalSignalDSL.g:5258:1: ( rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2 )
+            // InternalSignalDSL.g:5259:2: rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2
             {
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_26);
             rule__WeeklyScheduler__Group__1__Impl();
 
             state._fsp--;
@@ -17425,23 +18774,23 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__1__Impl"
-    // InternalSignalDSL.g:4840:1: rule__WeeklyScheduler__Group__1__Impl : ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5266:1: rule__WeeklyScheduler__Group__1__Impl : ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) ) ;
     public final void rule__WeeklyScheduler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4844:1: ( ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) ) )
-            // InternalSignalDSL.g:4845:1: ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) )
+            // InternalSignalDSL.g:5270:1: ( ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) ) )
+            // InternalSignalDSL.g:5271:1: ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) )
             {
-            // InternalSignalDSL.g:4845:1: ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) )
-            // InternalSignalDSL.g:4846:2: ( rule__WeeklyScheduler__DayofweekAssignment_1 )
+            // InternalSignalDSL.g:5271:1: ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) )
+            // InternalSignalDSL.g:5272:2: ( rule__WeeklyScheduler__DayofweekAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getDayofweekAssignment_1()); 
             }
-            // InternalSignalDSL.g:4847:2: ( rule__WeeklyScheduler__DayofweekAssignment_1 )
-            // InternalSignalDSL.g:4847:3: rule__WeeklyScheduler__DayofweekAssignment_1
+            // InternalSignalDSL.g:5273:2: ( rule__WeeklyScheduler__DayofweekAssignment_1 )
+            // InternalSignalDSL.g:5273:3: rule__WeeklyScheduler__DayofweekAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__WeeklyScheduler__DayofweekAssignment_1();
@@ -17476,16 +18825,16 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__2"
-    // InternalSignalDSL.g:4855:1: rule__WeeklyScheduler__Group__2 : rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3 ;
+    // InternalSignalDSL.g:5281:1: rule__WeeklyScheduler__Group__2 : rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3 ;
     public final void rule__WeeklyScheduler__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4859:1: ( rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3 )
-            // InternalSignalDSL.g:4860:2: rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3
+            // InternalSignalDSL.g:5285:1: ( rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3 )
+            // InternalSignalDSL.g:5286:2: rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__WeeklyScheduler__Group__2__Impl();
 
             state._fsp--;
@@ -17514,22 +18863,22 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__2__Impl"
-    // InternalSignalDSL.g:4867:1: rule__WeeklyScheduler__Group__2__Impl : ( 'at' ) ;
+    // InternalSignalDSL.g:5293:1: rule__WeeklyScheduler__Group__2__Impl : ( 'at' ) ;
     public final void rule__WeeklyScheduler__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4871:1: ( ( 'at' ) )
-            // InternalSignalDSL.g:4872:1: ( 'at' )
+            // InternalSignalDSL.g:5297:1: ( ( 'at' ) )
+            // InternalSignalDSL.g:5298:1: ( 'at' )
             {
-            // InternalSignalDSL.g:4872:1: ( 'at' )
-            // InternalSignalDSL.g:4873:2: 'at'
+            // InternalSignalDSL.g:5298:1: ( 'at' )
+            // InternalSignalDSL.g:5299:2: 'at'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,74,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2()); 
             }
@@ -17555,16 +18904,16 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__3"
-    // InternalSignalDSL.g:4882:1: rule__WeeklyScheduler__Group__3 : rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4 ;
+    // InternalSignalDSL.g:5308:1: rule__WeeklyScheduler__Group__3 : rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4 ;
     public final void rule__WeeklyScheduler__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4886:1: ( rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4 )
-            // InternalSignalDSL.g:4887:2: rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4
+            // InternalSignalDSL.g:5312:1: ( rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4 )
+            // InternalSignalDSL.g:5313:2: rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_24);
             rule__WeeklyScheduler__Group__3__Impl();
 
             state._fsp--;
@@ -17593,23 +18942,23 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__3__Impl"
-    // InternalSignalDSL.g:4894:1: rule__WeeklyScheduler__Group__3__Impl : ( ( rule__WeeklyScheduler__HourAssignment_3 ) ) ;
+    // InternalSignalDSL.g:5320:1: rule__WeeklyScheduler__Group__3__Impl : ( ( rule__WeeklyScheduler__HourAssignment_3 ) ) ;
     public final void rule__WeeklyScheduler__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4898:1: ( ( ( rule__WeeklyScheduler__HourAssignment_3 ) ) )
-            // InternalSignalDSL.g:4899:1: ( ( rule__WeeklyScheduler__HourAssignment_3 ) )
+            // InternalSignalDSL.g:5324:1: ( ( ( rule__WeeklyScheduler__HourAssignment_3 ) ) )
+            // InternalSignalDSL.g:5325:1: ( ( rule__WeeklyScheduler__HourAssignment_3 ) )
             {
-            // InternalSignalDSL.g:4899:1: ( ( rule__WeeklyScheduler__HourAssignment_3 ) )
-            // InternalSignalDSL.g:4900:2: ( rule__WeeklyScheduler__HourAssignment_3 )
+            // InternalSignalDSL.g:5325:1: ( ( rule__WeeklyScheduler__HourAssignment_3 ) )
+            // InternalSignalDSL.g:5326:2: ( rule__WeeklyScheduler__HourAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getHourAssignment_3()); 
             }
-            // InternalSignalDSL.g:4901:2: ( rule__WeeklyScheduler__HourAssignment_3 )
-            // InternalSignalDSL.g:4901:3: rule__WeeklyScheduler__HourAssignment_3
+            // InternalSignalDSL.g:5327:2: ( rule__WeeklyScheduler__HourAssignment_3 )
+            // InternalSignalDSL.g:5327:3: rule__WeeklyScheduler__HourAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__WeeklyScheduler__HourAssignment_3();
@@ -17644,16 +18993,16 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__4"
-    // InternalSignalDSL.g:4909:1: rule__WeeklyScheduler__Group__4 : rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5 ;
+    // InternalSignalDSL.g:5335:1: rule__WeeklyScheduler__Group__4 : rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5 ;
     public final void rule__WeeklyScheduler__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4913:1: ( rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5 )
-            // InternalSignalDSL.g:4914:2: rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5
+            // InternalSignalDSL.g:5339:1: ( rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5 )
+            // InternalSignalDSL.g:5340:2: rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__WeeklyScheduler__Group__4__Impl();
 
             state._fsp--;
@@ -17682,22 +19031,22 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__4__Impl"
-    // InternalSignalDSL.g:4921:1: rule__WeeklyScheduler__Group__4__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:5347:1: rule__WeeklyScheduler__Group__4__Impl : ( ':' ) ;
     public final void rule__WeeklyScheduler__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4925:1: ( ( ':' ) )
-            // InternalSignalDSL.g:4926:1: ( ':' )
+            // InternalSignalDSL.g:5351:1: ( ( ':' ) )
+            // InternalSignalDSL.g:5352:1: ( ':' )
             {
-            // InternalSignalDSL.g:4926:1: ( ':' )
-            // InternalSignalDSL.g:4927:2: ':'
+            // InternalSignalDSL.g:5352:1: ( ':' )
+            // InternalSignalDSL.g:5353:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4()); 
             }
@@ -17723,14 +19072,14 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__5"
-    // InternalSignalDSL.g:4936:1: rule__WeeklyScheduler__Group__5 : rule__WeeklyScheduler__Group__5__Impl ;
+    // InternalSignalDSL.g:5362:1: rule__WeeklyScheduler__Group__5 : rule__WeeklyScheduler__Group__5__Impl ;
     public final void rule__WeeklyScheduler__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4940:1: ( rule__WeeklyScheduler__Group__5__Impl )
-            // InternalSignalDSL.g:4941:2: rule__WeeklyScheduler__Group__5__Impl
+            // InternalSignalDSL.g:5366:1: ( rule__WeeklyScheduler__Group__5__Impl )
+            // InternalSignalDSL.g:5367:2: rule__WeeklyScheduler__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__WeeklyScheduler__Group__5__Impl();
@@ -17756,23 +19105,23 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__Group__5__Impl"
-    // InternalSignalDSL.g:4947:1: rule__WeeklyScheduler__Group__5__Impl : ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) ) ;
+    // InternalSignalDSL.g:5373:1: rule__WeeklyScheduler__Group__5__Impl : ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) ) ;
     public final void rule__WeeklyScheduler__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4951:1: ( ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) ) )
-            // InternalSignalDSL.g:4952:1: ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) )
+            // InternalSignalDSL.g:5377:1: ( ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) ) )
+            // InternalSignalDSL.g:5378:1: ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) )
             {
-            // InternalSignalDSL.g:4952:1: ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) )
-            // InternalSignalDSL.g:4953:2: ( rule__WeeklyScheduler__MinuteAssignment_5 )
+            // InternalSignalDSL.g:5378:1: ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) )
+            // InternalSignalDSL.g:5379:2: ( rule__WeeklyScheduler__MinuteAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getMinuteAssignment_5()); 
             }
-            // InternalSignalDSL.g:4954:2: ( rule__WeeklyScheduler__MinuteAssignment_5 )
-            // InternalSignalDSL.g:4954:3: rule__WeeklyScheduler__MinuteAssignment_5
+            // InternalSignalDSL.g:5380:2: ( rule__WeeklyScheduler__MinuteAssignment_5 )
+            // InternalSignalDSL.g:5380:3: rule__WeeklyScheduler__MinuteAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__WeeklyScheduler__MinuteAssignment_5();
@@ -17807,16 +19156,16 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__0"
-    // InternalSignalDSL.g:4963:1: rule__MonthlyScheduler__Group__0 : rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1 ;
+    // InternalSignalDSL.g:5389:1: rule__MonthlyScheduler__Group__0 : rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1 ;
     public final void rule__MonthlyScheduler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4967:1: ( rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1 )
-            // InternalSignalDSL.g:4968:2: rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1
+            // InternalSignalDSL.g:5393:1: ( rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1 )
+            // InternalSignalDSL.g:5394:2: rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__MonthlyScheduler__Group__0__Impl();
 
             state._fsp--;
@@ -17845,24 +19194,24 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__0__Impl"
-    // InternalSignalDSL.g:4975:1: rule__MonthlyScheduler__Group__0__Impl : ( 'monthlyOn' ) ;
+    // InternalSignalDSL.g:5401:1: rule__MonthlyScheduler__Group__0__Impl : ( 'monthlyon' ) ;
     public final void rule__MonthlyScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4979:1: ( ( 'monthlyOn' ) )
-            // InternalSignalDSL.g:4980:1: ( 'monthlyOn' )
+            // InternalSignalDSL.g:5405:1: ( ( 'monthlyon' ) )
+            // InternalSignalDSL.g:5406:1: ( 'monthlyon' )
             {
-            // InternalSignalDSL.g:4980:1: ( 'monthlyOn' )
-            // InternalSignalDSL.g:4981:2: 'monthlyOn'
+            // InternalSignalDSL.g:5406:1: ( 'monthlyon' )
+            // InternalSignalDSL.g:5407:2: 'monthlyon'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); 
+               before(grammarAccess.getMonthlySchedulerAccess().getMonthlyonKeyword_0()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,75,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); 
+               after(grammarAccess.getMonthlySchedulerAccess().getMonthlyonKeyword_0()); 
             }
 
             }
@@ -17886,16 +19235,16 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__1"
-    // InternalSignalDSL.g:4990:1: rule__MonthlyScheduler__Group__1 : rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2 ;
+    // InternalSignalDSL.g:5416:1: rule__MonthlyScheduler__Group__1 : rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2 ;
     public final void rule__MonthlyScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4994:1: ( rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2 )
-            // InternalSignalDSL.g:4995:2: rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2
+            // InternalSignalDSL.g:5420:1: ( rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2 )
+            // InternalSignalDSL.g:5421:2: rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2
             {
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_26);
             rule__MonthlyScheduler__Group__1__Impl();
 
             state._fsp--;
@@ -17924,23 +19273,23 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__1__Impl"
-    // InternalSignalDSL.g:5002:1: rule__MonthlyScheduler__Group__1__Impl : ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5428:1: rule__MonthlyScheduler__Group__1__Impl : ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) ) ;
     public final void rule__MonthlyScheduler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5006:1: ( ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) ) )
-            // InternalSignalDSL.g:5007:1: ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) )
+            // InternalSignalDSL.g:5432:1: ( ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) ) )
+            // InternalSignalDSL.g:5433:1: ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) )
             {
-            // InternalSignalDSL.g:5007:1: ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) )
-            // InternalSignalDSL.g:5008:2: ( rule__MonthlyScheduler__DayofmonthAssignment_1 )
+            // InternalSignalDSL.g:5433:1: ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) )
+            // InternalSignalDSL.g:5434:2: ( rule__MonthlyScheduler__DayofmonthAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getDayofmonthAssignment_1()); 
             }
-            // InternalSignalDSL.g:5009:2: ( rule__MonthlyScheduler__DayofmonthAssignment_1 )
-            // InternalSignalDSL.g:5009:3: rule__MonthlyScheduler__DayofmonthAssignment_1
+            // InternalSignalDSL.g:5435:2: ( rule__MonthlyScheduler__DayofmonthAssignment_1 )
+            // InternalSignalDSL.g:5435:3: rule__MonthlyScheduler__DayofmonthAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__MonthlyScheduler__DayofmonthAssignment_1();
@@ -17975,16 +19324,16 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__2"
-    // InternalSignalDSL.g:5017:1: rule__MonthlyScheduler__Group__2 : rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3 ;
+    // InternalSignalDSL.g:5443:1: rule__MonthlyScheduler__Group__2 : rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3 ;
     public final void rule__MonthlyScheduler__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5021:1: ( rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3 )
-            // InternalSignalDSL.g:5022:2: rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3
+            // InternalSignalDSL.g:5447:1: ( rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3 )
+            // InternalSignalDSL.g:5448:2: rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__MonthlyScheduler__Group__2__Impl();
 
             state._fsp--;
@@ -18013,22 +19362,22 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__2__Impl"
-    // InternalSignalDSL.g:5029:1: rule__MonthlyScheduler__Group__2__Impl : ( 'at' ) ;
+    // InternalSignalDSL.g:5455:1: rule__MonthlyScheduler__Group__2__Impl : ( 'at' ) ;
     public final void rule__MonthlyScheduler__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5033:1: ( ( 'at' ) )
-            // InternalSignalDSL.g:5034:1: ( 'at' )
+            // InternalSignalDSL.g:5459:1: ( ( 'at' ) )
+            // InternalSignalDSL.g:5460:1: ( 'at' )
             {
-            // InternalSignalDSL.g:5034:1: ( 'at' )
-            // InternalSignalDSL.g:5035:2: 'at'
+            // InternalSignalDSL.g:5460:1: ( 'at' )
+            // InternalSignalDSL.g:5461:2: 'at'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,74,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2()); 
             }
@@ -18054,16 +19403,16 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__3"
-    // InternalSignalDSL.g:5044:1: rule__MonthlyScheduler__Group__3 : rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4 ;
+    // InternalSignalDSL.g:5470:1: rule__MonthlyScheduler__Group__3 : rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4 ;
     public final void rule__MonthlyScheduler__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5048:1: ( rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4 )
-            // InternalSignalDSL.g:5049:2: rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4
+            // InternalSignalDSL.g:5474:1: ( rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4 )
+            // InternalSignalDSL.g:5475:2: rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_24);
             rule__MonthlyScheduler__Group__3__Impl();
 
             state._fsp--;
@@ -18092,23 +19441,23 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__3__Impl"
-    // InternalSignalDSL.g:5056:1: rule__MonthlyScheduler__Group__3__Impl : ( ( rule__MonthlyScheduler__HourAssignment_3 ) ) ;
+    // InternalSignalDSL.g:5482:1: rule__MonthlyScheduler__Group__3__Impl : ( ( rule__MonthlyScheduler__HourAssignment_3 ) ) ;
     public final void rule__MonthlyScheduler__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5060:1: ( ( ( rule__MonthlyScheduler__HourAssignment_3 ) ) )
-            // InternalSignalDSL.g:5061:1: ( ( rule__MonthlyScheduler__HourAssignment_3 ) )
+            // InternalSignalDSL.g:5486:1: ( ( ( rule__MonthlyScheduler__HourAssignment_3 ) ) )
+            // InternalSignalDSL.g:5487:1: ( ( rule__MonthlyScheduler__HourAssignment_3 ) )
             {
-            // InternalSignalDSL.g:5061:1: ( ( rule__MonthlyScheduler__HourAssignment_3 ) )
-            // InternalSignalDSL.g:5062:2: ( rule__MonthlyScheduler__HourAssignment_3 )
+            // InternalSignalDSL.g:5487:1: ( ( rule__MonthlyScheduler__HourAssignment_3 ) )
+            // InternalSignalDSL.g:5488:2: ( rule__MonthlyScheduler__HourAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getHourAssignment_3()); 
             }
-            // InternalSignalDSL.g:5063:2: ( rule__MonthlyScheduler__HourAssignment_3 )
-            // InternalSignalDSL.g:5063:3: rule__MonthlyScheduler__HourAssignment_3
+            // InternalSignalDSL.g:5489:2: ( rule__MonthlyScheduler__HourAssignment_3 )
+            // InternalSignalDSL.g:5489:3: rule__MonthlyScheduler__HourAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__MonthlyScheduler__HourAssignment_3();
@@ -18143,16 +19492,16 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__4"
-    // InternalSignalDSL.g:5071:1: rule__MonthlyScheduler__Group__4 : rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5 ;
+    // InternalSignalDSL.g:5497:1: rule__MonthlyScheduler__Group__4 : rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5 ;
     public final void rule__MonthlyScheduler__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5075:1: ( rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5 )
-            // InternalSignalDSL.g:5076:2: rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5
+            // InternalSignalDSL.g:5501:1: ( rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5 )
+            // InternalSignalDSL.g:5502:2: rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_23);
             rule__MonthlyScheduler__Group__4__Impl();
 
             state._fsp--;
@@ -18181,22 +19530,22 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__4__Impl"
-    // InternalSignalDSL.g:5083:1: rule__MonthlyScheduler__Group__4__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:5509:1: rule__MonthlyScheduler__Group__4__Impl : ( ':' ) ;
     public final void rule__MonthlyScheduler__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5087:1: ( ( ':' ) )
-            // InternalSignalDSL.g:5088:1: ( ':' )
+            // InternalSignalDSL.g:5513:1: ( ( ':' ) )
+            // InternalSignalDSL.g:5514:1: ( ':' )
             {
-            // InternalSignalDSL.g:5088:1: ( ':' )
-            // InternalSignalDSL.g:5089:2: ':'
+            // InternalSignalDSL.g:5514:1: ( ':' )
+            // InternalSignalDSL.g:5515:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4()); 
             }
@@ -18222,14 +19571,14 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__5"
-    // InternalSignalDSL.g:5098:1: rule__MonthlyScheduler__Group__5 : rule__MonthlyScheduler__Group__5__Impl ;
+    // InternalSignalDSL.g:5524:1: rule__MonthlyScheduler__Group__5 : rule__MonthlyScheduler__Group__5__Impl ;
     public final void rule__MonthlyScheduler__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5102:1: ( rule__MonthlyScheduler__Group__5__Impl )
-            // InternalSignalDSL.g:5103:2: rule__MonthlyScheduler__Group__5__Impl
+            // InternalSignalDSL.g:5528:1: ( rule__MonthlyScheduler__Group__5__Impl )
+            // InternalSignalDSL.g:5529:2: rule__MonthlyScheduler__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__MonthlyScheduler__Group__5__Impl();
@@ -18255,23 +19604,23 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__Group__5__Impl"
-    // InternalSignalDSL.g:5109:1: rule__MonthlyScheduler__Group__5__Impl : ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) ) ;
+    // InternalSignalDSL.g:5535:1: rule__MonthlyScheduler__Group__5__Impl : ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) ) ;
     public final void rule__MonthlyScheduler__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5113:1: ( ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) ) )
-            // InternalSignalDSL.g:5114:1: ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) )
+            // InternalSignalDSL.g:5539:1: ( ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) ) )
+            // InternalSignalDSL.g:5540:1: ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) )
             {
-            // InternalSignalDSL.g:5114:1: ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) )
-            // InternalSignalDSL.g:5115:2: ( rule__MonthlyScheduler__MinuteAssignment_5 )
+            // InternalSignalDSL.g:5540:1: ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) )
+            // InternalSignalDSL.g:5541:2: ( rule__MonthlyScheduler__MinuteAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getMinuteAssignment_5()); 
             }
-            // InternalSignalDSL.g:5116:2: ( rule__MonthlyScheduler__MinuteAssignment_5 )
-            // InternalSignalDSL.g:5116:3: rule__MonthlyScheduler__MinuteAssignment_5
+            // InternalSignalDSL.g:5542:2: ( rule__MonthlyScheduler__MinuteAssignment_5 )
+            // InternalSignalDSL.g:5542:3: rule__MonthlyScheduler__MinuteAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__MonthlyScheduler__MinuteAssignment_5();
@@ -18306,14 +19655,14 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__0"
-    // InternalSignalDSL.g:5125:1: rule__SignalDatainterchange__Group__0 : rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 ;
+    // InternalSignalDSL.g:5551:1: rule__SignalDatainterchange__Group__0 : rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 ;
     public final void rule__SignalDatainterchange__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5129:1: ( rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 )
-            // InternalSignalDSL.g:5130:2: rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1
+            // InternalSignalDSL.g:5555:1: ( rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 )
+            // InternalSignalDSL.g:5556:2: rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1
             {
             pushFollow(FOLLOW_6);
             rule__SignalDatainterchange__Group__0__Impl();
@@ -18344,23 +19693,23 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__0__Impl"
-    // InternalSignalDSL.g:5137:1: rule__SignalDatainterchange__Group__0__Impl : ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) ;
+    // InternalSignalDSL.g:5563:1: rule__SignalDatainterchange__Group__0__Impl : ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) ;
     public final void rule__SignalDatainterchange__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5141:1: ( ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) )
-            // InternalSignalDSL.g:5142:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
+            // InternalSignalDSL.g:5567:1: ( ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) )
+            // InternalSignalDSL.g:5568:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
             {
-            // InternalSignalDSL.g:5142:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
-            // InternalSignalDSL.g:5143:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
+            // InternalSignalDSL.g:5568:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
+            // InternalSignalDSL.g:5569:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataActionAssignment_0()); 
             }
-            // InternalSignalDSL.g:5144:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
-            // InternalSignalDSL.g:5144:3: rule__SignalDatainterchange__DataActionAssignment_0
+            // InternalSignalDSL.g:5570:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
+            // InternalSignalDSL.g:5570:3: rule__SignalDatainterchange__DataActionAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__DataActionAssignment_0();
@@ -18395,16 +19744,16 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__1"
-    // InternalSignalDSL.g:5152:1: rule__SignalDatainterchange__Group__1 : rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 ;
+    // InternalSignalDSL.g:5578:1: rule__SignalDatainterchange__Group__1 : rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 ;
     public final void rule__SignalDatainterchange__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5156:1: ( rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 )
-            // InternalSignalDSL.g:5157:2: rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2
+            // InternalSignalDSL.g:5582:1: ( rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 )
+            // InternalSignalDSL.g:5583:2: rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2
             {
-            pushFollow(FOLLOW_24);
+            pushFollow(FOLLOW_27);
             rule__SignalDatainterchange__Group__1__Impl();
 
             state._fsp--;
@@ -18433,23 +19782,23 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__1__Impl"
-    // InternalSignalDSL.g:5164:1: rule__SignalDatainterchange__Group__1__Impl : ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5590:1: rule__SignalDatainterchange__Group__1__Impl : ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) ;
     public final void rule__SignalDatainterchange__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5168:1: ( ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) )
-            // InternalSignalDSL.g:5169:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
+            // InternalSignalDSL.g:5594:1: ( ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) )
+            // InternalSignalDSL.g:5595:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
             {
-            // InternalSignalDSL.g:5169:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
-            // InternalSignalDSL.g:5170:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
+            // InternalSignalDSL.g:5595:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
+            // InternalSignalDSL.g:5596:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataRefAssignment_1()); 
             }
-            // InternalSignalDSL.g:5171:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
-            // InternalSignalDSL.g:5171:3: rule__SignalDatainterchange__DataRefAssignment_1
+            // InternalSignalDSL.g:5597:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
+            // InternalSignalDSL.g:5597:3: rule__SignalDatainterchange__DataRefAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__DataRefAssignment_1();
@@ -18484,22 +19833,17 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__2"
-    // InternalSignalDSL.g:5179:1: rule__SignalDatainterchange__Group__2 : rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3 ;
+    // InternalSignalDSL.g:5605:1: rule__SignalDatainterchange__Group__2 : rule__SignalDatainterchange__Group__2__Impl ;
     public final void rule__SignalDatainterchange__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5183:1: ( rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3 )
-            // InternalSignalDSL.g:5184:2: rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3
+            // InternalSignalDSL.g:5609:1: ( rule__SignalDatainterchange__Group__2__Impl )
+            // InternalSignalDSL.g:5610:2: rule__SignalDatainterchange__Group__2__Impl
             {
-            pushFollow(FOLLOW_12);
-            rule__SignalDatainterchange__Group__2__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalDatainterchange__Group__3();
+            rule__SignalDatainterchange__Group__2__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -18522,24 +19866,45 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__2__Impl"
-    // InternalSignalDSL.g:5191:1: rule__SignalDatainterchange__Group__2__Impl : ( 'fileName' ) ;
+    // InternalSignalDSL.g:5616:1: rule__SignalDatainterchange__Group__2__Impl : ( ( rule__SignalDatainterchange__BaseinterchangeAssignment_2 )? ) ;
     public final void rule__SignalDatainterchange__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5195:1: ( ( 'fileName' ) )
-            // InternalSignalDSL.g:5196:1: ( 'fileName' )
+            // InternalSignalDSL.g:5620:1: ( ( ( rule__SignalDatainterchange__BaseinterchangeAssignment_2 )? ) )
+            // InternalSignalDSL.g:5621:1: ( ( rule__SignalDatainterchange__BaseinterchangeAssignment_2 )? )
             {
-            // InternalSignalDSL.g:5196:1: ( 'fileName' )
-            // InternalSignalDSL.g:5197:2: 'fileName'
+            // InternalSignalDSL.g:5621:1: ( ( rule__SignalDatainterchange__BaseinterchangeAssignment_2 )? )
+            // InternalSignalDSL.g:5622:2: ( rule__SignalDatainterchange__BaseinterchangeAssignment_2 )?
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2()); 
+               before(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeAssignment_2()); 
             }
-            match(input,77,FOLLOW_2); if (state.failed) return ;
+            // InternalSignalDSL.g:5623:2: ( rule__SignalDatainterchange__BaseinterchangeAssignment_2 )?
+            int alt58=2;
+            int LA58_0 = input.LA(1);
+
+            if ( (LA58_0==105) ) {
+                alt58=1;
+            }
+            switch (alt58) {
+                case 1 :
+                    // InternalSignalDSL.g:5623:3: rule__SignalDatainterchange__BaseinterchangeAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__SignalDatainterchange__BaseinterchangeAssignment_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2()); 
+               after(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeAssignment_2()); 
             }
 
             }
@@ -18562,101 +19927,17 @@
     // $ANTLR end "rule__SignalDatainterchange__Group__2__Impl"
 
 
-    // $ANTLR start "rule__SignalDatainterchange__Group__3"
-    // InternalSignalDSL.g:5206:1: rule__SignalDatainterchange__Group__3 : rule__SignalDatainterchange__Group__3__Impl ;
-    public final void rule__SignalDatainterchange__Group__3() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:5210:1: ( rule__SignalDatainterchange__Group__3__Impl )
-            // InternalSignalDSL.g:5211:2: rule__SignalDatainterchange__Group__3__Impl
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalDatainterchange__Group__3__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalDatainterchange__Group__3"
-
-
-    // $ANTLR start "rule__SignalDatainterchange__Group__3__Impl"
-    // InternalSignalDSL.g:5217:1: rule__SignalDatainterchange__Group__3__Impl : ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) ) ;
-    public final void rule__SignalDatainterchange__Group__3__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:5221:1: ( ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) ) )
-            // InternalSignalDSL.g:5222:1: ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) )
-            {
-            // InternalSignalDSL.g:5222:1: ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) )
-            // InternalSignalDSL.g:5223:2: ( rule__SignalDatainterchange__FileNameAssignment_3 )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalDatainterchangeAccess().getFileNameAssignment_3()); 
-            }
-            // InternalSignalDSL.g:5224:2: ( rule__SignalDatainterchange__FileNameAssignment_3 )
-            // InternalSignalDSL.g:5224:3: rule__SignalDatainterchange__FileNameAssignment_3
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalDatainterchange__FileNameAssignment_3();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalDatainterchangeAccess().getFileNameAssignment_3()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalDatainterchange__Group__3__Impl"
-
-
     // $ANTLR start "rule__XImportDeclaration__Group__0"
-    // InternalSignalDSL.g:5233:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
+    // InternalSignalDSL.g:5632:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
     public final void rule__XImportDeclaration__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5237:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
-            // InternalSignalDSL.g:5238:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            // InternalSignalDSL.g:5636:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalSignalDSL.g:5637:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
             {
-            pushFollow(FOLLOW_25);
+            pushFollow(FOLLOW_28);
             rule__XImportDeclaration__Group__0__Impl();
 
             state._fsp--;
@@ -18685,23 +19966,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__0__Impl"
-    // InternalSignalDSL.g:5245:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:5644:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5249:1: ( ( () ) )
-            // InternalSignalDSL.g:5250:1: ( () )
+            // InternalSignalDSL.g:5648:1: ( ( () ) )
+            // InternalSignalDSL.g:5649:1: ( () )
             {
-            // InternalSignalDSL.g:5250:1: ( () )
-            // InternalSignalDSL.g:5251:2: ()
+            // InternalSignalDSL.g:5649:1: ( () )
+            // InternalSignalDSL.g:5650:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
             }
-            // InternalSignalDSL.g:5252:2: ()
-            // InternalSignalDSL.g:5252:3: 
+            // InternalSignalDSL.g:5651:2: ()
+            // InternalSignalDSL.g:5651:3: 
             {
             }
 
@@ -18726,16 +20007,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1"
-    // InternalSignalDSL.g:5260:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
+    // InternalSignalDSL.g:5659:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
     public final void rule__XImportDeclaration__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5264:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
-            // InternalSignalDSL.g:5265:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            // InternalSignalDSL.g:5663:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalSignalDSL.g:5664:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
             {
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             rule__XImportDeclaration__Group__1__Impl();
 
             state._fsp--;
@@ -18764,17 +20045,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1__Impl"
-    // InternalSignalDSL.g:5272:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    // InternalSignalDSL.g:5671:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
     public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5276:1: ( ( 'import' ) )
-            // InternalSignalDSL.g:5277:1: ( 'import' )
+            // InternalSignalDSL.g:5675:1: ( ( 'import' ) )
+            // InternalSignalDSL.g:5676:1: ( 'import' )
             {
-            // InternalSignalDSL.g:5277:1: ( 'import' )
-            // InternalSignalDSL.g:5278:2: 'import'
+            // InternalSignalDSL.g:5676:1: ( 'import' )
+            // InternalSignalDSL.g:5677:2: 'import'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); 
@@ -18805,16 +20086,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2"
-    // InternalSignalDSL.g:5287:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
+    // InternalSignalDSL.g:5686:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
     public final void rule__XImportDeclaration__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5291:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
-            // InternalSignalDSL.g:5292:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            // InternalSignalDSL.g:5690:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalSignalDSL.g:5691:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_30);
             rule__XImportDeclaration__Group__2__Impl();
 
             state._fsp--;
@@ -18843,23 +20124,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2__Impl"
-    // InternalSignalDSL.g:5299:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    // InternalSignalDSL.g:5698:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
     public final void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5303:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
-            // InternalSignalDSL.g:5304:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:5702:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalSignalDSL.g:5703:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
             {
-            // InternalSignalDSL.g:5304:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
-            // InternalSignalDSL.g:5305:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:5703:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:5704:2: ( rule__XImportDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:5306:2: ( rule__XImportDeclaration__Alternatives_2 )
-            // InternalSignalDSL.g:5306:3: rule__XImportDeclaration__Alternatives_2
+            // InternalSignalDSL.g:5705:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:5705:3: rule__XImportDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2();
@@ -18894,14 +20175,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3"
-    // InternalSignalDSL.g:5314:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    // InternalSignalDSL.g:5713:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
     public final void rule__XImportDeclaration__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5318:1: ( rule__XImportDeclaration__Group__3__Impl )
-            // InternalSignalDSL.g:5319:2: rule__XImportDeclaration__Group__3__Impl
+            // InternalSignalDSL.g:5717:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalSignalDSL.g:5718:2: rule__XImportDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__3__Impl();
@@ -18927,33 +20208,33 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3__Impl"
-    // InternalSignalDSL.g:5325:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    // InternalSignalDSL.g:5724:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
     public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5329:1: ( ( ( ';' )? ) )
-            // InternalSignalDSL.g:5330:1: ( ( ';' )? )
+            // InternalSignalDSL.g:5728:1: ( ( ( ';' )? ) )
+            // InternalSignalDSL.g:5729:1: ( ( ';' )? )
             {
-            // InternalSignalDSL.g:5330:1: ( ( ';' )? )
-            // InternalSignalDSL.g:5331:2: ( ';' )?
+            // InternalSignalDSL.g:5729:1: ( ( ';' )? )
+            // InternalSignalDSL.g:5730:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
             }
-            // InternalSignalDSL.g:5332:2: ( ';' )?
-            int alt56=2;
-            int LA56_0 = input.LA(1);
+            // InternalSignalDSL.g:5731:2: ( ';' )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
 
-            if ( (LA56_0==78) ) {
-                alt56=1;
+            if ( (LA59_0==76) ) {
+                alt59=1;
             }
-            switch (alt56) {
+            switch (alt59) {
                 case 1 :
-                    // InternalSignalDSL.g:5332:3: ';'
+                    // InternalSignalDSL.g:5731:3: ';'
                     {
-                    match(input,78,FOLLOW_2); if (state.failed) return ;
+                    match(input,76,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -18985,16 +20266,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0"
-    // InternalSignalDSL.g:5341:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
+    // InternalSignalDSL.g:5740:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
     public final void rule__XImportDeclaration__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5345:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
-            // InternalSignalDSL.g:5346:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            // InternalSignalDSL.g:5744:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalSignalDSL.g:5745:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_31);
             rule__XImportDeclaration__Group_2_0__0__Impl();
 
             state._fsp--;
@@ -19023,23 +20304,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:5353:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
+    // InternalSignalDSL.g:5752:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5357:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
-            // InternalSignalDSL.g:5358:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:5756:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalSignalDSL.g:5757:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
             {
-            // InternalSignalDSL.g:5358:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
-            // InternalSignalDSL.g:5359:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalSignalDSL.g:5757:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:5758:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
             }
-            // InternalSignalDSL.g:5360:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
-            // InternalSignalDSL.g:5360:3: rule__XImportDeclaration__StaticAssignment_2_0_0
+            // InternalSignalDSL.g:5759:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalSignalDSL.g:5759:3: rule__XImportDeclaration__StaticAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__StaticAssignment_2_0_0();
@@ -19074,16 +20355,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1"
-    // InternalSignalDSL.g:5368:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
+    // InternalSignalDSL.g:5767:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
     public final void rule__XImportDeclaration__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5372:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
-            // InternalSignalDSL.g:5373:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            // InternalSignalDSL.g:5771:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalSignalDSL.g:5772:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
             {
-            pushFollow(FOLLOW_28);
+            pushFollow(FOLLOW_31);
             rule__XImportDeclaration__Group_2_0__1__Impl();
 
             state._fsp--;
@@ -19112,31 +20393,31 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1__Impl"
-    // InternalSignalDSL.g:5380:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
+    // InternalSignalDSL.g:5779:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
     public final void rule__XImportDeclaration__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5384:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
-            // InternalSignalDSL.g:5385:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalSignalDSL.g:5783:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalSignalDSL.g:5784:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
             {
-            // InternalSignalDSL.g:5385:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
-            // InternalSignalDSL.g:5386:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            // InternalSignalDSL.g:5784:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalSignalDSL.g:5785:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
             }
-            // InternalSignalDSL.g:5387:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
-            int alt57=2;
-            int LA57_0 = input.LA(1);
+            // InternalSignalDSL.g:5786:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
 
-            if ( (LA57_0==48) ) {
-                alt57=1;
+            if ( (LA60_0==48) ) {
+                alt60=1;
             }
-            switch (alt57) {
+            switch (alt60) {
                 case 1 :
-                    // InternalSignalDSL.g:5387:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
+                    // InternalSignalDSL.g:5786:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ExtensionAssignment_2_0_1();
@@ -19174,16 +20455,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2"
-    // InternalSignalDSL.g:5395:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
+    // InternalSignalDSL.g:5794:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
     public final void rule__XImportDeclaration__Group_2_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5399:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
-            // InternalSignalDSL.g:5400:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            // InternalSignalDSL.g:5798:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalSignalDSL.g:5799:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
             {
-            pushFollow(FOLLOW_29);
+            pushFollow(FOLLOW_32);
             rule__XImportDeclaration__Group_2_0__2__Impl();
 
             state._fsp--;
@@ -19212,23 +20493,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2__Impl"
-    // InternalSignalDSL.g:5407:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
+    // InternalSignalDSL.g:5806:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5411:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
-            // InternalSignalDSL.g:5412:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalSignalDSL.g:5810:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalSignalDSL.g:5811:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
             {
-            // InternalSignalDSL.g:5412:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
-            // InternalSignalDSL.g:5413:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalSignalDSL.g:5811:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalSignalDSL.g:5812:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
             }
-            // InternalSignalDSL.g:5414:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
-            // InternalSignalDSL.g:5414:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
+            // InternalSignalDSL.g:5813:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalSignalDSL.g:5813:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedTypeAssignment_2_0_2();
@@ -19263,14 +20544,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3"
-    // InternalSignalDSL.g:5422:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
+    // InternalSignalDSL.g:5821:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
     public final void rule__XImportDeclaration__Group_2_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5426:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
-            // InternalSignalDSL.g:5427:2: rule__XImportDeclaration__Group_2_0__3__Impl
+            // InternalSignalDSL.g:5825:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalSignalDSL.g:5826:2: rule__XImportDeclaration__Group_2_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_0__3__Impl();
@@ -19296,23 +20577,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3__Impl"
-    // InternalSignalDSL.g:5433:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
+    // InternalSignalDSL.g:5832:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5437:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
-            // InternalSignalDSL.g:5438:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalSignalDSL.g:5836:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalSignalDSL.g:5837:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
             {
-            // InternalSignalDSL.g:5438:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
-            // InternalSignalDSL.g:5439:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalSignalDSL.g:5837:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalSignalDSL.g:5838:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
             }
-            // InternalSignalDSL.g:5440:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
-            // InternalSignalDSL.g:5440:3: rule__XImportDeclaration__Alternatives_2_0_3
+            // InternalSignalDSL.g:5839:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalSignalDSL.g:5839:3: rule__XImportDeclaration__Alternatives_2_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2_0_3();
@@ -19347,14 +20628,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0"
-    // InternalSignalDSL.g:5449:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
+    // InternalSignalDSL.g:5848:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
     public final void rule__XImportDeclaration__Group_2_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5453:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
-            // InternalSignalDSL.g:5454:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
+            // InternalSignalDSL.g:5852:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalSignalDSL.g:5853:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
             {
             pushFollow(FOLLOW_6);
             rule__XImportDeclaration__Group_2_3__0__Impl();
@@ -19385,23 +20666,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0__Impl"
-    // InternalSignalDSL.g:5461:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
+    // InternalSignalDSL.g:5860:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
     public final void rule__XImportDeclaration__Group_2_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5465:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
-            // InternalSignalDSL.g:5466:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalSignalDSL.g:5864:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalSignalDSL.g:5865:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
             {
-            // InternalSignalDSL.g:5466:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
-            // InternalSignalDSL.g:5467:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalSignalDSL.g:5865:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalSignalDSL.g:5866:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
             }
-            // InternalSignalDSL.g:5468:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
-            // InternalSignalDSL.g:5468:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
+            // InternalSignalDSL.g:5867:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalSignalDSL.g:5867:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__FqnImportAssignment_2_3_0();
@@ -19436,14 +20717,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1"
-    // InternalSignalDSL.g:5476:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
+    // InternalSignalDSL.g:5875:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
     public final void rule__XImportDeclaration__Group_2_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5480:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
-            // InternalSignalDSL.g:5481:2: rule__XImportDeclaration__Group_2_3__1__Impl
+            // InternalSignalDSL.g:5879:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalSignalDSL.g:5880:2: rule__XImportDeclaration__Group_2_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_3__1__Impl();
@@ -19469,23 +20750,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1__Impl"
-    // InternalSignalDSL.g:5487:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
+    // InternalSignalDSL.g:5886:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
     public final void rule__XImportDeclaration__Group_2_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5491:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
-            // InternalSignalDSL.g:5492:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalSignalDSL.g:5890:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalSignalDSL.g:5891:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
             {
-            // InternalSignalDSL.g:5492:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
-            // InternalSignalDSL.g:5493:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalSignalDSL.g:5891:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalSignalDSL.g:5892:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
             }
-            // InternalSignalDSL.g:5494:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
-            // InternalSignalDSL.g:5494:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
+            // InternalSignalDSL.g:5893:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalSignalDSL.g:5893:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1();
@@ -19520,16 +20801,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0"
-    // InternalSignalDSL.g:5503:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
+    // InternalSignalDSL.g:5902:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
     public final void rule__XAnnotation__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5507:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
-            // InternalSignalDSL.g:5508:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            // InternalSignalDSL.g:5906:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalSignalDSL.g:5907:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
             {
-            pushFollow(FOLLOW_30);
+            pushFollow(FOLLOW_33);
             rule__XAnnotation__Group__0__Impl();
 
             state._fsp--;
@@ -19558,23 +20839,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0__Impl"
-    // InternalSignalDSL.g:5515:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:5914:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
     public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5519:1: ( ( () ) )
-            // InternalSignalDSL.g:5520:1: ( () )
+            // InternalSignalDSL.g:5918:1: ( ( () ) )
+            // InternalSignalDSL.g:5919:1: ( () )
             {
-            // InternalSignalDSL.g:5520:1: ( () )
-            // InternalSignalDSL.g:5521:2: ()
+            // InternalSignalDSL.g:5919:1: ( () )
+            // InternalSignalDSL.g:5920:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
             }
-            // InternalSignalDSL.g:5522:2: ()
-            // InternalSignalDSL.g:5522:3: 
+            // InternalSignalDSL.g:5921:2: ()
+            // InternalSignalDSL.g:5921:3: 
             {
             }
 
@@ -19599,14 +20880,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1"
-    // InternalSignalDSL.g:5530:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
+    // InternalSignalDSL.g:5929:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
     public final void rule__XAnnotation__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5534:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
-            // InternalSignalDSL.g:5535:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
+            // InternalSignalDSL.g:5933:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalSignalDSL.g:5934:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
             {
             pushFollow(FOLLOW_6);
             rule__XAnnotation__Group__1__Impl();
@@ -19637,22 +20918,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1__Impl"
-    // InternalSignalDSL.g:5542:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    // InternalSignalDSL.g:5941:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
     public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5546:1: ( ( '@' ) )
-            // InternalSignalDSL.g:5547:1: ( '@' )
+            // InternalSignalDSL.g:5945:1: ( ( '@' ) )
+            // InternalSignalDSL.g:5946:1: ( '@' )
             {
-            // InternalSignalDSL.g:5547:1: ( '@' )
-            // InternalSignalDSL.g:5548:2: '@'
+            // InternalSignalDSL.g:5946:1: ( '@' )
+            // InternalSignalDSL.g:5947:2: '@'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
-            match(input,79,FOLLOW_2); if (state.failed) return ;
+            match(input,77,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
@@ -19678,16 +20959,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2"
-    // InternalSignalDSL.g:5557:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
+    // InternalSignalDSL.g:5956:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
     public final void rule__XAnnotation__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5561:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
-            // InternalSignalDSL.g:5562:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            // InternalSignalDSL.g:5960:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalSignalDSL.g:5961:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XAnnotation__Group__2__Impl();
 
             state._fsp--;
@@ -19716,23 +20997,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2__Impl"
-    // InternalSignalDSL.g:5569:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    // InternalSignalDSL.g:5968:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
     public final void rule__XAnnotation__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5573:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
-            // InternalSignalDSL.g:5574:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalSignalDSL.g:5972:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalSignalDSL.g:5973:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
             {
-            // InternalSignalDSL.g:5574:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
-            // InternalSignalDSL.g:5575:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalSignalDSL.g:5973:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalSignalDSL.g:5974:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
             }
-            // InternalSignalDSL.g:5576:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
-            // InternalSignalDSL.g:5576:3: rule__XAnnotation__AnnotationTypeAssignment_2
+            // InternalSignalDSL.g:5975:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalSignalDSL.g:5975:3: rule__XAnnotation__AnnotationTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__AnnotationTypeAssignment_2();
@@ -19767,14 +21048,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3"
-    // InternalSignalDSL.g:5584:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    // InternalSignalDSL.g:5983:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
     public final void rule__XAnnotation__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5588:1: ( rule__XAnnotation__Group__3__Impl )
-            // InternalSignalDSL.g:5589:2: rule__XAnnotation__Group__3__Impl
+            // InternalSignalDSL.g:5987:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalSignalDSL.g:5988:2: rule__XAnnotation__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__3__Impl();
@@ -19800,31 +21081,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3__Impl"
-    // InternalSignalDSL.g:5595:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:5994:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
     public final void rule__XAnnotation__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5599:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
-            // InternalSignalDSL.g:5600:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalSignalDSL.g:5998:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalSignalDSL.g:5999:1: ( ( rule__XAnnotation__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:5600:1: ( ( rule__XAnnotation__Group_3__0 )? )
-            // InternalSignalDSL.g:5601:2: ( rule__XAnnotation__Group_3__0 )?
+            // InternalSignalDSL.g:5999:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalSignalDSL.g:6000:2: ( rule__XAnnotation__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:5602:2: ( rule__XAnnotation__Group_3__0 )?
-            int alt58=2;
-            int LA58_0 = input.LA(1);
+            // InternalSignalDSL.g:6001:2: ( rule__XAnnotation__Group_3__0 )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
 
-            if ( (LA58_0==80) ) {
-                alt58=1;
+            if ( (LA61_0==78) ) {
+                alt61=1;
             }
-            switch (alt58) {
+            switch (alt61) {
                 case 1 :
-                    // InternalSignalDSL.g:5602:3: rule__XAnnotation__Group_3__0
+                    // InternalSignalDSL.g:6001:3: rule__XAnnotation__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3__0();
@@ -19862,16 +21143,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0"
-    // InternalSignalDSL.g:5611:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
+    // InternalSignalDSL.g:6010:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
     public final void rule__XAnnotation__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5615:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
-            // InternalSignalDSL.g:5616:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            // InternalSignalDSL.g:6014:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalSignalDSL.g:6015:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_35);
             rule__XAnnotation__Group_3__0__Impl();
 
             state._fsp--;
@@ -19900,25 +21181,25 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0__Impl"
-    // InternalSignalDSL.g:5623:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:6022:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
     public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5627:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:5628:1: ( ( '(' ) )
+            // InternalSignalDSL.g:6026:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:6027:1: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:5628:1: ( ( '(' ) )
-            // InternalSignalDSL.g:5629:2: ( '(' )
+            // InternalSignalDSL.g:6027:1: ( ( '(' ) )
+            // InternalSignalDSL.g:6028:2: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
             }
-            // InternalSignalDSL.g:5630:2: ( '(' )
-            // InternalSignalDSL.g:5630:3: '('
+            // InternalSignalDSL.g:6029:2: ( '(' )
+            // InternalSignalDSL.g:6029:3: '('
             {
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -19947,16 +21228,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1"
-    // InternalSignalDSL.g:5638:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
+    // InternalSignalDSL.g:6037:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
     public final void rule__XAnnotation__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5642:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
-            // InternalSignalDSL.g:5643:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            // InternalSignalDSL.g:6041:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalSignalDSL.g:6042:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_35);
             rule__XAnnotation__Group_3__1__Impl();
 
             state._fsp--;
@@ -19985,31 +21266,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1__Impl"
-    // InternalSignalDSL.g:5650:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
+    // InternalSignalDSL.g:6049:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
     public final void rule__XAnnotation__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5654:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
-            // InternalSignalDSL.g:5655:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:6053:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalSignalDSL.g:6054:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
             {
-            // InternalSignalDSL.g:5655:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
-            // InternalSignalDSL.g:5656:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            // InternalSignalDSL.g:6054:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:6055:2: ( rule__XAnnotation__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
             }
-            // InternalSignalDSL.g:5657:2: ( rule__XAnnotation__Alternatives_3_1 )?
-            int alt59=2;
-            int LA59_0 = input.LA(1);
+            // InternalSignalDSL.g:6056:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            if ( ((LA59_0>=RULE_ID && LA59_0<=RULE_STRING)||LA59_0==27||(LA59_0>=34 && LA59_0<=35)||LA59_0==40||(LA59_0>=45 && LA59_0<=50)||LA59_0==63||(LA59_0>=79 && LA59_0<=80)||(LA59_0>=84 && LA59_0<=85)||LA59_0==88||LA59_0==90||(LA59_0>=93 && LA59_0<=101)||LA59_0==103||LA59_0==112) ) {
-                alt59=1;
+            if ( ((LA62_0>=RULE_ID && LA62_0<=RULE_STRING)||LA62_0==27||(LA62_0>=34 && LA62_0<=35)||LA62_0==40||(LA62_0>=45 && LA62_0<=50)||LA62_0==62||(LA62_0>=77 && LA62_0<=78)||(LA62_0>=82 && LA62_0<=83)||LA62_0==86||LA62_0==88||(LA62_0>=91 && LA62_0<=99)||LA62_0==101||LA62_0==111) ) {
+                alt62=1;
             }
-            switch (alt59) {
+            switch (alt62) {
                 case 1 :
-                    // InternalSignalDSL.g:5657:3: rule__XAnnotation__Alternatives_3_1
+                    // InternalSignalDSL.g:6056:3: rule__XAnnotation__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Alternatives_3_1();
@@ -20047,14 +21328,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2"
-    // InternalSignalDSL.g:5665:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
+    // InternalSignalDSL.g:6064:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
     public final void rule__XAnnotation__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5669:1: ( rule__XAnnotation__Group_3__2__Impl )
-            // InternalSignalDSL.g:5670:2: rule__XAnnotation__Group_3__2__Impl
+            // InternalSignalDSL.g:6068:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalSignalDSL.g:6069:2: rule__XAnnotation__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3__2__Impl();
@@ -20080,22 +21361,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2__Impl"
-    // InternalSignalDSL.g:5676:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:6075:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5680:1: ( ( ')' ) )
-            // InternalSignalDSL.g:5681:1: ( ')' )
+            // InternalSignalDSL.g:6079:1: ( ( ')' ) )
+            // InternalSignalDSL.g:6080:1: ( ')' )
             {
-            // InternalSignalDSL.g:5681:1: ( ')' )
-            // InternalSignalDSL.g:5682:2: ')'
+            // InternalSignalDSL.g:6080:1: ( ')' )
+            // InternalSignalDSL.g:6081:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -20121,16 +21402,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0"
-    // InternalSignalDSL.g:5692:1: rule__XAnnotation__Group_3_1_0__0 : rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 ;
+    // InternalSignalDSL.g:6091:1: rule__XAnnotation__Group_3_1_0__0 : rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 ;
     public final void rule__XAnnotation__Group_3_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5696:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
-            // InternalSignalDSL.g:5697:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            // InternalSignalDSL.g:6095:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalSignalDSL.g:6096:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XAnnotation__Group_3_1_0__0__Impl();
 
             state._fsp--;
@@ -20159,23 +21440,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0__Impl"
-    // InternalSignalDSL.g:5704:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
+    // InternalSignalDSL.g:6103:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
     public final void rule__XAnnotation__Group_3_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5708:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
-            // InternalSignalDSL.g:5709:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalSignalDSL.g:6107:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalSignalDSL.g:6108:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
             {
-            // InternalSignalDSL.g:5709:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
-            // InternalSignalDSL.g:5710:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalSignalDSL.g:6108:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalSignalDSL.g:6109:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
             }
-            // InternalSignalDSL.g:5711:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
-            // InternalSignalDSL.g:5711:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
+            // InternalSignalDSL.g:6110:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalSignalDSL.g:6110:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0();
@@ -20210,14 +21491,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1"
-    // InternalSignalDSL.g:5719:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
+    // InternalSignalDSL.g:6118:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
     public final void rule__XAnnotation__Group_3_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5723:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
-            // InternalSignalDSL.g:5724:2: rule__XAnnotation__Group_3_1_0__1__Impl
+            // InternalSignalDSL.g:6122:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalSignalDSL.g:6123:2: rule__XAnnotation__Group_3_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0__1__Impl();
@@ -20243,37 +21524,37 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1__Impl"
-    // InternalSignalDSL.g:5730:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
+    // InternalSignalDSL.g:6129:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
     public final void rule__XAnnotation__Group_3_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5734:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
-            // InternalSignalDSL.g:5735:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalSignalDSL.g:6133:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalSignalDSL.g:6134:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
             {
-            // InternalSignalDSL.g:5735:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
-            // InternalSignalDSL.g:5736:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            // InternalSignalDSL.g:6134:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalSignalDSL.g:6135:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
             }
-            // InternalSignalDSL.g:5737:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
-            loop60:
+            // InternalSignalDSL.g:6136:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            loop63:
             do {
-                int alt60=2;
-                int LA60_0 = input.LA(1);
+                int alt63=2;
+                int LA63_0 = input.LA(1);
 
-                if ( (LA60_0==82) ) {
-                    alt60=1;
+                if ( (LA63_0==80) ) {
+                    alt63=1;
                 }
 
 
-                switch (alt60) {
+                switch (alt63) {
             	case 1 :
-            	    // InternalSignalDSL.g:5737:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    // InternalSignalDSL.g:6136:3: rule__XAnnotation__Group_3_1_0_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XAnnotation__Group_3_1_0_1__0();
 
             	    state._fsp--;
@@ -20283,7 +21564,7 @@
             	    break;
 
             	default :
-            	    break loop60;
+            	    break loop63;
                 }
             } while (true);
 
@@ -20312,14 +21593,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0"
-    // InternalSignalDSL.g:5746:1: rule__XAnnotation__Group_3_1_0_1__0 : rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 ;
+    // InternalSignalDSL.g:6145:1: rule__XAnnotation__Group_3_1_0_1__0 : rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 ;
     public final void rule__XAnnotation__Group_3_1_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5750:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
-            // InternalSignalDSL.g:5751:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
+            // InternalSignalDSL.g:6149:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalSignalDSL.g:6150:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
             {
             pushFollow(FOLLOW_6);
             rule__XAnnotation__Group_3_1_0_1__0__Impl();
@@ -20350,22 +21631,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0__Impl"
-    // InternalSignalDSL.g:5758:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:6157:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotation__Group_3_1_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5762:1: ( ( ',' ) )
-            // InternalSignalDSL.g:5763:1: ( ',' )
+            // InternalSignalDSL.g:6161:1: ( ( ',' ) )
+            // InternalSignalDSL.g:6162:1: ( ',' )
             {
-            // InternalSignalDSL.g:5763:1: ( ',' )
-            // InternalSignalDSL.g:5764:2: ','
+            // InternalSignalDSL.g:6162:1: ( ',' )
+            // InternalSignalDSL.g:6163:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
@@ -20391,14 +21672,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1"
-    // InternalSignalDSL.g:5773:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
+    // InternalSignalDSL.g:6172:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
     public final void rule__XAnnotation__Group_3_1_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5777:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
-            // InternalSignalDSL.g:5778:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
+            // InternalSignalDSL.g:6176:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalSignalDSL.g:6177:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0_1__1__Impl();
@@ -20424,23 +21705,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1__Impl"
-    // InternalSignalDSL.g:5784:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
+    // InternalSignalDSL.g:6183:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
     public final void rule__XAnnotation__Group_3_1_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5788:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
-            // InternalSignalDSL.g:5789:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalSignalDSL.g:6187:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalSignalDSL.g:6188:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
             {
-            // InternalSignalDSL.g:5789:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
-            // InternalSignalDSL.g:5790:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalSignalDSL.g:6188:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalSignalDSL.g:6189:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
             }
-            // InternalSignalDSL.g:5791:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
-            // InternalSignalDSL.g:5791:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
+            // InternalSignalDSL.g:6190:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalSignalDSL.g:6190:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1();
@@ -20475,16 +21756,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0"
-    // InternalSignalDSL.g:5800:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
+    // InternalSignalDSL.g:6199:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
     public final void rule__XAnnotationElementValuePair__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5804:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
-            // InternalSignalDSL.g:5805:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            // InternalSignalDSL.g:6203:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalSignalDSL.g:6204:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAnnotationElementValuePair__Group__0__Impl();
 
             state._fsp--;
@@ -20513,23 +21794,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0__Impl"
-    // InternalSignalDSL.g:5812:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:6211:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5816:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
-            // InternalSignalDSL.g:5817:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalSignalDSL.g:6215:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalSignalDSL.g:6216:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:5817:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
-            // InternalSignalDSL.g:5818:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalSignalDSL.g:6216:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalSignalDSL.g:6217:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:5819:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
-            // InternalSignalDSL.g:5819:3: rule__XAnnotationElementValuePair__Group_0__0
+            // InternalSignalDSL.g:6218:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalSignalDSL.g:6218:3: rule__XAnnotationElementValuePair__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0();
@@ -20564,14 +21845,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1"
-    // InternalSignalDSL.g:5827:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    // InternalSignalDSL.g:6226:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
     public final void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5831:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
-            // InternalSignalDSL.g:5832:2: rule__XAnnotationElementValuePair__Group__1__Impl
+            // InternalSignalDSL.g:6230:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalSignalDSL.g:6231:2: rule__XAnnotationElementValuePair__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__1__Impl();
@@ -20597,23 +21878,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1__Impl"
-    // InternalSignalDSL.g:5838:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    // InternalSignalDSL.g:6237:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5842:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
-            // InternalSignalDSL.g:5843:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:6241:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalSignalDSL.g:6242:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
             {
-            // InternalSignalDSL.g:5843:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
-            // InternalSignalDSL.g:5844:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalSignalDSL.g:6242:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:6243:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
             }
-            // InternalSignalDSL.g:5845:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
-            // InternalSignalDSL.g:5845:3: rule__XAnnotationElementValuePair__ValueAssignment_1
+            // InternalSignalDSL.g:6244:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalSignalDSL.g:6244:3: rule__XAnnotationElementValuePair__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ValueAssignment_1();
@@ -20648,14 +21929,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0"
-    // InternalSignalDSL.g:5854:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
+    // InternalSignalDSL.g:6253:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
     public final void rule__XAnnotationElementValuePair__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5858:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
-            // InternalSignalDSL.g:5859:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
+            // InternalSignalDSL.g:6257:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalSignalDSL.g:6258:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0__Impl();
@@ -20681,23 +21962,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0__Impl"
-    // InternalSignalDSL.g:5865:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6264:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5869:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:5870:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6268:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:6269:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:5870:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
-            // InternalSignalDSL.g:5871:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalSignalDSL.g:6269:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6270:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:5872:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
-            // InternalSignalDSL.g:5872:3: rule__XAnnotationElementValuePair__Group_0_0__0
+            // InternalSignalDSL.g:6271:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalSignalDSL.g:6271:3: rule__XAnnotationElementValuePair__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__0();
@@ -20732,16 +22013,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0"
-    // InternalSignalDSL.g:5881:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
+    // InternalSignalDSL.g:6280:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5885:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
-            // InternalSignalDSL.g:5886:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            // InternalSignalDSL.g:6284:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalSignalDSL.g:6285:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_39);
             rule__XAnnotationElementValuePair__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -20770,23 +22051,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:5893:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
+    // InternalSignalDSL.g:6292:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5897:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
-            // InternalSignalDSL.g:5898:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalSignalDSL.g:6296:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalSignalDSL.g:6297:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
             {
-            // InternalSignalDSL.g:5898:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
-            // InternalSignalDSL.g:5899:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalSignalDSL.g:6297:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalSignalDSL.g:6298:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
             }
-            // InternalSignalDSL.g:5900:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
-            // InternalSignalDSL.g:5900:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
+            // InternalSignalDSL.g:6299:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalSignalDSL.g:6299:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ElementAssignment_0_0_0();
@@ -20821,14 +22102,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1"
-    // InternalSignalDSL.g:5908:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
+    // InternalSignalDSL.g:6307:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5912:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
-            // InternalSignalDSL.g:5913:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+            // InternalSignalDSL.g:6311:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalSignalDSL.g:6312:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__1__Impl();
@@ -20854,17 +22135,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:5919:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:6318:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5923:1: ( ( '=' ) )
-            // InternalSignalDSL.g:5924:1: ( '=' )
+            // InternalSignalDSL.g:6322:1: ( ( '=' ) )
+            // InternalSignalDSL.g:6323:1: ( '=' )
             {
-            // InternalSignalDSL.g:5924:1: ( '=' )
-            // InternalSignalDSL.g:5925:2: '='
+            // InternalSignalDSL.g:6323:1: ( '=' )
+            // InternalSignalDSL.g:6324:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); 
@@ -20895,16 +22176,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0"
-    // InternalSignalDSL.g:5935:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
+    // InternalSignalDSL.g:6334:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5939:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
-            // InternalSignalDSL.g:5940:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            // InternalSignalDSL.g:6338:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalSignalDSL.g:6339:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_40);
             rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl();
 
             state._fsp--;
@@ -20933,23 +22214,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl"
-    // InternalSignalDSL.g:5947:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6346:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5951:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:5952:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6350:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:6351:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:5952:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
-            // InternalSignalDSL.g:5953:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalSignalDSL.g:6351:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6352:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:5954:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
-            // InternalSignalDSL.g:5954:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+            // InternalSignalDSL.g:6353:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalSignalDSL.g:6353:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0();
@@ -20984,16 +22265,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1"
-    // InternalSignalDSL.g:5962:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
+    // InternalSignalDSL.g:6361:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5966:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
-            // InternalSignalDSL.g:5967:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            // InternalSignalDSL.g:6365:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalSignalDSL.g:6366:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_40);
             rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl();
 
             state._fsp--;
@@ -21022,31 +22303,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl"
-    // InternalSignalDSL.g:5974:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
+    // InternalSignalDSL.g:6373:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5978:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
-            // InternalSignalDSL.g:5979:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalSignalDSL.g:6377:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalSignalDSL.g:6378:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
             {
-            // InternalSignalDSL.g:5979:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
-            // InternalSignalDSL.g:5980:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            // InternalSignalDSL.g:6378:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalSignalDSL.g:6379:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:5981:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
-            int alt61=2;
-            int LA61_0 = input.LA(1);
+            // InternalSignalDSL.g:6380:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
 
-            if ( ((LA61_0>=RULE_ID && LA61_0<=RULE_STRING)||LA61_0==27||(LA61_0>=34 && LA61_0<=35)||LA61_0==40||(LA61_0>=45 && LA61_0<=50)||LA61_0==63||(LA61_0>=79 && LA61_0<=80)||(LA61_0>=84 && LA61_0<=85)||LA61_0==88||LA61_0==90||(LA61_0>=93 && LA61_0<=101)||LA61_0==103||LA61_0==112) ) {
-                alt61=1;
+            if ( ((LA64_0>=RULE_ID && LA64_0<=RULE_STRING)||LA64_0==27||(LA64_0>=34 && LA64_0<=35)||LA64_0==40||(LA64_0>=45 && LA64_0<=50)||LA64_0==62||(LA64_0>=77 && LA64_0<=78)||(LA64_0>=82 && LA64_0<=83)||LA64_0==86||LA64_0==88||(LA64_0>=91 && LA64_0<=99)||LA64_0==101||LA64_0==111) ) {
+                alt64=1;
             }
-            switch (alt61) {
+            switch (alt64) {
                 case 1 :
-                    // InternalSignalDSL.g:5981:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+                    // InternalSignalDSL.g:6380:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0_1__0();
@@ -21084,14 +22365,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2"
-    // InternalSignalDSL.g:5989:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
+    // InternalSignalDSL.g:6388:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5993:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
-            // InternalSignalDSL.g:5994:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+            // InternalSignalDSL.g:6392:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalSignalDSL.g:6393:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl();
@@ -21117,22 +22398,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl"
-    // InternalSignalDSL.g:6000:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:6399:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6004:1: ( ( ']' ) )
-            // InternalSignalDSL.g:6005:1: ( ']' )
+            // InternalSignalDSL.g:6403:1: ( ( ']' ) )
+            // InternalSignalDSL.g:6404:1: ( ']' )
             {
-            // InternalSignalDSL.g:6005:1: ( ']' )
-            // InternalSignalDSL.g:6006:2: ']'
+            // InternalSignalDSL.g:6404:1: ( ']' )
+            // InternalSignalDSL.g:6405:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,83,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -21158,14 +22439,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0"
-    // InternalSignalDSL.g:6016:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
+    // InternalSignalDSL.g:6415:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6020:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
-            // InternalSignalDSL.g:6021:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+            // InternalSignalDSL.g:6419:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalSignalDSL.g:6420:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl();
@@ -21191,23 +22472,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:6027:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6426:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6031:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:6032:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6430:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:6431:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:6032:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
-            // InternalSignalDSL.g:6033:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6431:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6432:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
             }
-            // InternalSignalDSL.g:6034:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
-            // InternalSignalDSL.g:6034:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+            // InternalSignalDSL.g:6433:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6433:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0();
@@ -21242,16 +22523,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0"
-    // InternalSignalDSL.g:6043:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 ;
+    // InternalSignalDSL.g:6442:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6047:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
-            // InternalSignalDSL.g:6048:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            // InternalSignalDSL.g:6446:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalSignalDSL.g:6447:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
             {
-            pushFollow(FOLLOW_38);
+            pushFollow(FOLLOW_41);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl();
 
             state._fsp--;
@@ -21280,23 +22561,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl"
-    // InternalSignalDSL.g:6055:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6454:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6059:1: ( ( () ) )
-            // InternalSignalDSL.g:6060:1: ( () )
+            // InternalSignalDSL.g:6458:1: ( ( () ) )
+            // InternalSignalDSL.g:6459:1: ( () )
             {
-            // InternalSignalDSL.g:6060:1: ( () )
-            // InternalSignalDSL.g:6061:2: ()
+            // InternalSignalDSL.g:6459:1: ( () )
+            // InternalSignalDSL.g:6460:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:6062:2: ()
-            // InternalSignalDSL.g:6062:3: 
+            // InternalSignalDSL.g:6461:2: ()
+            // InternalSignalDSL.g:6461:3: 
             {
             }
 
@@ -21321,16 +22602,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1"
-    // InternalSignalDSL.g:6070:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 ;
+    // InternalSignalDSL.g:6469:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6074:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
-            // InternalSignalDSL.g:6075:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            // InternalSignalDSL.g:6473:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalSignalDSL.g:6474:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_42);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl();
 
             state._fsp--;
@@ -21359,22 +22640,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl"
-    // InternalSignalDSL.g:6082:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:6481:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6086:1: ( ( '#' ) )
-            // InternalSignalDSL.g:6087:1: ( '#' )
+            // InternalSignalDSL.g:6485:1: ( ( '#' ) )
+            // InternalSignalDSL.g:6486:1: ( '#' )
             {
-            // InternalSignalDSL.g:6087:1: ( '#' )
-            // InternalSignalDSL.g:6088:2: '#'
+            // InternalSignalDSL.g:6486:1: ( '#' )
+            // InternalSignalDSL.g:6487:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,84,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -21400,14 +22681,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2"
-    // InternalSignalDSL.g:6097:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
+    // InternalSignalDSL.g:6496:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6101:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
-            // InternalSignalDSL.g:6102:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+            // InternalSignalDSL.g:6500:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalSignalDSL.g:6501:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl();
@@ -21433,22 +22714,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl"
-    // InternalSignalDSL.g:6108:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:6507:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6112:1: ( ( '[' ) )
-            // InternalSignalDSL.g:6113:1: ( '[' )
+            // InternalSignalDSL.g:6511:1: ( ( '[' ) )
+            // InternalSignalDSL.g:6512:1: ( '[' )
             {
-            // InternalSignalDSL.g:6113:1: ( '[' )
-            // InternalSignalDSL.g:6114:2: '['
+            // InternalSignalDSL.g:6512:1: ( '[' )
+            // InternalSignalDSL.g:6513:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -21474,16 +22755,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0"
-    // InternalSignalDSL.g:6124:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
+    // InternalSignalDSL.g:6523:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6128:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
-            // InternalSignalDSL.g:6129:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            // InternalSignalDSL.g:6527:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalSignalDSL.g:6528:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl();
 
             state._fsp--;
@@ -21512,23 +22793,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:6136:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
+    // InternalSignalDSL.g:6535:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6140:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
-            // InternalSignalDSL.g:6141:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:6539:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalSignalDSL.g:6540:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
             {
-            // InternalSignalDSL.g:6141:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
-            // InternalSignalDSL.g:6142:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:6540:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:6541:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalSignalDSL.g:6143:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
-            // InternalSignalDSL.g:6143:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
+            // InternalSignalDSL.g:6542:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:6542:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0();
@@ -21563,14 +22844,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1"
-    // InternalSignalDSL.g:6151:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
+    // InternalSignalDSL.g:6550:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6155:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
-            // InternalSignalDSL.g:6156:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+            // InternalSignalDSL.g:6554:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalSignalDSL.g:6555:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl();
@@ -21596,37 +22877,37 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl"
-    // InternalSignalDSL.g:6162:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:6561:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6166:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:6167:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:6565:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:6566:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:6167:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
-            // InternalSignalDSL.g:6168:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            // InternalSignalDSL.g:6566:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:6567:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
             }
-            // InternalSignalDSL.g:6169:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
-            loop62:
+            // InternalSignalDSL.g:6568:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            loop65:
             do {
-                int alt62=2;
-                int LA62_0 = input.LA(1);
+                int alt65=2;
+                int LA65_0 = input.LA(1);
 
-                if ( (LA62_0==82) ) {
-                    alt62=1;
+                if ( (LA65_0==80) ) {
+                    alt65=1;
                 }
 
 
-                switch (alt62) {
+                switch (alt65) {
             	case 1 :
-            	    // InternalSignalDSL.g:6169:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    // InternalSignalDSL.g:6568:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
 
             	    state._fsp--;
@@ -21636,7 +22917,7 @@
             	    break;
 
             	default :
-            	    break loop62;
+            	    break loop65;
                 }
             } while (true);
 
@@ -21665,16 +22946,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0"
-    // InternalSignalDSL.g:6178:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 ;
+    // InternalSignalDSL.g:6577:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6182:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
-            // InternalSignalDSL.g:6183:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            // InternalSignalDSL.g:6581:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalSignalDSL.g:6582:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl();
 
             state._fsp--;
@@ -21703,22 +22984,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl"
-    // InternalSignalDSL.g:6190:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:6589:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6194:1: ( ( ',' ) )
-            // InternalSignalDSL.g:6195:1: ( ',' )
+            // InternalSignalDSL.g:6593:1: ( ( ',' ) )
+            // InternalSignalDSL.g:6594:1: ( ',' )
             {
-            // InternalSignalDSL.g:6195:1: ( ',' )
-            // InternalSignalDSL.g:6196:2: ','
+            // InternalSignalDSL.g:6594:1: ( ',' )
+            // InternalSignalDSL.g:6595:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -21744,14 +23025,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1"
-    // InternalSignalDSL.g:6205:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:6604:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6209:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
-            // InternalSignalDSL.g:6210:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+            // InternalSignalDSL.g:6608:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalSignalDSL.g:6609:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl();
@@ -21777,23 +23058,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl"
-    // InternalSignalDSL.g:6216:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:6615:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6220:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:6221:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:6619:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:6620:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:6221:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
-            // InternalSignalDSL.g:6222:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:6620:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:6621:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:6223:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
-            // InternalSignalDSL.g:6223:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
+            // InternalSignalDSL.g:6622:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:6622:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1();
@@ -21828,16 +23109,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0"
-    // InternalSignalDSL.g:6232:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
+    // InternalSignalDSL.g:6631:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6236:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
-            // InternalSignalDSL.g:6237:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            // InternalSignalDSL.g:6635:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalSignalDSL.g:6636:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl();
 
             state._fsp--;
@@ -21866,17 +23147,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl"
-    // InternalSignalDSL.g:6244:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:6643:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6248:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:6249:1: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:6647:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:6648:1: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:6249:1: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:6250:2: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:6648:1: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:6649:2: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
@@ -21911,14 +23192,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1"
-    // InternalSignalDSL.g:6259:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
+    // InternalSignalDSL.g:6658:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6263:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
-            // InternalSignalDSL.g:6264:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+            // InternalSignalDSL.g:6662:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalSignalDSL.g:6663:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl();
@@ -21944,31 +23225,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl"
-    // InternalSignalDSL.g:6270:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
+    // InternalSignalDSL.g:6669:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6274:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
-            // InternalSignalDSL.g:6275:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalSignalDSL.g:6673:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalSignalDSL.g:6674:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
             {
-            // InternalSignalDSL.g:6275:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
-            // InternalSignalDSL.g:6276:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            // InternalSignalDSL.g:6674:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalSignalDSL.g:6675:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
             }
-            // InternalSignalDSL.g:6277:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
-            int alt63=2;
-            int LA63_0 = input.LA(1);
+            // InternalSignalDSL.g:6676:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            int alt66=2;
+            int LA66_0 = input.LA(1);
 
-            if ( (LA63_0==82) ) {
-                alt63=1;
+            if ( (LA66_0==80) ) {
+                alt66=1;
             }
-            switch (alt63) {
+            switch (alt66) {
                 case 1 :
-                    // InternalSignalDSL.g:6277:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+                    // InternalSignalDSL.g:6676:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1_1__0();
@@ -22006,16 +23287,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0"
-    // InternalSignalDSL.g:6286:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
+    // InternalSignalDSL.g:6685:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6290:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
-            // InternalSignalDSL.g:6291:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            // InternalSignalDSL.g:6689:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalSignalDSL.g:6690:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -22044,23 +23325,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:6298:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6697:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6302:1: ( ( () ) )
-            // InternalSignalDSL.g:6303:1: ( () )
+            // InternalSignalDSL.g:6701:1: ( ( () ) )
+            // InternalSignalDSL.g:6702:1: ( () )
             {
-            // InternalSignalDSL.g:6303:1: ( () )
-            // InternalSignalDSL.g:6304:2: ()
+            // InternalSignalDSL.g:6702:1: ( () )
+            // InternalSignalDSL.g:6703:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
             }
-            // InternalSignalDSL.g:6305:2: ()
-            // InternalSignalDSL.g:6305:3: 
+            // InternalSignalDSL.g:6704:2: ()
+            // InternalSignalDSL.g:6704:3: 
             {
             }
 
@@ -22085,14 +23366,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1"
-    // InternalSignalDSL.g:6313:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:6712:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6317:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:6318:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+            // InternalSignalDSL.g:6716:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:6717:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl();
@@ -22118,28 +23399,28 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:6324:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
+    // InternalSignalDSL.g:6723:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6328:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
-            // InternalSignalDSL.g:6329:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:6727:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalSignalDSL.g:6728:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
             {
-            // InternalSignalDSL.g:6329:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:6330:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalSignalDSL.g:6728:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:6729:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:6330:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
-            // InternalSignalDSL.g:6331:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalSignalDSL.g:6729:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalSignalDSL.g:6730:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalSignalDSL.g:6332:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
-            // InternalSignalDSL.g:6332:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            // InternalSignalDSL.g:6731:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalSignalDSL.g:6731:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             {
-            pushFollow(FOLLOW_34);
+            pushFollow(FOLLOW_37);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
 
             state._fsp--;
@@ -22153,28 +23434,28 @@
 
             }
 
-            // InternalSignalDSL.g:6335:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
-            // InternalSignalDSL.g:6336:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            // InternalSignalDSL.g:6734:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalSignalDSL.g:6735:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalSignalDSL.g:6337:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
-            loop64:
+            // InternalSignalDSL.g:6736:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            loop67:
             do {
-                int alt64=2;
-                int LA64_0 = input.LA(1);
+                int alt67=2;
+                int LA67_0 = input.LA(1);
 
-                if ( (LA64_0==82) ) {
-                    alt64=1;
+                if ( (LA67_0==80) ) {
+                    alt67=1;
                 }
 
 
-                switch (alt64) {
+                switch (alt67) {
             	case 1 :
-            	    // InternalSignalDSL.g:6337:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    // InternalSignalDSL.g:6736:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
 
             	    state._fsp--;
@@ -22184,7 +23465,7 @@
             	    break;
 
             	default :
-            	    break loop64;
+            	    break loop67;
                 }
             } while (true);
 
@@ -22216,16 +23497,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0"
-    // InternalSignalDSL.g:6347:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 ;
+    // InternalSignalDSL.g:6746:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6351:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
-            // InternalSignalDSL.g:6352:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            // InternalSignalDSL.g:6750:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalSignalDSL.g:6751:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl();
 
             state._fsp--;
@@ -22254,22 +23535,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl"
-    // InternalSignalDSL.g:6359:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:6758:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6363:1: ( ( ',' ) )
-            // InternalSignalDSL.g:6364:1: ( ',' )
+            // InternalSignalDSL.g:6762:1: ( ( ',' ) )
+            // InternalSignalDSL.g:6763:1: ( ',' )
             {
-            // InternalSignalDSL.g:6364:1: ( ',' )
-            // InternalSignalDSL.g:6365:2: ','
+            // InternalSignalDSL.g:6763:1: ( ',' )
+            // InternalSignalDSL.g:6764:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
@@ -22295,14 +23576,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1"
-    // InternalSignalDSL.g:6374:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:6773:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6378:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
-            // InternalSignalDSL.g:6379:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+            // InternalSignalDSL.g:6777:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalSignalDSL.g:6778:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl();
@@ -22328,23 +23609,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl"
-    // InternalSignalDSL.g:6385:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:6784:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6389:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:6390:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:6788:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:6789:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:6390:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
-            // InternalSignalDSL.g:6391:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:6789:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:6790:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:6392:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
-            // InternalSignalDSL.g:6392:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
+            // InternalSignalDSL.g:6791:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:6791:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1();
@@ -22379,16 +23660,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0"
-    // InternalSignalDSL.g:6401:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
+    // InternalSignalDSL.g:6800:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
     public final void rule__XAnnotationElementValue__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6405:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
-            // InternalSignalDSL.g:6406:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            // InternalSignalDSL.g:6804:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalSignalDSL.g:6805:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_40);
             rule__XAnnotationElementValue__Group_0__0__Impl();
 
             state._fsp--;
@@ -22417,23 +23698,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0__Impl"
-    // InternalSignalDSL.g:6413:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6812:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6417:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:6418:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6816:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:6817:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:6418:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
-            // InternalSignalDSL.g:6419:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalSignalDSL.g:6817:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6818:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:6420:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
-            // InternalSignalDSL.g:6420:3: rule__XAnnotationElementValue__Group_0_0__0
+            // InternalSignalDSL.g:6819:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalSignalDSL.g:6819:3: rule__XAnnotationElementValue__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0();
@@ -22468,16 +23749,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1"
-    // InternalSignalDSL.g:6428:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
+    // InternalSignalDSL.g:6827:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
     public final void rule__XAnnotationElementValue__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6432:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
-            // InternalSignalDSL.g:6433:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            // InternalSignalDSL.g:6831:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalSignalDSL.g:6832:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_40);
             rule__XAnnotationElementValue__Group_0__1__Impl();
 
             state._fsp--;
@@ -22506,31 +23787,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1__Impl"
-    // InternalSignalDSL.g:6440:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
+    // InternalSignalDSL.g:6839:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
     public final void rule__XAnnotationElementValue__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6444:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
-            // InternalSignalDSL.g:6445:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalSignalDSL.g:6843:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalSignalDSL.g:6844:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
             {
-            // InternalSignalDSL.g:6445:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
-            // InternalSignalDSL.g:6446:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            // InternalSignalDSL.g:6844:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalSignalDSL.g:6845:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:6447:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
-            int alt65=2;
-            int LA65_0 = input.LA(1);
+            // InternalSignalDSL.g:6846:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
 
-            if ( ((LA65_0>=RULE_ID && LA65_0<=RULE_STRING)||LA65_0==27||(LA65_0>=34 && LA65_0<=35)||LA65_0==40||(LA65_0>=45 && LA65_0<=50)||LA65_0==63||(LA65_0>=79 && LA65_0<=80)||(LA65_0>=84 && LA65_0<=85)||LA65_0==88||LA65_0==90||(LA65_0>=93 && LA65_0<=101)||LA65_0==103||LA65_0==112) ) {
-                alt65=1;
+            if ( ((LA68_0>=RULE_ID && LA68_0<=RULE_STRING)||LA68_0==27||(LA68_0>=34 && LA68_0<=35)||LA68_0==40||(LA68_0>=45 && LA68_0<=50)||LA68_0==62||(LA68_0>=77 && LA68_0<=78)||(LA68_0>=82 && LA68_0<=83)||LA68_0==86||LA68_0==88||(LA68_0>=91 && LA68_0<=99)||LA68_0==101||LA68_0==111) ) {
+                alt68=1;
             }
-            switch (alt65) {
+            switch (alt68) {
                 case 1 :
-                    // InternalSignalDSL.g:6447:3: rule__XAnnotationElementValue__Group_0_1__0
+                    // InternalSignalDSL.g:6846:3: rule__XAnnotationElementValue__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0_1__0();
@@ -22568,14 +23849,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2"
-    // InternalSignalDSL.g:6455:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
+    // InternalSignalDSL.g:6854:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
     public final void rule__XAnnotationElementValue__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6459:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
-            // InternalSignalDSL.g:6460:2: rule__XAnnotationElementValue__Group_0__2__Impl
+            // InternalSignalDSL.g:6858:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalSignalDSL.g:6859:2: rule__XAnnotationElementValue__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0__2__Impl();
@@ -22601,22 +23882,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2__Impl"
-    // InternalSignalDSL.g:6466:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:6865:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6470:1: ( ( ']' ) )
-            // InternalSignalDSL.g:6471:1: ( ']' )
+            // InternalSignalDSL.g:6869:1: ( ( ']' ) )
+            // InternalSignalDSL.g:6870:1: ( ']' )
             {
-            // InternalSignalDSL.g:6471:1: ( ']' )
-            // InternalSignalDSL.g:6472:2: ']'
+            // InternalSignalDSL.g:6870:1: ( ']' )
+            // InternalSignalDSL.g:6871:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,83,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -22642,14 +23923,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0"
-    // InternalSignalDSL.g:6482:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
+    // InternalSignalDSL.g:6881:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6486:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
-            // InternalSignalDSL.g:6487:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
+            // InternalSignalDSL.g:6885:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalSignalDSL.g:6886:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0__Impl();
@@ -22675,23 +23956,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:6493:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6892:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6497:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:6498:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6896:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:6897:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:6498:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
-            // InternalSignalDSL.g:6499:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6897:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6898:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
             }
-            // InternalSignalDSL.g:6500:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
-            // InternalSignalDSL.g:6500:3: rule__XAnnotationElementValue__Group_0_0_0__0
+            // InternalSignalDSL.g:6899:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6899:3: rule__XAnnotationElementValue__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__0();
@@ -22726,16 +24007,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0"
-    // InternalSignalDSL.g:6509:1: rule__XAnnotationElementValue__Group_0_0_0__0 : rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 ;
+    // InternalSignalDSL.g:6908:1: rule__XAnnotationElementValue__Group_0_0_0__0 : rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6513:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
-            // InternalSignalDSL.g:6514:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            // InternalSignalDSL.g:6912:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalSignalDSL.g:6913:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
             {
-            pushFollow(FOLLOW_38);
+            pushFollow(FOLLOW_41);
             rule__XAnnotationElementValue__Group_0_0_0__0__Impl();
 
             state._fsp--;
@@ -22764,23 +24045,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0__Impl"
-    // InternalSignalDSL.g:6521:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6920:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6525:1: ( ( () ) )
-            // InternalSignalDSL.g:6526:1: ( () )
+            // InternalSignalDSL.g:6924:1: ( ( () ) )
+            // InternalSignalDSL.g:6925:1: ( () )
             {
-            // InternalSignalDSL.g:6526:1: ( () )
-            // InternalSignalDSL.g:6527:2: ()
+            // InternalSignalDSL.g:6925:1: ( () )
+            // InternalSignalDSL.g:6926:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:6528:2: ()
-            // InternalSignalDSL.g:6528:3: 
+            // InternalSignalDSL.g:6927:2: ()
+            // InternalSignalDSL.g:6927:3: 
             {
             }
 
@@ -22805,16 +24086,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1"
-    // InternalSignalDSL.g:6536:1: rule__XAnnotationElementValue__Group_0_0_0__1 : rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 ;
+    // InternalSignalDSL.g:6935:1: rule__XAnnotationElementValue__Group_0_0_0__1 : rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6540:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
-            // InternalSignalDSL.g:6541:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            // InternalSignalDSL.g:6939:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalSignalDSL.g:6940:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_42);
             rule__XAnnotationElementValue__Group_0_0_0__1__Impl();
 
             state._fsp--;
@@ -22843,22 +24124,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1__Impl"
-    // InternalSignalDSL.g:6548:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:6947:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6552:1: ( ( '#' ) )
-            // InternalSignalDSL.g:6553:1: ( '#' )
+            // InternalSignalDSL.g:6951:1: ( ( '#' ) )
+            // InternalSignalDSL.g:6952:1: ( '#' )
             {
-            // InternalSignalDSL.g:6553:1: ( '#' )
-            // InternalSignalDSL.g:6554:2: '#'
+            // InternalSignalDSL.g:6952:1: ( '#' )
+            // InternalSignalDSL.g:6953:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,84,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -22884,14 +24165,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2"
-    // InternalSignalDSL.g:6563:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
+    // InternalSignalDSL.g:6962:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6567:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
-            // InternalSignalDSL.g:6568:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+            // InternalSignalDSL.g:6966:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalSignalDSL.g:6967:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__2__Impl();
@@ -22917,22 +24198,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2__Impl"
-    // InternalSignalDSL.g:6574:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:6973:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6578:1: ( ( '[' ) )
-            // InternalSignalDSL.g:6579:1: ( '[' )
+            // InternalSignalDSL.g:6977:1: ( ( '[' ) )
+            // InternalSignalDSL.g:6978:1: ( '[' )
             {
-            // InternalSignalDSL.g:6579:1: ( '[' )
-            // InternalSignalDSL.g:6580:2: '['
+            // InternalSignalDSL.g:6978:1: ( '[' )
+            // InternalSignalDSL.g:6979:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -22958,16 +24239,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0"
-    // InternalSignalDSL.g:6590:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
+    // InternalSignalDSL.g:6989:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
     public final void rule__XAnnotationElementValue__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6594:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
-            // InternalSignalDSL.g:6595:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            // InternalSignalDSL.g:6993:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalSignalDSL.g:6994:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XAnnotationElementValue__Group_0_1__0__Impl();
 
             state._fsp--;
@@ -22996,23 +24277,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:6602:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
+    // InternalSignalDSL.g:7001:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6606:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
-            // InternalSignalDSL.g:6607:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:7005:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalSignalDSL.g:7006:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
             {
-            // InternalSignalDSL.g:6607:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
-            // InternalSignalDSL.g:6608:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:7006:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:7007:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalSignalDSL.g:6609:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
-            // InternalSignalDSL.g:6609:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
+            // InternalSignalDSL.g:7008:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:7008:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_0();
@@ -23047,14 +24328,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1"
-    // InternalSignalDSL.g:6617:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
+    // InternalSignalDSL.g:7016:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6621:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
-            // InternalSignalDSL.g:6622:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
+            // InternalSignalDSL.g:7020:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalSignalDSL.g:7021:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1__1__Impl();
@@ -23080,37 +24361,37 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1__Impl"
-    // InternalSignalDSL.g:6628:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:7027:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
     public final void rule__XAnnotationElementValue__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6632:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:6633:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:7031:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:7032:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:6633:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
-            // InternalSignalDSL.g:6634:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            // InternalSignalDSL.g:7032:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:7033:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
             }
-            // InternalSignalDSL.g:6635:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
-            loop66:
+            // InternalSignalDSL.g:7034:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            loop69:
             do {
-                int alt66=2;
-                int LA66_0 = input.LA(1);
+                int alt69=2;
+                int LA69_0 = input.LA(1);
 
-                if ( (LA66_0==82) ) {
-                    alt66=1;
+                if ( (LA69_0==80) ) {
+                    alt69=1;
                 }
 
 
-                switch (alt66) {
+                switch (alt69) {
             	case 1 :
-            	    // InternalSignalDSL.g:6635:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    // InternalSignalDSL.g:7034:3: rule__XAnnotationElementValue__Group_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XAnnotationElementValue__Group_0_1_1__0();
 
             	    state._fsp--;
@@ -23120,7 +24401,7 @@
             	    break;
 
             	default :
-            	    break loop66;
+            	    break loop69;
                 }
             } while (true);
 
@@ -23149,16 +24430,16 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0"
-    // InternalSignalDSL.g:6644:1: rule__XAnnotationElementValue__Group_0_1_1__0 : rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 ;
+    // InternalSignalDSL.g:7043:1: rule__XAnnotationElementValue__Group_0_1_1__0 : rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6648:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
-            // InternalSignalDSL.g:6649:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            // InternalSignalDSL.g:7047:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalSignalDSL.g:7048:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAnnotationElementValue__Group_0_1_1__0__Impl();
 
             state._fsp--;
@@ -23187,22 +24468,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0__Impl"
-    // InternalSignalDSL.g:6656:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:7055:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6660:1: ( ( ',' ) )
-            // InternalSignalDSL.g:6661:1: ( ',' )
+            // InternalSignalDSL.g:7059:1: ( ( ',' ) )
+            // InternalSignalDSL.g:7060:1: ( ',' )
             {
-            // InternalSignalDSL.g:6661:1: ( ',' )
-            // InternalSignalDSL.g:6662:2: ','
+            // InternalSignalDSL.g:7060:1: ( ',' )
+            // InternalSignalDSL.g:7061:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -23228,14 +24509,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1"
-    // InternalSignalDSL.g:6671:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:7070:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6675:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
-            // InternalSignalDSL.g:6676:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+            // InternalSignalDSL.g:7074:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalSignalDSL.g:7075:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1_1__1__Impl();
@@ -23261,23 +24542,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1__Impl"
-    // InternalSignalDSL.g:6682:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:7081:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6686:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:6687:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:7085:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:7086:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:6687:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
-            // InternalSignalDSL.g:6688:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:7086:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:7087:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:6689:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
-            // InternalSignalDSL.g:6689:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
+            // InternalSignalDSL.g:7088:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:7088:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1();
@@ -23312,16 +24593,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0"
-    // InternalSignalDSL.g:6698:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
+    // InternalSignalDSL.g:7097:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
     public final void rule__XAssignment__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6702:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
-            // InternalSignalDSL.g:6703:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            // InternalSignalDSL.g:7101:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalSignalDSL.g:7102:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
             {
-            pushFollow(FOLLOW_40);
+            pushFollow(FOLLOW_43);
             rule__XAssignment__Group_0__0__Impl();
 
             state._fsp--;
@@ -23350,23 +24631,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0__Impl"
-    // InternalSignalDSL.g:6710:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7109:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
     public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6714:1: ( ( () ) )
-            // InternalSignalDSL.g:6715:1: ( () )
+            // InternalSignalDSL.g:7113:1: ( ( () ) )
+            // InternalSignalDSL.g:7114:1: ( () )
             {
-            // InternalSignalDSL.g:6715:1: ( () )
-            // InternalSignalDSL.g:6716:2: ()
+            // InternalSignalDSL.g:7114:1: ( () )
+            // InternalSignalDSL.g:7115:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
             }
-            // InternalSignalDSL.g:6717:2: ()
-            // InternalSignalDSL.g:6717:3: 
+            // InternalSignalDSL.g:7116:2: ()
+            // InternalSignalDSL.g:7116:3: 
             {
             }
 
@@ -23391,16 +24672,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1"
-    // InternalSignalDSL.g:6725:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
+    // InternalSignalDSL.g:7124:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
     public final void rule__XAssignment__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6729:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
-            // InternalSignalDSL.g:6730:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            // InternalSignalDSL.g:7128:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalSignalDSL.g:7129:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_39);
             rule__XAssignment__Group_0__1__Impl();
 
             state._fsp--;
@@ -23429,23 +24710,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1__Impl"
-    // InternalSignalDSL.g:6737:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
+    // InternalSignalDSL.g:7136:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
     public final void rule__XAssignment__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6741:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
-            // InternalSignalDSL.g:6742:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:7140:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalSignalDSL.g:7141:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
             {
-            // InternalSignalDSL.g:6742:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
-            // InternalSignalDSL.g:6743:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:7141:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:7142:2: ( rule__XAssignment__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalSignalDSL.g:6744:2: ( rule__XAssignment__FeatureAssignment_0_1 )
-            // InternalSignalDSL.g:6744:3: rule__XAssignment__FeatureAssignment_0_1
+            // InternalSignalDSL.g:7143:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:7143:3: rule__XAssignment__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_0_1();
@@ -23480,16 +24761,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2"
-    // InternalSignalDSL.g:6752:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
+    // InternalSignalDSL.g:7151:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
     public final void rule__XAssignment__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6756:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
-            // InternalSignalDSL.g:6757:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            // InternalSignalDSL.g:7155:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalSignalDSL.g:7156:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAssignment__Group_0__2__Impl();
 
             state._fsp--;
@@ -23518,17 +24799,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2__Impl"
-    // InternalSignalDSL.g:6764:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    // InternalSignalDSL.g:7163:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
     public final void rule__XAssignment__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6768:1: ( ( ruleOpSingleAssign ) )
-            // InternalSignalDSL.g:6769:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:7167:1: ( ( ruleOpSingleAssign ) )
+            // InternalSignalDSL.g:7168:1: ( ruleOpSingleAssign )
             {
-            // InternalSignalDSL.g:6769:1: ( ruleOpSingleAssign )
-            // InternalSignalDSL.g:6770:2: ruleOpSingleAssign
+            // InternalSignalDSL.g:7168:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:7169:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
@@ -23563,14 +24844,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3"
-    // InternalSignalDSL.g:6779:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
+    // InternalSignalDSL.g:7178:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
     public final void rule__XAssignment__Group_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6783:1: ( rule__XAssignment__Group_0__3__Impl )
-            // InternalSignalDSL.g:6784:2: rule__XAssignment__Group_0__3__Impl
+            // InternalSignalDSL.g:7182:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalSignalDSL.g:7183:2: rule__XAssignment__Group_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_0__3__Impl();
@@ -23596,23 +24877,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3__Impl"
-    // InternalSignalDSL.g:6790:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
+    // InternalSignalDSL.g:7189:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
     public final void rule__XAssignment__Group_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6794:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
-            // InternalSignalDSL.g:6795:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalSignalDSL.g:7193:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalSignalDSL.g:7194:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
             {
-            // InternalSignalDSL.g:6795:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
-            // InternalSignalDSL.g:6796:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalSignalDSL.g:7194:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalSignalDSL.g:7195:2: ( rule__XAssignment__ValueAssignment_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
             }
-            // InternalSignalDSL.g:6797:2: ( rule__XAssignment__ValueAssignment_0_3 )
-            // InternalSignalDSL.g:6797:3: rule__XAssignment__ValueAssignment_0_3
+            // InternalSignalDSL.g:7196:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalSignalDSL.g:7196:3: rule__XAssignment__ValueAssignment_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__ValueAssignment_0_3();
@@ -23647,16 +24928,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0"
-    // InternalSignalDSL.g:6806:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
+    // InternalSignalDSL.g:7205:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
     public final void rule__XAssignment__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6810:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
-            // InternalSignalDSL.g:6811:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            // InternalSignalDSL.g:7209:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalSignalDSL.g:7210:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
             {
-            pushFollow(FOLLOW_41);
+            pushFollow(FOLLOW_44);
             rule__XAssignment__Group_1__0__Impl();
 
             state._fsp--;
@@ -23685,17 +24966,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0__Impl"
-    // InternalSignalDSL.g:6818:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    // InternalSignalDSL.g:7217:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
     public final void rule__XAssignment__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6822:1: ( ( ruleXOrExpression ) )
-            // InternalSignalDSL.g:6823:1: ( ruleXOrExpression )
+            // InternalSignalDSL.g:7221:1: ( ( ruleXOrExpression ) )
+            // InternalSignalDSL.g:7222:1: ( ruleXOrExpression )
             {
-            // InternalSignalDSL.g:6823:1: ( ruleXOrExpression )
-            // InternalSignalDSL.g:6824:2: ruleXOrExpression
+            // InternalSignalDSL.g:7222:1: ( ruleXOrExpression )
+            // InternalSignalDSL.g:7223:2: ruleXOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
@@ -23730,14 +25011,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1"
-    // InternalSignalDSL.g:6833:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
+    // InternalSignalDSL.g:7232:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
     public final void rule__XAssignment__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6837:1: ( rule__XAssignment__Group_1__1__Impl )
-            // InternalSignalDSL.g:6838:2: rule__XAssignment__Group_1__1__Impl
+            // InternalSignalDSL.g:7236:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalSignalDSL.g:7237:2: rule__XAssignment__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1__1__Impl();
@@ -23763,27 +25044,27 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1__Impl"
-    // InternalSignalDSL.g:6844:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
+    // InternalSignalDSL.g:7243:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
     public final void rule__XAssignment__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6848:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
-            // InternalSignalDSL.g:6849:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalSignalDSL.g:7247:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalSignalDSL.g:7248:1: ( ( rule__XAssignment__Group_1_1__0 )? )
             {
-            // InternalSignalDSL.g:6849:1: ( ( rule__XAssignment__Group_1_1__0 )? )
-            // InternalSignalDSL.g:6850:2: ( rule__XAssignment__Group_1_1__0 )?
+            // InternalSignalDSL.g:7248:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalSignalDSL.g:7249:2: ( rule__XAssignment__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
             }
-            // InternalSignalDSL.g:6851:2: ( rule__XAssignment__Group_1_1__0 )?
-            int alt67=2;
-            alt67 = dfa67.predict(input);
-            switch (alt67) {
+            // InternalSignalDSL.g:7250:2: ( rule__XAssignment__Group_1_1__0 )?
+            int alt70=2;
+            alt70 = dfa70.predict(input);
+            switch (alt70) {
                 case 1 :
-                    // InternalSignalDSL.g:6851:3: rule__XAssignment__Group_1_1__0
+                    // InternalSignalDSL.g:7250:3: rule__XAssignment__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1_1__0();
@@ -23821,16 +25102,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0"
-    // InternalSignalDSL.g:6860:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
+    // InternalSignalDSL.g:7259:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
     public final void rule__XAssignment__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6864:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
-            // InternalSignalDSL.g:6865:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            // InternalSignalDSL.g:7263:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalSignalDSL.g:7264:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAssignment__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -23859,23 +25140,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:6872:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
+    // InternalSignalDSL.g:7271:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
     public final void rule__XAssignment__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6876:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
-            // InternalSignalDSL.g:6877:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:7275:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalSignalDSL.g:7276:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
             {
-            // InternalSignalDSL.g:6877:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
-            // InternalSignalDSL.g:6878:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalSignalDSL.g:7276:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:7277:2: ( rule__XAssignment__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
             }
-            // InternalSignalDSL.g:6879:2: ( rule__XAssignment__Group_1_1_0__0 )
-            // InternalSignalDSL.g:6879:3: rule__XAssignment__Group_1_1_0__0
+            // InternalSignalDSL.g:7278:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalSignalDSL.g:7278:3: rule__XAssignment__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0();
@@ -23910,14 +25191,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1"
-    // InternalSignalDSL.g:6887:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:7286:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
     public final void rule__XAssignment__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6891:1: ( rule__XAssignment__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:6892:2: rule__XAssignment__Group_1_1__1__Impl
+            // InternalSignalDSL.g:7290:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:7291:2: rule__XAssignment__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1__1__Impl();
@@ -23943,23 +25224,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:6898:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalSignalDSL.g:7297:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
     public final void rule__XAssignment__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6902:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
-            // InternalSignalDSL.g:6903:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:7301:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalSignalDSL.g:7302:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalSignalDSL.g:6903:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
-            // InternalSignalDSL.g:6904:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:7302:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:7303:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalSignalDSL.g:6905:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
-            // InternalSignalDSL.g:6905:3: rule__XAssignment__RightOperandAssignment_1_1_1
+            // InternalSignalDSL.g:7304:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:7304:3: rule__XAssignment__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__RightOperandAssignment_1_1_1();
@@ -23994,14 +25275,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0"
-    // InternalSignalDSL.g:6914:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
+    // InternalSignalDSL.g:7313:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
     public final void rule__XAssignment__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6918:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
-            // InternalSignalDSL.g:6919:2: rule__XAssignment__Group_1_1_0__0__Impl
+            // InternalSignalDSL.g:7317:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalSignalDSL.g:7318:2: rule__XAssignment__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0__Impl();
@@ -24027,23 +25308,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0__Impl"
-    // InternalSignalDSL.g:6925:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7324:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
     public final void rule__XAssignment__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6929:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:6930:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:7328:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7329:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:6930:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
-            // InternalSignalDSL.g:6931:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:7329:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:7330:2: ( rule__XAssignment__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
             }
-            // InternalSignalDSL.g:6932:2: ( rule__XAssignment__Group_1_1_0_0__0 )
-            // InternalSignalDSL.g:6932:3: rule__XAssignment__Group_1_1_0_0__0
+            // InternalSignalDSL.g:7331:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:7331:3: rule__XAssignment__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__0();
@@ -24078,16 +25359,16 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0"
-    // InternalSignalDSL.g:6941:1: rule__XAssignment__Group_1_1_0_0__0 : rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 ;
+    // InternalSignalDSL.g:7340:1: rule__XAssignment__Group_1_1_0_0__0 : rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 ;
     public final void rule__XAssignment__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6945:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
-            // InternalSignalDSL.g:6946:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            // InternalSignalDSL.g:7344:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalSignalDSL.g:7345:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
             {
-            pushFollow(FOLLOW_41);
+            pushFollow(FOLLOW_44);
             rule__XAssignment__Group_1_1_0_0__0__Impl();
 
             state._fsp--;
@@ -24116,23 +25397,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0__Impl"
-    // InternalSignalDSL.g:6953:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7352:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAssignment__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6957:1: ( ( () ) )
-            // InternalSignalDSL.g:6958:1: ( () )
+            // InternalSignalDSL.g:7356:1: ( ( () ) )
+            // InternalSignalDSL.g:7357:1: ( () )
             {
-            // InternalSignalDSL.g:6958:1: ( () )
-            // InternalSignalDSL.g:6959:2: ()
+            // InternalSignalDSL.g:7357:1: ( () )
+            // InternalSignalDSL.g:7358:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:6960:2: ()
-            // InternalSignalDSL.g:6960:3: 
+            // InternalSignalDSL.g:7359:2: ()
+            // InternalSignalDSL.g:7359:3: 
             {
             }
 
@@ -24157,14 +25438,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1"
-    // InternalSignalDSL.g:6968:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:7367:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
     public final void rule__XAssignment__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6972:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
-            // InternalSignalDSL.g:6973:2: rule__XAssignment__Group_1_1_0_0__1__Impl
+            // InternalSignalDSL.g:7371:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalSignalDSL.g:7372:2: rule__XAssignment__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__1__Impl();
@@ -24190,23 +25471,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1__Impl"
-    // InternalSignalDSL.g:6979:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:7378:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
     public final void rule__XAssignment__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6983:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:6984:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:7382:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:7383:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:6984:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalSignalDSL.g:6985:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:7383:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:7384:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:6986:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
-            // InternalSignalDSL.g:6986:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
+            // InternalSignalDSL.g:7385:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:7385:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_1_1_0_0_1();
@@ -24241,16 +25522,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0"
-    // InternalSignalDSL.g:6995:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
+    // InternalSignalDSL.g:7394:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
     public final void rule__OpMultiAssign__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6999:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
-            // InternalSignalDSL.g:7000:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            // InternalSignalDSL.g:7398:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalSignalDSL.g:7399:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_45);
             rule__OpMultiAssign__Group_5__0__Impl();
 
             state._fsp--;
@@ -24279,17 +25560,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0__Impl"
-    // InternalSignalDSL.g:7007:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:7406:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7011:1: ( ( '<' ) )
-            // InternalSignalDSL.g:7012:1: ( '<' )
+            // InternalSignalDSL.g:7410:1: ( ( '<' ) )
+            // InternalSignalDSL.g:7411:1: ( '<' )
             {
-            // InternalSignalDSL.g:7012:1: ( '<' )
-            // InternalSignalDSL.g:7013:2: '<'
+            // InternalSignalDSL.g:7411:1: ( '<' )
+            // InternalSignalDSL.g:7412:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
@@ -24320,16 +25601,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1"
-    // InternalSignalDSL.g:7022:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
+    // InternalSignalDSL.g:7421:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
     public final void rule__OpMultiAssign__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7026:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
-            // InternalSignalDSL.g:7027:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            // InternalSignalDSL.g:7425:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalSignalDSL.g:7426:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_39);
             rule__OpMultiAssign__Group_5__1__Impl();
 
             state._fsp--;
@@ -24358,17 +25639,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1__Impl"
-    // InternalSignalDSL.g:7034:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:7433:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7038:1: ( ( '<' ) )
-            // InternalSignalDSL.g:7039:1: ( '<' )
+            // InternalSignalDSL.g:7437:1: ( ( '<' ) )
+            // InternalSignalDSL.g:7438:1: ( '<' )
             {
-            // InternalSignalDSL.g:7039:1: ( '<' )
-            // InternalSignalDSL.g:7040:2: '<'
+            // InternalSignalDSL.g:7438:1: ( '<' )
+            // InternalSignalDSL.g:7439:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
@@ -24399,14 +25680,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2"
-    // InternalSignalDSL.g:7049:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
+    // InternalSignalDSL.g:7448:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
     public final void rule__OpMultiAssign__Group_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7053:1: ( rule__OpMultiAssign__Group_5__2__Impl )
-            // InternalSignalDSL.g:7054:2: rule__OpMultiAssign__Group_5__2__Impl
+            // InternalSignalDSL.g:7452:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalSignalDSL.g:7453:2: rule__OpMultiAssign__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_5__2__Impl();
@@ -24432,17 +25713,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2__Impl"
-    // InternalSignalDSL.g:7060:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:7459:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
     public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7064:1: ( ( '=' ) )
-            // InternalSignalDSL.g:7065:1: ( '=' )
+            // InternalSignalDSL.g:7463:1: ( ( '=' ) )
+            // InternalSignalDSL.g:7464:1: ( '=' )
             {
-            // InternalSignalDSL.g:7065:1: ( '=' )
-            // InternalSignalDSL.g:7066:2: '='
+            // InternalSignalDSL.g:7464:1: ( '=' )
+            // InternalSignalDSL.g:7465:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
@@ -24473,16 +25754,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0"
-    // InternalSignalDSL.g:7076:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
+    // InternalSignalDSL.g:7475:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
     public final void rule__OpMultiAssign__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7080:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
-            // InternalSignalDSL.g:7081:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            // InternalSignalDSL.g:7479:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalSignalDSL.g:7480:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
             {
-            pushFollow(FOLLOW_43);
+            pushFollow(FOLLOW_46);
             rule__OpMultiAssign__Group_6__0__Impl();
 
             state._fsp--;
@@ -24511,17 +25792,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0__Impl"
-    // InternalSignalDSL.g:7088:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:7487:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
     public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7092:1: ( ( '>' ) )
-            // InternalSignalDSL.g:7093:1: ( '>' )
+            // InternalSignalDSL.g:7491:1: ( ( '>' ) )
+            // InternalSignalDSL.g:7492:1: ( '>' )
             {
-            // InternalSignalDSL.g:7093:1: ( '>' )
-            // InternalSignalDSL.g:7094:2: '>'
+            // InternalSignalDSL.g:7492:1: ( '>' )
+            // InternalSignalDSL.g:7493:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
@@ -24552,16 +25833,16 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1"
-    // InternalSignalDSL.g:7103:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
+    // InternalSignalDSL.g:7502:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
     public final void rule__OpMultiAssign__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7107:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
-            // InternalSignalDSL.g:7108:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            // InternalSignalDSL.g:7506:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalSignalDSL.g:7507:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
             {
-            pushFollow(FOLLOW_43);
+            pushFollow(FOLLOW_46);
             rule__OpMultiAssign__Group_6__1__Impl();
 
             state._fsp--;
@@ -24590,31 +25871,31 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1__Impl"
-    // InternalSignalDSL.g:7115:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    // InternalSignalDSL.g:7514:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
     public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7119:1: ( ( ( '>' )? ) )
-            // InternalSignalDSL.g:7120:1: ( ( '>' )? )
+            // InternalSignalDSL.g:7518:1: ( ( ( '>' )? ) )
+            // InternalSignalDSL.g:7519:1: ( ( '>' )? )
             {
-            // InternalSignalDSL.g:7120:1: ( ( '>' )? )
-            // InternalSignalDSL.g:7121:2: ( '>' )?
+            // InternalSignalDSL.g:7519:1: ( ( '>' )? )
+            // InternalSignalDSL.g:7520:2: ( '>' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
             }
-            // InternalSignalDSL.g:7122:2: ( '>' )?
-            int alt68=2;
-            int LA68_0 = input.LA(1);
+            // InternalSignalDSL.g:7521:2: ( '>' )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
 
-            if ( (LA68_0==26) ) {
-                alt68=1;
+            if ( (LA71_0==26) ) {
+                alt71=1;
             }
-            switch (alt68) {
+            switch (alt71) {
                 case 1 :
-                    // InternalSignalDSL.g:7122:3: '>'
+                    // InternalSignalDSL.g:7521:3: '>'
                     {
                     match(input,26,FOLLOW_2); if (state.failed) return ;
 
@@ -24648,14 +25929,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2"
-    // InternalSignalDSL.g:7130:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
+    // InternalSignalDSL.g:7529:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
     public final void rule__OpMultiAssign__Group_6__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7134:1: ( rule__OpMultiAssign__Group_6__2__Impl )
-            // InternalSignalDSL.g:7135:2: rule__OpMultiAssign__Group_6__2__Impl
+            // InternalSignalDSL.g:7533:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalSignalDSL.g:7534:2: rule__OpMultiAssign__Group_6__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_6__2__Impl();
@@ -24681,17 +25962,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2__Impl"
-    // InternalSignalDSL.g:7141:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    // InternalSignalDSL.g:7540:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
     public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7145:1: ( ( '>=' ) )
-            // InternalSignalDSL.g:7146:1: ( '>=' )
+            // InternalSignalDSL.g:7544:1: ( ( '>=' ) )
+            // InternalSignalDSL.g:7545:1: ( '>=' )
             {
-            // InternalSignalDSL.g:7146:1: ( '>=' )
-            // InternalSignalDSL.g:7147:2: '>='
+            // InternalSignalDSL.g:7545:1: ( '>=' )
+            // InternalSignalDSL.g:7546:2: '>='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
@@ -24722,16 +26003,16 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0"
-    // InternalSignalDSL.g:7157:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
+    // InternalSignalDSL.g:7556:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
     public final void rule__XOrExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7161:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
-            // InternalSignalDSL.g:7162:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            // InternalSignalDSL.g:7560:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalSignalDSL.g:7561:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_47);
             rule__XOrExpression__Group__0__Impl();
 
             state._fsp--;
@@ -24760,17 +26041,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0__Impl"
-    // InternalSignalDSL.g:7169:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    // InternalSignalDSL.g:7568:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7173:1: ( ( ruleXAndExpression ) )
-            // InternalSignalDSL.g:7174:1: ( ruleXAndExpression )
+            // InternalSignalDSL.g:7572:1: ( ( ruleXAndExpression ) )
+            // InternalSignalDSL.g:7573:1: ( ruleXAndExpression )
             {
-            // InternalSignalDSL.g:7174:1: ( ruleXAndExpression )
-            // InternalSignalDSL.g:7175:2: ruleXAndExpression
+            // InternalSignalDSL.g:7573:1: ( ruleXAndExpression )
+            // InternalSignalDSL.g:7574:2: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
@@ -24805,14 +26086,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1"
-    // InternalSignalDSL.g:7184:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:7583:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
     public final void rule__XOrExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7188:1: ( rule__XOrExpression__Group__1__Impl )
-            // InternalSignalDSL.g:7189:2: rule__XOrExpression__Group__1__Impl
+            // InternalSignalDSL.g:7587:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalSignalDSL.g:7588:2: rule__XOrExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__1__Impl();
@@ -24838,43 +26119,43 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1__Impl"
-    // InternalSignalDSL.g:7195:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:7594:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
     public final void rule__XOrExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7199:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:7200:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7598:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:7599:1: ( ( rule__XOrExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:7200:1: ( ( rule__XOrExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:7201:2: ( rule__XOrExpression__Group_1__0 )*
+            // InternalSignalDSL.g:7599:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7600:2: ( rule__XOrExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:7202:2: ( rule__XOrExpression__Group_1__0 )*
-            loop69:
+            // InternalSignalDSL.g:7601:2: ( rule__XOrExpression__Group_1__0 )*
+            loop72:
             do {
-                int alt69=2;
-                int LA69_0 = input.LA(1);
+                int alt72=2;
+                int LA72_0 = input.LA(1);
 
-                if ( (LA69_0==14) ) {
-                    int LA69_2 = input.LA(2);
+                if ( (LA72_0==14) ) {
+                    int LA72_2 = input.LA(2);
 
-                    if ( (synpred121_InternalSignalDSL()) ) {
-                        alt69=1;
+                    if ( (synpred124_InternalSignalDSL()) ) {
+                        alt72=1;
                     }
 
 
                 }
 
 
-                switch (alt69) {
+                switch (alt72) {
             	case 1 :
-            	    // InternalSignalDSL.g:7202:3: rule__XOrExpression__Group_1__0
+            	    // InternalSignalDSL.g:7601:3: rule__XOrExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_45);
+            	    pushFollow(FOLLOW_48);
             	    rule__XOrExpression__Group_1__0();
 
             	    state._fsp--;
@@ -24884,7 +26165,7 @@
             	    break;
 
             	default :
-            	    break loop69;
+            	    break loop72;
                 }
             } while (true);
 
@@ -24913,16 +26194,16 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0"
-    // InternalSignalDSL.g:7211:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
+    // InternalSignalDSL.g:7610:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
     public final void rule__XOrExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7215:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
-            // InternalSignalDSL.g:7216:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            // InternalSignalDSL.g:7614:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalSignalDSL.g:7615:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XOrExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -24951,23 +26232,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:7223:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:7622:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
     public final void rule__XOrExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7227:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:7228:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7626:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:7627:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:7228:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:7229:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7627:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7628:2: ( rule__XOrExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:7230:2: ( rule__XOrExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:7230:3: rule__XOrExpression__Group_1_0__0
+            // InternalSignalDSL.g:7629:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7629:3: rule__XOrExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0();
@@ -25002,14 +26283,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1"
-    // InternalSignalDSL.g:7238:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:7637:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
     public final void rule__XOrExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7242:1: ( rule__XOrExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:7243:2: rule__XOrExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:7641:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:7642:2: rule__XOrExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1__1__Impl();
@@ -25035,23 +26316,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:7249:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:7648:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XOrExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7253:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:7254:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7652:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:7653:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:7254:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:7255:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7653:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7654:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:7256:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:7256:3: rule__XOrExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:7655:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7655:3: rule__XOrExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__RightOperandAssignment_1_1();
@@ -25086,14 +26367,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0"
-    // InternalSignalDSL.g:7265:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:7664:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
     public final void rule__XOrExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7269:1: ( rule__XOrExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:7270:2: rule__XOrExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:7668:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:7669:2: rule__XOrExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0__Impl();
@@ -25119,23 +26400,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:7276:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7675:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XOrExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7280:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7281:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7679:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7680:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7281:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:7282:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7680:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7681:2: ( rule__XOrExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:7283:2: ( rule__XOrExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:7283:3: rule__XOrExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:7682:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7682:3: rule__XOrExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__0();
@@ -25170,16 +26451,16 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:7292:1: rule__XOrExpression__Group_1_0_0__0 : rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:7691:1: rule__XOrExpression__Group_1_0_0__0 : rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 ;
     public final void rule__XOrExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7296:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:7297:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:7695:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:7696:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_44);
+            pushFollow(FOLLOW_47);
             rule__XOrExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -25208,23 +26489,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7304:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7703:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XOrExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7308:1: ( ( () ) )
-            // InternalSignalDSL.g:7309:1: ( () )
+            // InternalSignalDSL.g:7707:1: ( ( () ) )
+            // InternalSignalDSL.g:7708:1: ( () )
             {
-            // InternalSignalDSL.g:7309:1: ( () )
-            // InternalSignalDSL.g:7310:2: ()
+            // InternalSignalDSL.g:7708:1: ( () )
+            // InternalSignalDSL.g:7709:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7311:2: ()
-            // InternalSignalDSL.g:7311:3: 
+            // InternalSignalDSL.g:7710:2: ()
+            // InternalSignalDSL.g:7710:3: 
             {
             }
 
@@ -25249,14 +26530,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:7319:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:7718:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
     public final void rule__XOrExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7323:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:7324:2: rule__XOrExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:7722:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:7723:2: rule__XOrExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__1__Impl();
@@ -25282,23 +26563,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:7330:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:7729:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XOrExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7334:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:7335:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7733:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:7734:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:7335:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:7336:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7734:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7735:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:7337:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:7337:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:7736:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7736:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__FeatureAssignment_1_0_0_1();
@@ -25333,16 +26614,16 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0"
-    // InternalSignalDSL.g:7346:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
+    // InternalSignalDSL.g:7745:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
     public final void rule__XAndExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7350:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
-            // InternalSignalDSL.g:7351:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            // InternalSignalDSL.g:7749:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalSignalDSL.g:7750:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_49);
             rule__XAndExpression__Group__0__Impl();
 
             state._fsp--;
@@ -25371,17 +26652,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0__Impl"
-    // InternalSignalDSL.g:7358:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    // InternalSignalDSL.g:7757:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7362:1: ( ( ruleXEqualityExpression ) )
-            // InternalSignalDSL.g:7363:1: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:7761:1: ( ( ruleXEqualityExpression ) )
+            // InternalSignalDSL.g:7762:1: ( ruleXEqualityExpression )
             {
-            // InternalSignalDSL.g:7363:1: ( ruleXEqualityExpression )
-            // InternalSignalDSL.g:7364:2: ruleXEqualityExpression
+            // InternalSignalDSL.g:7762:1: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:7763:2: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
@@ -25416,14 +26697,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1"
-    // InternalSignalDSL.g:7373:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:7772:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
     public final void rule__XAndExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7377:1: ( rule__XAndExpression__Group__1__Impl )
-            // InternalSignalDSL.g:7378:2: rule__XAndExpression__Group__1__Impl
+            // InternalSignalDSL.g:7776:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalSignalDSL.g:7777:2: rule__XAndExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__1__Impl();
@@ -25449,43 +26730,43 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1__Impl"
-    // InternalSignalDSL.g:7384:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:7783:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
     public final void rule__XAndExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7388:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:7389:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7787:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:7788:1: ( ( rule__XAndExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:7389:1: ( ( rule__XAndExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:7390:2: ( rule__XAndExpression__Group_1__0 )*
+            // InternalSignalDSL.g:7788:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7789:2: ( rule__XAndExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:7391:2: ( rule__XAndExpression__Group_1__0 )*
-            loop70:
+            // InternalSignalDSL.g:7790:2: ( rule__XAndExpression__Group_1__0 )*
+            loop73:
             do {
-                int alt70=2;
-                int LA70_0 = input.LA(1);
+                int alt73=2;
+                int LA73_0 = input.LA(1);
 
-                if ( (LA70_0==15) ) {
-                    int LA70_2 = input.LA(2);
+                if ( (LA73_0==15) ) {
+                    int LA73_2 = input.LA(2);
 
-                    if ( (synpred122_InternalSignalDSL()) ) {
-                        alt70=1;
+                    if ( (synpred125_InternalSignalDSL()) ) {
+                        alt73=1;
                     }
 
 
                 }
 
 
-                switch (alt70) {
+                switch (alt73) {
             	case 1 :
-            	    // InternalSignalDSL.g:7391:3: rule__XAndExpression__Group_1__0
+            	    // InternalSignalDSL.g:7790:3: rule__XAndExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_47);
+            	    pushFollow(FOLLOW_50);
             	    rule__XAndExpression__Group_1__0();
 
             	    state._fsp--;
@@ -25495,7 +26776,7 @@
             	    break;
 
             	default :
-            	    break loop70;
+            	    break loop73;
                 }
             } while (true);
 
@@ -25524,16 +26805,16 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0"
-    // InternalSignalDSL.g:7400:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
+    // InternalSignalDSL.g:7799:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
     public final void rule__XAndExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7404:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
-            // InternalSignalDSL.g:7405:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            // InternalSignalDSL.g:7803:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalSignalDSL.g:7804:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAndExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -25562,23 +26843,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:7412:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:7811:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
     public final void rule__XAndExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7416:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:7417:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7815:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:7816:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:7417:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:7418:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7816:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7817:2: ( rule__XAndExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:7419:2: ( rule__XAndExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:7419:3: rule__XAndExpression__Group_1_0__0
+            // InternalSignalDSL.g:7818:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7818:3: rule__XAndExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0();
@@ -25613,14 +26894,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1"
-    // InternalSignalDSL.g:7427:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:7826:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
     public final void rule__XAndExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7431:1: ( rule__XAndExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:7432:2: rule__XAndExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:7830:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:7831:2: rule__XAndExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1__1__Impl();
@@ -25646,23 +26927,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:7438:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:7837:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XAndExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7442:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:7443:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7841:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:7842:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:7443:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:7444:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7842:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7843:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:7445:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:7445:3: rule__XAndExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:7844:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7844:3: rule__XAndExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__RightOperandAssignment_1_1();
@@ -25697,14 +26978,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0"
-    // InternalSignalDSL.g:7454:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:7853:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
     public final void rule__XAndExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7458:1: ( rule__XAndExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:7459:2: rule__XAndExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:7857:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:7858:2: rule__XAndExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0__Impl();
@@ -25730,23 +27011,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:7465:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7864:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XAndExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7469:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7470:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7868:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7869:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7470:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:7471:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7869:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7870:2: ( rule__XAndExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:7472:2: ( rule__XAndExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:7472:3: rule__XAndExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:7871:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7871:3: rule__XAndExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__0();
@@ -25781,16 +27062,16 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:7481:1: rule__XAndExpression__Group_1_0_0__0 : rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:7880:1: rule__XAndExpression__Group_1_0_0__0 : rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 ;
     public final void rule__XAndExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7485:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:7486:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:7884:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:7885:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_49);
             rule__XAndExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -25819,23 +27100,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7493:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7892:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAndExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7497:1: ( ( () ) )
-            // InternalSignalDSL.g:7498:1: ( () )
+            // InternalSignalDSL.g:7896:1: ( ( () ) )
+            // InternalSignalDSL.g:7897:1: ( () )
             {
-            // InternalSignalDSL.g:7498:1: ( () )
-            // InternalSignalDSL.g:7499:2: ()
+            // InternalSignalDSL.g:7897:1: ( () )
+            // InternalSignalDSL.g:7898:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7500:2: ()
-            // InternalSignalDSL.g:7500:3: 
+            // InternalSignalDSL.g:7899:2: ()
+            // InternalSignalDSL.g:7899:3: 
             {
             }
 
@@ -25860,14 +27141,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:7508:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:7907:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
     public final void rule__XAndExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7512:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:7513:2: rule__XAndExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:7911:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:7912:2: rule__XAndExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__1__Impl();
@@ -25893,23 +27174,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:7519:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:7918:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XAndExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7523:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:7524:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7922:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:7923:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:7524:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:7525:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7923:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7924:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:7526:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:7526:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:7925:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7925:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__FeatureAssignment_1_0_0_1();
@@ -25944,16 +27225,16 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0"
-    // InternalSignalDSL.g:7535:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
+    // InternalSignalDSL.g:7934:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
     public final void rule__XEqualityExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7539:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
-            // InternalSignalDSL.g:7540:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            // InternalSignalDSL.g:7938:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalSignalDSL.g:7939:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_51);
             rule__XEqualityExpression__Group__0__Impl();
 
             state._fsp--;
@@ -25982,17 +27263,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0__Impl"
-    // InternalSignalDSL.g:7547:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    // InternalSignalDSL.g:7946:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7551:1: ( ( ruleXRelationalExpression ) )
-            // InternalSignalDSL.g:7552:1: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:7950:1: ( ( ruleXRelationalExpression ) )
+            // InternalSignalDSL.g:7951:1: ( ruleXRelationalExpression )
             {
-            // InternalSignalDSL.g:7552:1: ( ruleXRelationalExpression )
-            // InternalSignalDSL.g:7553:2: ruleXRelationalExpression
+            // InternalSignalDSL.g:7951:1: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:7952:2: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
@@ -26027,14 +27308,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1"
-    // InternalSignalDSL.g:7562:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:7961:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
     public final void rule__XEqualityExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7566:1: ( rule__XEqualityExpression__Group__1__Impl )
-            // InternalSignalDSL.g:7567:2: rule__XEqualityExpression__Group__1__Impl
+            // InternalSignalDSL.g:7965:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalSignalDSL.g:7966:2: rule__XEqualityExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__1__Impl();
@@ -26060,32 +27341,32 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1__Impl"
-    // InternalSignalDSL.g:7573:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:7972:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
     public final void rule__XEqualityExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7577:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:7578:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7976:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:7977:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:7578:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:7579:2: ( rule__XEqualityExpression__Group_1__0 )*
+            // InternalSignalDSL.g:7977:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7978:2: ( rule__XEqualityExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:7580:2: ( rule__XEqualityExpression__Group_1__0 )*
-            loop71:
+            // InternalSignalDSL.g:7979:2: ( rule__XEqualityExpression__Group_1__0 )*
+            loop74:
             do {
-                int alt71=2;
+                int alt74=2;
                 switch ( input.LA(1) ) {
                 case 21:
                     {
-                    int LA71_2 = input.LA(2);
+                    int LA74_2 = input.LA(2);
 
-                    if ( (synpred123_InternalSignalDSL()) ) {
-                        alt71=1;
+                    if ( (synpred126_InternalSignalDSL()) ) {
+                        alt74=1;
                     }
 
 
@@ -26093,10 +27374,10 @@
                     break;
                 case 22:
                     {
-                    int LA71_3 = input.LA(2);
+                    int LA74_3 = input.LA(2);
 
-                    if ( (synpred123_InternalSignalDSL()) ) {
-                        alt71=1;
+                    if ( (synpred126_InternalSignalDSL()) ) {
+                        alt74=1;
                     }
 
 
@@ -26104,10 +27385,10 @@
                     break;
                 case 23:
                     {
-                    int LA71_4 = input.LA(2);
+                    int LA74_4 = input.LA(2);
 
-                    if ( (synpred123_InternalSignalDSL()) ) {
-                        alt71=1;
+                    if ( (synpred126_InternalSignalDSL()) ) {
+                        alt74=1;
                     }
 
 
@@ -26115,10 +27396,10 @@
                     break;
                 case 24:
                     {
-                    int LA71_5 = input.LA(2);
+                    int LA74_5 = input.LA(2);
 
-                    if ( (synpred123_InternalSignalDSL()) ) {
-                        alt71=1;
+                    if ( (synpred126_InternalSignalDSL()) ) {
+                        alt74=1;
                     }
 
 
@@ -26127,11 +27408,11 @@
 
                 }
 
-                switch (alt71) {
+                switch (alt74) {
             	case 1 :
-            	    // InternalSignalDSL.g:7580:3: rule__XEqualityExpression__Group_1__0
+            	    // InternalSignalDSL.g:7979:3: rule__XEqualityExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_49);
+            	    pushFollow(FOLLOW_52);
             	    rule__XEqualityExpression__Group_1__0();
 
             	    state._fsp--;
@@ -26141,7 +27422,7 @@
             	    break;
 
             	default :
-            	    break loop71;
+            	    break loop74;
                 }
             } while (true);
 
@@ -26170,16 +27451,16 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0"
-    // InternalSignalDSL.g:7589:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
+    // InternalSignalDSL.g:7988:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
     public final void rule__XEqualityExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7593:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
-            // InternalSignalDSL.g:7594:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            // InternalSignalDSL.g:7992:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalSignalDSL.g:7993:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XEqualityExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -26208,23 +27489,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:7601:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:8000:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
     public final void rule__XEqualityExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7605:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:7606:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8004:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:8005:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:7606:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:7607:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8005:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8006:2: ( rule__XEqualityExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:7608:2: ( rule__XEqualityExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:7608:3: rule__XEqualityExpression__Group_1_0__0
+            // InternalSignalDSL.g:8007:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8007:3: rule__XEqualityExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0();
@@ -26259,14 +27540,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1"
-    // InternalSignalDSL.g:7616:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:8015:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
     public final void rule__XEqualityExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7620:1: ( rule__XEqualityExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:7621:2: rule__XEqualityExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:8019:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:8020:2: rule__XEqualityExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1__1__Impl();
@@ -26292,23 +27573,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:7627:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:8026:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XEqualityExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7631:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:7632:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8030:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:8031:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:7632:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:7633:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8031:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8032:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:7634:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:7634:3: rule__XEqualityExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:8033:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8033:3: rule__XEqualityExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__RightOperandAssignment_1_1();
@@ -26343,14 +27624,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0"
-    // InternalSignalDSL.g:7643:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:8042:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
     public final void rule__XEqualityExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7647:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:7648:2: rule__XEqualityExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:8046:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:8047:2: rule__XEqualityExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0__Impl();
@@ -26376,23 +27657,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:7654:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8053:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XEqualityExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7658:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7659:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8057:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8058:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7659:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:7660:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8058:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8059:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:7661:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:7661:3: rule__XEqualityExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:8060:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8060:3: rule__XEqualityExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__0();
@@ -26427,16 +27708,16 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:7670:1: rule__XEqualityExpression__Group_1_0_0__0 : rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:8069:1: rule__XEqualityExpression__Group_1_0_0__0 : rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 ;
     public final void rule__XEqualityExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7674:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:7675:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:8073:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:8074:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_51);
             rule__XEqualityExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -26465,23 +27746,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7682:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8081:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XEqualityExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7686:1: ( ( () ) )
-            // InternalSignalDSL.g:7687:1: ( () )
+            // InternalSignalDSL.g:8085:1: ( ( () ) )
+            // InternalSignalDSL.g:8086:1: ( () )
             {
-            // InternalSignalDSL.g:7687:1: ( () )
-            // InternalSignalDSL.g:7688:2: ()
+            // InternalSignalDSL.g:8086:1: ( () )
+            // InternalSignalDSL.g:8087:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7689:2: ()
-            // InternalSignalDSL.g:7689:3: 
+            // InternalSignalDSL.g:8088:2: ()
+            // InternalSignalDSL.g:8088:3: 
             {
             }
 
@@ -26506,14 +27787,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:7697:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8096:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
     public final void rule__XEqualityExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7701:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:7702:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:8100:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8101:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__1__Impl();
@@ -26539,23 +27820,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:7708:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:8107:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XEqualityExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7712:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:7713:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8111:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:8112:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:7713:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:7714:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8112:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8113:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:7715:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:7715:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:8114:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8114:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__FeatureAssignment_1_0_0_1();
@@ -26590,16 +27871,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0"
-    // InternalSignalDSL.g:7724:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
+    // InternalSignalDSL.g:8123:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
     public final void rule__XRelationalExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7728:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
-            // InternalSignalDSL.g:7729:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            // InternalSignalDSL.g:8127:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalSignalDSL.g:8128:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_53);
             rule__XRelationalExpression__Group__0__Impl();
 
             state._fsp--;
@@ -26628,17 +27909,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0__Impl"
-    // InternalSignalDSL.g:7736:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    // InternalSignalDSL.g:8135:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
     public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7740:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalSignalDSL.g:7741:1: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:8139:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalSignalDSL.g:8140:1: ( ruleXOtherOperatorExpression )
             {
-            // InternalSignalDSL.g:7741:1: ( ruleXOtherOperatorExpression )
-            // InternalSignalDSL.g:7742:2: ruleXOtherOperatorExpression
+            // InternalSignalDSL.g:8140:1: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:8141:2: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
@@ -26673,14 +27954,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1"
-    // InternalSignalDSL.g:7751:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:8150:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
     public final void rule__XRelationalExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7755:1: ( rule__XRelationalExpression__Group__1__Impl )
-            // InternalSignalDSL.g:7756:2: rule__XRelationalExpression__Group__1__Impl
+            // InternalSignalDSL.g:8154:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalSignalDSL.g:8155:2: rule__XRelationalExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__1__Impl();
@@ -26706,32 +27987,32 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1__Impl"
-    // InternalSignalDSL.g:7762:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    // InternalSignalDSL.g:8161:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
     public final void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7766:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
-            // InternalSignalDSL.g:7767:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalSignalDSL.g:8165:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalSignalDSL.g:8166:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
             {
-            // InternalSignalDSL.g:7767:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
-            // InternalSignalDSL.g:7768:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            // InternalSignalDSL.g:8166:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalSignalDSL.g:8167:2: ( rule__XRelationalExpression__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:7769:2: ( rule__XRelationalExpression__Alternatives_1 )*
-            loop72:
+            // InternalSignalDSL.g:8168:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            loop75:
             do {
-                int alt72=2;
+                int alt75=2;
                 switch ( input.LA(1) ) {
                 case 27:
                     {
-                    int LA72_2 = input.LA(2);
+                    int LA75_2 = input.LA(2);
 
-                    if ( (synpred124_InternalSignalDSL()) ) {
-                        alt72=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
@@ -26739,21 +28020,21 @@
                     break;
                 case 26:
                     {
-                    int LA72_3 = input.LA(2);
+                    int LA75_3 = input.LA(2);
 
-                    if ( (synpred124_InternalSignalDSL()) ) {
-                        alt72=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
                     }
                     break;
-                case 86:
+                case 84:
                     {
-                    int LA72_4 = input.LA(2);
+                    int LA75_4 = input.LA(2);
 
-                    if ( (synpred124_InternalSignalDSL()) ) {
-                        alt72=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
@@ -26761,10 +28042,10 @@
                     break;
                 case 25:
                     {
-                    int LA72_5 = input.LA(2);
+                    int LA75_5 = input.LA(2);
 
-                    if ( (synpred124_InternalSignalDSL()) ) {
-                        alt72=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
@@ -26773,11 +28054,11 @@
 
                 }
 
-                switch (alt72) {
+                switch (alt75) {
             	case 1 :
-            	    // InternalSignalDSL.g:7769:3: rule__XRelationalExpression__Alternatives_1
+            	    // InternalSignalDSL.g:8168:3: rule__XRelationalExpression__Alternatives_1
             	    {
-            	    pushFollow(FOLLOW_51);
+            	    pushFollow(FOLLOW_54);
             	    rule__XRelationalExpression__Alternatives_1();
 
             	    state._fsp--;
@@ -26787,7 +28068,7 @@
             	    break;
 
             	default :
-            	    break loop72;
+            	    break loop75;
                 }
             } while (true);
 
@@ -26816,16 +28097,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0"
-    // InternalSignalDSL.g:7778:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
+    // InternalSignalDSL.g:8177:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
     public final void rule__XRelationalExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7782:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
-            // InternalSignalDSL.g:7783:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            // InternalSignalDSL.g:8181:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalSignalDSL.g:8182:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XRelationalExpression__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -26854,23 +28135,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:7790:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8189:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7794:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7795:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8193:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8194:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7795:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:7796:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8194:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8195:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:7797:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:7797:3: rule__XRelationalExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:8196:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8196:3: rule__XRelationalExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0();
@@ -26905,14 +28186,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1"
-    // InternalSignalDSL.g:7805:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:8204:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7809:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:7810:2: rule__XRelationalExpression__Group_1_0__1__Impl
+            // InternalSignalDSL.g:8208:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:8209:2: rule__XRelationalExpression__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0__1__Impl();
@@ -26938,23 +28219,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:7816:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:8215:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7820:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:7821:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:8219:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:8220:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:7821:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:7822:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalSignalDSL.g:8220:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:8221:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:7823:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
-            // InternalSignalDSL.g:7823:3: rule__XRelationalExpression__TypeAssignment_1_0_1
+            // InternalSignalDSL.g:8222:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalSignalDSL.g:8222:3: rule__XRelationalExpression__TypeAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__TypeAssignment_1_0_1();
@@ -26989,14 +28270,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:7832:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
+    // InternalSignalDSL.g:8231:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
     public final void rule__XRelationalExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7836:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
-            // InternalSignalDSL.g:7837:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
+            // InternalSignalDSL.g:8235:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalSignalDSL.g:8236:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0__Impl();
@@ -27022,23 +28303,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7843:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8242:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7847:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:7848:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:8246:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:8247:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7848:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
-            // InternalSignalDSL.g:7849:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:8247:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:8248:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7850:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
-            // InternalSignalDSL.g:7850:3: rule__XRelationalExpression__Group_1_0_0_0__0
+            // InternalSignalDSL.g:8249:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:8249:3: rule__XRelationalExpression__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__0();
@@ -27073,16 +28354,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0"
-    // InternalSignalDSL.g:7859:1: rule__XRelationalExpression__Group_1_0_0_0__0 : rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 ;
+    // InternalSignalDSL.g:8258:1: rule__XRelationalExpression__Group_1_0_0_0__0 : rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7863:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
-            // InternalSignalDSL.g:7864:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            // InternalSignalDSL.g:8262:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalSignalDSL.g:8263:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
             {
-            pushFollow(FOLLOW_53);
+            pushFollow(FOLLOW_56);
             rule__XRelationalExpression__Group_1_0_0_0__0__Impl();
 
             state._fsp--;
@@ -27111,23 +28392,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0__Impl"
-    // InternalSignalDSL.g:7871:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8270:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7875:1: ( ( () ) )
-            // InternalSignalDSL.g:7876:1: ( () )
+            // InternalSignalDSL.g:8274:1: ( ( () ) )
+            // InternalSignalDSL.g:8275:1: ( () )
             {
-            // InternalSignalDSL.g:7876:1: ( () )
-            // InternalSignalDSL.g:7877:2: ()
+            // InternalSignalDSL.g:8275:1: ( () )
+            // InternalSignalDSL.g:8276:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:7878:2: ()
-            // InternalSignalDSL.g:7878:3: 
+            // InternalSignalDSL.g:8277:2: ()
+            // InternalSignalDSL.g:8277:3: 
             {
             }
 
@@ -27152,14 +28433,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1"
-    // InternalSignalDSL.g:7886:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
+    // InternalSignalDSL.g:8285:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7890:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
-            // InternalSignalDSL.g:7891:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+            // InternalSignalDSL.g:8289:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalSignalDSL.g:8290:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__1__Impl();
@@ -27185,22 +28466,22 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1__Impl"
-    // InternalSignalDSL.g:7897:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
+    // InternalSignalDSL.g:8296:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7901:1: ( ( 'instanceof' ) )
-            // InternalSignalDSL.g:7902:1: ( 'instanceof' )
+            // InternalSignalDSL.g:8300:1: ( ( 'instanceof' ) )
+            // InternalSignalDSL.g:8301:1: ( 'instanceof' )
             {
-            // InternalSignalDSL.g:7902:1: ( 'instanceof' )
-            // InternalSignalDSL.g:7903:2: 'instanceof'
+            // InternalSignalDSL.g:8301:1: ( 'instanceof' )
+            // InternalSignalDSL.g:8302:2: 'instanceof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
             }
-            match(input,86,FOLLOW_2); if (state.failed) return ;
+            match(input,84,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
             }
@@ -27226,16 +28507,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0"
-    // InternalSignalDSL.g:7913:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
+    // InternalSignalDSL.g:8312:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
     public final void rule__XRelationalExpression__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7917:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
-            // InternalSignalDSL.g:7918:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            // InternalSignalDSL.g:8316:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalSignalDSL.g:8317:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XRelationalExpression__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -27264,23 +28545,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:7925:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
+    // InternalSignalDSL.g:8324:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7929:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
-            // InternalSignalDSL.g:7930:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:8328:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalSignalDSL.g:8329:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
             {
-            // InternalSignalDSL.g:7930:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
-            // InternalSignalDSL.g:7931:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalSignalDSL.g:8329:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:8330:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
             }
-            // InternalSignalDSL.g:7932:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
-            // InternalSignalDSL.g:7932:3: rule__XRelationalExpression__Group_1_1_0__0
+            // InternalSignalDSL.g:8331:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalSignalDSL.g:8331:3: rule__XRelationalExpression__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0();
@@ -27315,14 +28596,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1"
-    // InternalSignalDSL.g:7940:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:8339:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7944:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:7945:2: rule__XRelationalExpression__Group_1_1__1__Impl
+            // InternalSignalDSL.g:8343:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:8344:2: rule__XRelationalExpression__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1__1__Impl();
@@ -27348,23 +28629,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:7951:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalSignalDSL.g:8350:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7955:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
-            // InternalSignalDSL.g:7956:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:8354:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalSignalDSL.g:8355:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalSignalDSL.g:7956:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
-            // InternalSignalDSL.g:7957:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:8355:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:8356:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalSignalDSL.g:7958:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
-            // InternalSignalDSL.g:7958:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
+            // InternalSignalDSL.g:8357:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:8357:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__RightOperandAssignment_1_1_1();
@@ -27399,14 +28680,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0"
-    // InternalSignalDSL.g:7967:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
+    // InternalSignalDSL.g:8366:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
     public final void rule__XRelationalExpression__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7971:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
-            // InternalSignalDSL.g:7972:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
+            // InternalSignalDSL.g:8370:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalSignalDSL.g:8371:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0__Impl();
@@ -27432,23 +28713,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0__Impl"
-    // InternalSignalDSL.g:7978:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8377:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7982:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7983:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:8381:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8382:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7983:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
-            // InternalSignalDSL.g:7984:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:8382:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:8383:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
             }
-            // InternalSignalDSL.g:7985:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
-            // InternalSignalDSL.g:7985:3: rule__XRelationalExpression__Group_1_1_0_0__0
+            // InternalSignalDSL.g:8384:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:8384:3: rule__XRelationalExpression__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__0();
@@ -27483,16 +28764,16 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0"
-    // InternalSignalDSL.g:7994:1: rule__XRelationalExpression__Group_1_1_0_0__0 : rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 ;
+    // InternalSignalDSL.g:8393:1: rule__XRelationalExpression__Group_1_1_0_0__0 : rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7998:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
-            // InternalSignalDSL.g:7999:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            // InternalSignalDSL.g:8397:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalSignalDSL.g:8398:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
             {
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_53);
             rule__XRelationalExpression__Group_1_1_0_0__0__Impl();
 
             state._fsp--;
@@ -27521,23 +28802,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8006:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8405:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8010:1: ( ( () ) )
-            // InternalSignalDSL.g:8011:1: ( () )
+            // InternalSignalDSL.g:8409:1: ( ( () ) )
+            // InternalSignalDSL.g:8410:1: ( () )
             {
-            // InternalSignalDSL.g:8011:1: ( () )
-            // InternalSignalDSL.g:8012:2: ()
+            // InternalSignalDSL.g:8410:1: ( () )
+            // InternalSignalDSL.g:8411:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8013:2: ()
-            // InternalSignalDSL.g:8013:3: 
+            // InternalSignalDSL.g:8412:2: ()
+            // InternalSignalDSL.g:8412:3: 
             {
             }
 
@@ -27562,14 +28843,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1"
-    // InternalSignalDSL.g:8021:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8420:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8025:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8026:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
+            // InternalSignalDSL.g:8424:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8425:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__1__Impl();
@@ -27595,23 +28876,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8032:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:8431:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8036:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:8037:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:8435:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:8436:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:8037:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalSignalDSL.g:8038:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:8436:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:8437:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:8039:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
-            // InternalSignalDSL.g:8039:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
+            // InternalSignalDSL.g:8438:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:8438:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1();
@@ -27646,16 +28927,16 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0"
-    // InternalSignalDSL.g:8048:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
+    // InternalSignalDSL.g:8447:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
     public final void rule__OpCompare__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8052:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
-            // InternalSignalDSL.g:8053:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            // InternalSignalDSL.g:8451:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalSignalDSL.g:8452:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_39);
             rule__OpCompare__Group_1__0__Impl();
 
             state._fsp--;
@@ -27684,17 +28965,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0__Impl"
-    // InternalSignalDSL.g:8060:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8459:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
     public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8064:1: ( ( '<' ) )
-            // InternalSignalDSL.g:8065:1: ( '<' )
+            // InternalSignalDSL.g:8463:1: ( ( '<' ) )
+            // InternalSignalDSL.g:8464:1: ( '<' )
             {
-            // InternalSignalDSL.g:8065:1: ( '<' )
-            // InternalSignalDSL.g:8066:2: '<'
+            // InternalSignalDSL.g:8464:1: ( '<' )
+            // InternalSignalDSL.g:8465:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
@@ -27725,14 +29006,14 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1"
-    // InternalSignalDSL.g:8075:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
+    // InternalSignalDSL.g:8474:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
     public final void rule__OpCompare__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8079:1: ( rule__OpCompare__Group_1__1__Impl )
-            // InternalSignalDSL.g:8080:2: rule__OpCompare__Group_1__1__Impl
+            // InternalSignalDSL.g:8478:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalSignalDSL.g:8479:2: rule__OpCompare__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Group_1__1__Impl();
@@ -27758,17 +29039,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1__Impl"
-    // InternalSignalDSL.g:8086:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:8485:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
     public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8090:1: ( ( '=' ) )
-            // InternalSignalDSL.g:8091:1: ( '=' )
+            // InternalSignalDSL.g:8489:1: ( ( '=' ) )
+            // InternalSignalDSL.g:8490:1: ( '=' )
             {
-            // InternalSignalDSL.g:8091:1: ( '=' )
-            // InternalSignalDSL.g:8092:2: '='
+            // InternalSignalDSL.g:8490:1: ( '=' )
+            // InternalSignalDSL.g:8491:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
@@ -27799,16 +29080,16 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0"
-    // InternalSignalDSL.g:8102:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
+    // InternalSignalDSL.g:8501:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
     public final void rule__XOtherOperatorExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8106:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
-            // InternalSignalDSL.g:8107:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            // InternalSignalDSL.g:8505:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalSignalDSL.g:8506:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_57);
             rule__XOtherOperatorExpression__Group__0__Impl();
 
             state._fsp--;
@@ -27837,17 +29118,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0__Impl"
-    // InternalSignalDSL.g:8114:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    // InternalSignalDSL.g:8513:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8118:1: ( ( ruleXAdditiveExpression ) )
-            // InternalSignalDSL.g:8119:1: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:8517:1: ( ( ruleXAdditiveExpression ) )
+            // InternalSignalDSL.g:8518:1: ( ruleXAdditiveExpression )
             {
-            // InternalSignalDSL.g:8119:1: ( ruleXAdditiveExpression )
-            // InternalSignalDSL.g:8120:2: ruleXAdditiveExpression
+            // InternalSignalDSL.g:8518:1: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:8519:2: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
@@ -27882,14 +29163,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1"
-    // InternalSignalDSL.g:8129:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:8528:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8133:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
-            // InternalSignalDSL.g:8134:2: rule__XOtherOperatorExpression__Group__1__Impl
+            // InternalSignalDSL.g:8532:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalSignalDSL.g:8533:2: rule__XOtherOperatorExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__1__Impl();
@@ -27915,31 +29196,31 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1__Impl"
-    // InternalSignalDSL.g:8140:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:8539:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
     public final void rule__XOtherOperatorExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8144:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:8145:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8543:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:8544:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:8145:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:8146:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            // InternalSignalDSL.g:8544:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8545:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:8147:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
-            loop73:
+            // InternalSignalDSL.g:8546:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            loop76:
             do {
-                int alt73=2;
-                alt73 = dfa73.predict(input);
-                switch (alt73) {
+                int alt76=2;
+                alt76 = dfa76.predict(input);
+                switch (alt76) {
             	case 1 :
-            	    // InternalSignalDSL.g:8147:3: rule__XOtherOperatorExpression__Group_1__0
+            	    // InternalSignalDSL.g:8546:3: rule__XOtherOperatorExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_55);
+            	    pushFollow(FOLLOW_58);
             	    rule__XOtherOperatorExpression__Group_1__0();
 
             	    state._fsp--;
@@ -27949,7 +29230,7 @@
             	    break;
 
             	default :
-            	    break loop73;
+            	    break loop76;
                 }
             } while (true);
 
@@ -27978,16 +29259,16 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0"
-    // InternalSignalDSL.g:8156:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
+    // InternalSignalDSL.g:8555:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
     public final void rule__XOtherOperatorExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8160:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
-            // InternalSignalDSL.g:8161:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            // InternalSignalDSL.g:8559:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalSignalDSL.g:8560:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XOtherOperatorExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -28016,23 +29297,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:8168:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:8567:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8172:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:8173:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8571:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:8572:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:8173:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:8174:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8572:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8573:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:8175:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:8175:3: rule__XOtherOperatorExpression__Group_1_0__0
+            // InternalSignalDSL.g:8574:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8574:3: rule__XOtherOperatorExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0();
@@ -28067,14 +29348,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1"
-    // InternalSignalDSL.g:8183:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:8582:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8187:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:8188:2: rule__XOtherOperatorExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:8586:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:8587:2: rule__XOtherOperatorExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1__1__Impl();
@@ -28100,23 +29381,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:8194:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:8593:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8198:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:8199:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8597:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:8598:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:8199:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:8200:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8598:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8599:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:8201:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:8201:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:8600:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8600:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__RightOperandAssignment_1_1();
@@ -28151,14 +29432,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0"
-    // InternalSignalDSL.g:8210:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:8609:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8214:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:8215:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:8613:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:8614:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0__Impl();
@@ -28184,23 +29465,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8221:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8620:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8225:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8226:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8624:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8625:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8226:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:8227:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8625:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8626:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:8228:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:8228:3: rule__XOtherOperatorExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:8627:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8627:3: rule__XOtherOperatorExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__0();
@@ -28235,16 +29516,16 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:8237:1: rule__XOtherOperatorExpression__Group_1_0_0__0 : rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:8636:1: rule__XOtherOperatorExpression__Group_1_0_0__0 : rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8241:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:8242:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:8640:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:8641:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_54);
+            pushFollow(FOLLOW_57);
             rule__XOtherOperatorExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -28273,23 +29554,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8249:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8648:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8253:1: ( ( () ) )
-            // InternalSignalDSL.g:8254:1: ( () )
+            // InternalSignalDSL.g:8652:1: ( ( () ) )
+            // InternalSignalDSL.g:8653:1: ( () )
             {
-            // InternalSignalDSL.g:8254:1: ( () )
-            // InternalSignalDSL.g:8255:2: ()
+            // InternalSignalDSL.g:8653:1: ( () )
+            // InternalSignalDSL.g:8654:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8256:2: ()
-            // InternalSignalDSL.g:8256:3: 
+            // InternalSignalDSL.g:8655:2: ()
+            // InternalSignalDSL.g:8655:3: 
             {
             }
 
@@ -28314,14 +29595,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:8264:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8663:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8268:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8269:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:8667:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8668:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__1__Impl();
@@ -28347,23 +29628,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8275:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:8674:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8279:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:8280:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8678:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:8679:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:8280:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:8281:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8679:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8680:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:8282:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:8282:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:8681:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8681:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1();
@@ -28398,16 +29679,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0"
-    // InternalSignalDSL.g:8291:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
+    // InternalSignalDSL.g:8690:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
     public final void rule__OpOther__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8295:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
-            // InternalSignalDSL.g:8296:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            // InternalSignalDSL.g:8694:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalSignalDSL.g:8695:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
             {
-            pushFollow(FOLLOW_56);
+            pushFollow(FOLLOW_59);
             rule__OpOther__Group_2__0__Impl();
 
             state._fsp--;
@@ -28436,17 +29717,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0__Impl"
-    // InternalSignalDSL.g:8303:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8702:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8307:1: ( ( '>' ) )
-            // InternalSignalDSL.g:8308:1: ( '>' )
+            // InternalSignalDSL.g:8706:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8707:1: ( '>' )
             {
-            // InternalSignalDSL.g:8308:1: ( '>' )
-            // InternalSignalDSL.g:8309:2: '>'
+            // InternalSignalDSL.g:8707:1: ( '>' )
+            // InternalSignalDSL.g:8708:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
@@ -28477,14 +29758,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1"
-    // InternalSignalDSL.g:8318:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
+    // InternalSignalDSL.g:8717:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
     public final void rule__OpOther__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8322:1: ( rule__OpOther__Group_2__1__Impl )
-            // InternalSignalDSL.g:8323:2: rule__OpOther__Group_2__1__Impl
+            // InternalSignalDSL.g:8721:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalSignalDSL.g:8722:2: rule__OpOther__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_2__1__Impl();
@@ -28510,17 +29791,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1__Impl"
-    // InternalSignalDSL.g:8329:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    // InternalSignalDSL.g:8728:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
     public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8333:1: ( ( '..' ) )
-            // InternalSignalDSL.g:8334:1: ( '..' )
+            // InternalSignalDSL.g:8732:1: ( ( '..' ) )
+            // InternalSignalDSL.g:8733:1: ( '..' )
             {
-            // InternalSignalDSL.g:8334:1: ( '..' )
-            // InternalSignalDSL.g:8335:2: '..'
+            // InternalSignalDSL.g:8733:1: ( '..' )
+            // InternalSignalDSL.g:8734:2: '..'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
@@ -28551,16 +29832,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0"
-    // InternalSignalDSL.g:8345:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
+    // InternalSignalDSL.g:8744:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
     public final void rule__OpOther__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8349:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
-            // InternalSignalDSL.g:8350:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            // InternalSignalDSL.g:8748:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalSignalDSL.g:8749:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
             {
-            pushFollow(FOLLOW_57);
+            pushFollow(FOLLOW_60);
             rule__OpOther__Group_5__0__Impl();
 
             state._fsp--;
@@ -28589,17 +29870,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0__Impl"
-    // InternalSignalDSL.g:8357:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8756:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8361:1: ( ( '>' ) )
-            // InternalSignalDSL.g:8362:1: ( '>' )
+            // InternalSignalDSL.g:8760:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8761:1: ( '>' )
             {
-            // InternalSignalDSL.g:8362:1: ( '>' )
-            // InternalSignalDSL.g:8363:2: '>'
+            // InternalSignalDSL.g:8761:1: ( '>' )
+            // InternalSignalDSL.g:8762:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
@@ -28630,14 +29911,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1"
-    // InternalSignalDSL.g:8372:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
+    // InternalSignalDSL.g:8771:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
     public final void rule__OpOther__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8376:1: ( rule__OpOther__Group_5__1__Impl )
-            // InternalSignalDSL.g:8377:2: rule__OpOther__Group_5__1__Impl
+            // InternalSignalDSL.g:8775:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalSignalDSL.g:8776:2: rule__OpOther__Group_5__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5__1__Impl();
@@ -28663,23 +29944,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1__Impl"
-    // InternalSignalDSL.g:8383:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
+    // InternalSignalDSL.g:8782:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
     public final void rule__OpOther__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8387:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
-            // InternalSignalDSL.g:8388:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalSignalDSL.g:8786:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalSignalDSL.g:8787:1: ( ( rule__OpOther__Alternatives_5_1 ) )
             {
-            // InternalSignalDSL.g:8388:1: ( ( rule__OpOther__Alternatives_5_1 ) )
-            // InternalSignalDSL.g:8389:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalSignalDSL.g:8787:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalSignalDSL.g:8788:2: ( rule__OpOther__Alternatives_5_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
             }
-            // InternalSignalDSL.g:8390:2: ( rule__OpOther__Alternatives_5_1 )
-            // InternalSignalDSL.g:8390:3: rule__OpOther__Alternatives_5_1
+            // InternalSignalDSL.g:8789:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalSignalDSL.g:8789:3: rule__OpOther__Alternatives_5_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_5_1();
@@ -28714,14 +29995,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0"
-    // InternalSignalDSL.g:8399:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
+    // InternalSignalDSL.g:8798:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
     public final void rule__OpOther__Group_5_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8403:1: ( rule__OpOther__Group_5_1_0__0__Impl )
-            // InternalSignalDSL.g:8404:2: rule__OpOther__Group_5_1_0__0__Impl
+            // InternalSignalDSL.g:8802:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalSignalDSL.g:8803:2: rule__OpOther__Group_5_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0__0__Impl();
@@ -28747,23 +30028,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0__Impl"
-    // InternalSignalDSL.g:8410:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8809:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
     public final void rule__OpOther__Group_5_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8414:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8415:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalSignalDSL.g:8813:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8814:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8415:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
-            // InternalSignalDSL.g:8416:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalSignalDSL.g:8814:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalSignalDSL.g:8815:2: ( rule__OpOther__Group_5_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
             }
-            // InternalSignalDSL.g:8417:2: ( rule__OpOther__Group_5_1_0_0__0 )
-            // InternalSignalDSL.g:8417:3: rule__OpOther__Group_5_1_0_0__0
+            // InternalSignalDSL.g:8816:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalSignalDSL.g:8816:3: rule__OpOther__Group_5_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__0();
@@ -28798,16 +30079,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0"
-    // InternalSignalDSL.g:8426:1: rule__OpOther__Group_5_1_0_0__0 : rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 ;
+    // InternalSignalDSL.g:8825:1: rule__OpOther__Group_5_1_0_0__0 : rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 ;
     public final void rule__OpOther__Group_5_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8430:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
-            // InternalSignalDSL.g:8431:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            // InternalSignalDSL.g:8829:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalSignalDSL.g:8830:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
             {
-            pushFollow(FOLLOW_57);
+            pushFollow(FOLLOW_60);
             rule__OpOther__Group_5_1_0_0__0__Impl();
 
             state._fsp--;
@@ -28836,17 +30117,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8438:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8837:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8442:1: ( ( '>' ) )
-            // InternalSignalDSL.g:8443:1: ( '>' )
+            // InternalSignalDSL.g:8841:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8842:1: ( '>' )
             {
-            // InternalSignalDSL.g:8443:1: ( '>' )
-            // InternalSignalDSL.g:8444:2: '>'
+            // InternalSignalDSL.g:8842:1: ( '>' )
+            // InternalSignalDSL.g:8843:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
@@ -28877,14 +30158,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1"
-    // InternalSignalDSL.g:8453:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8852:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
     public final void rule__OpOther__Group_5_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8457:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8458:2: rule__OpOther__Group_5_1_0_0__1__Impl
+            // InternalSignalDSL.g:8856:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8857:2: rule__OpOther__Group_5_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__1__Impl();
@@ -28910,17 +30191,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8464:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8863:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8468:1: ( ( '>' ) )
-            // InternalSignalDSL.g:8469:1: ( '>' )
+            // InternalSignalDSL.g:8867:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8868:1: ( '>' )
             {
-            // InternalSignalDSL.g:8469:1: ( '>' )
-            // InternalSignalDSL.g:8470:2: '>'
+            // InternalSignalDSL.g:8868:1: ( '>' )
+            // InternalSignalDSL.g:8869:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
@@ -28951,16 +30232,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0"
-    // InternalSignalDSL.g:8480:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
+    // InternalSignalDSL.g:8879:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
     public final void rule__OpOther__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8484:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
-            // InternalSignalDSL.g:8485:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            // InternalSignalDSL.g:8883:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalSignalDSL.g:8884:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
             {
-            pushFollow(FOLLOW_58);
+            pushFollow(FOLLOW_61);
             rule__OpOther__Group_6__0__Impl();
 
             state._fsp--;
@@ -28989,17 +30270,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0__Impl"
-    // InternalSignalDSL.g:8492:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8891:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8496:1: ( ( '<' ) )
-            // InternalSignalDSL.g:8497:1: ( '<' )
+            // InternalSignalDSL.g:8895:1: ( ( '<' ) )
+            // InternalSignalDSL.g:8896:1: ( '<' )
             {
-            // InternalSignalDSL.g:8497:1: ( '<' )
-            // InternalSignalDSL.g:8498:2: '<'
+            // InternalSignalDSL.g:8896:1: ( '<' )
+            // InternalSignalDSL.g:8897:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
@@ -29030,14 +30311,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1"
-    // InternalSignalDSL.g:8507:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
+    // InternalSignalDSL.g:8906:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
     public final void rule__OpOther__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8511:1: ( rule__OpOther__Group_6__1__Impl )
-            // InternalSignalDSL.g:8512:2: rule__OpOther__Group_6__1__Impl
+            // InternalSignalDSL.g:8910:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalSignalDSL.g:8911:2: rule__OpOther__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6__1__Impl();
@@ -29063,23 +30344,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1__Impl"
-    // InternalSignalDSL.g:8518:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
+    // InternalSignalDSL.g:8917:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
     public final void rule__OpOther__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8522:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
-            // InternalSignalDSL.g:8523:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalSignalDSL.g:8921:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalSignalDSL.g:8922:1: ( ( rule__OpOther__Alternatives_6_1 ) )
             {
-            // InternalSignalDSL.g:8523:1: ( ( rule__OpOther__Alternatives_6_1 ) )
-            // InternalSignalDSL.g:8524:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalSignalDSL.g:8922:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalSignalDSL.g:8923:2: ( rule__OpOther__Alternatives_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
             }
-            // InternalSignalDSL.g:8525:2: ( rule__OpOther__Alternatives_6_1 )
-            // InternalSignalDSL.g:8525:3: rule__OpOther__Alternatives_6_1
+            // InternalSignalDSL.g:8924:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalSignalDSL.g:8924:3: rule__OpOther__Alternatives_6_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_6_1();
@@ -29114,14 +30395,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0"
-    // InternalSignalDSL.g:8534:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
+    // InternalSignalDSL.g:8933:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
     public final void rule__OpOther__Group_6_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8538:1: ( rule__OpOther__Group_6_1_0__0__Impl )
-            // InternalSignalDSL.g:8539:2: rule__OpOther__Group_6_1_0__0__Impl
+            // InternalSignalDSL.g:8937:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalSignalDSL.g:8938:2: rule__OpOther__Group_6_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0__0__Impl();
@@ -29147,23 +30428,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0__Impl"
-    // InternalSignalDSL.g:8545:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8944:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
     public final void rule__OpOther__Group_6_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8549:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8550:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalSignalDSL.g:8948:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8949:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8550:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
-            // InternalSignalDSL.g:8551:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalSignalDSL.g:8949:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalSignalDSL.g:8950:2: ( rule__OpOther__Group_6_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
             }
-            // InternalSignalDSL.g:8552:2: ( rule__OpOther__Group_6_1_0_0__0 )
-            // InternalSignalDSL.g:8552:3: rule__OpOther__Group_6_1_0_0__0
+            // InternalSignalDSL.g:8951:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalSignalDSL.g:8951:3: rule__OpOther__Group_6_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__0();
@@ -29198,16 +30479,16 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0"
-    // InternalSignalDSL.g:8561:1: rule__OpOther__Group_6_1_0_0__0 : rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 ;
+    // InternalSignalDSL.g:8960:1: rule__OpOther__Group_6_1_0_0__0 : rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 ;
     public final void rule__OpOther__Group_6_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8565:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
-            // InternalSignalDSL.g:8566:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            // InternalSignalDSL.g:8964:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalSignalDSL.g:8965:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_45);
             rule__OpOther__Group_6_1_0_0__0__Impl();
 
             state._fsp--;
@@ -29236,17 +30517,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8573:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8972:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8577:1: ( ( '<' ) )
-            // InternalSignalDSL.g:8578:1: ( '<' )
+            // InternalSignalDSL.g:8976:1: ( ( '<' ) )
+            // InternalSignalDSL.g:8977:1: ( '<' )
             {
-            // InternalSignalDSL.g:8578:1: ( '<' )
-            // InternalSignalDSL.g:8579:2: '<'
+            // InternalSignalDSL.g:8977:1: ( '<' )
+            // InternalSignalDSL.g:8978:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
@@ -29277,14 +30558,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1"
-    // InternalSignalDSL.g:8588:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8987:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
     public final void rule__OpOther__Group_6_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8592:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8593:2: rule__OpOther__Group_6_1_0_0__1__Impl
+            // InternalSignalDSL.g:8991:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8992:2: rule__OpOther__Group_6_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__1__Impl();
@@ -29310,17 +30591,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8599:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8998:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8603:1: ( ( '<' ) )
-            // InternalSignalDSL.g:8604:1: ( '<' )
+            // InternalSignalDSL.g:9002:1: ( ( '<' ) )
+            // InternalSignalDSL.g:9003:1: ( '<' )
             {
-            // InternalSignalDSL.g:8604:1: ( '<' )
-            // InternalSignalDSL.g:8605:2: '<'
+            // InternalSignalDSL.g:9003:1: ( '<' )
+            // InternalSignalDSL.g:9004:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
@@ -29351,16 +30632,16 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0"
-    // InternalSignalDSL.g:8615:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
+    // InternalSignalDSL.g:9014:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
     public final void rule__XAdditiveExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8619:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
-            // InternalSignalDSL.g:8620:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            // InternalSignalDSL.g:9018:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalSignalDSL.g:9019:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_62);
             rule__XAdditiveExpression__Group__0__Impl();
 
             state._fsp--;
@@ -29389,17 +30670,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0__Impl"
-    // InternalSignalDSL.g:8627:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    // InternalSignalDSL.g:9026:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8631:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalSignalDSL.g:8632:1: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:9030:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalSignalDSL.g:9031:1: ( ruleXMultiplicativeExpression )
             {
-            // InternalSignalDSL.g:8632:1: ( ruleXMultiplicativeExpression )
-            // InternalSignalDSL.g:8633:2: ruleXMultiplicativeExpression
+            // InternalSignalDSL.g:9031:1: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:9032:2: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
@@ -29434,14 +30715,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1"
-    // InternalSignalDSL.g:8642:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:9041:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
     public final void rule__XAdditiveExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8646:1: ( rule__XAdditiveExpression__Group__1__Impl )
-            // InternalSignalDSL.g:8647:2: rule__XAdditiveExpression__Group__1__Impl
+            // InternalSignalDSL.g:9045:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalSignalDSL.g:9046:2: rule__XAdditiveExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__1__Impl();
@@ -29467,52 +30748,52 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1__Impl"
-    // InternalSignalDSL.g:8653:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:9052:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
     public final void rule__XAdditiveExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8657:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:8658:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9056:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:9057:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:8658:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:8659:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            // InternalSignalDSL.g:9057:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9058:2: ( rule__XAdditiveExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:8660:2: ( rule__XAdditiveExpression__Group_1__0 )*
-            loop74:
+            // InternalSignalDSL.g:9059:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            loop77:
             do {
-                int alt74=2;
-                int LA74_0 = input.LA(1);
+                int alt77=2;
+                int LA77_0 = input.LA(1);
 
-                if ( (LA74_0==35) ) {
-                    int LA74_2 = input.LA(2);
+                if ( (LA77_0==35) ) {
+                    int LA77_2 = input.LA(2);
 
-                    if ( (synpred126_InternalSignalDSL()) ) {
-                        alt74=1;
+                    if ( (synpred129_InternalSignalDSL()) ) {
+                        alt77=1;
                     }
 
 
                 }
-                else if ( (LA74_0==34) ) {
-                    int LA74_3 = input.LA(2);
+                else if ( (LA77_0==34) ) {
+                    int LA77_3 = input.LA(2);
 
-                    if ( (synpred126_InternalSignalDSL()) ) {
-                        alt74=1;
+                    if ( (synpred129_InternalSignalDSL()) ) {
+                        alt77=1;
                     }
 
 
                 }
 
 
-                switch (alt74) {
+                switch (alt77) {
             	case 1 :
-            	    // InternalSignalDSL.g:8660:3: rule__XAdditiveExpression__Group_1__0
+            	    // InternalSignalDSL.g:9059:3: rule__XAdditiveExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_60);
+            	    pushFollow(FOLLOW_63);
             	    rule__XAdditiveExpression__Group_1__0();
 
             	    state._fsp--;
@@ -29522,7 +30803,7 @@
             	    break;
 
             	default :
-            	    break loop74;
+            	    break loop77;
                 }
             } while (true);
 
@@ -29551,16 +30832,16 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0"
-    // InternalSignalDSL.g:8669:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
+    // InternalSignalDSL.g:9068:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
     public final void rule__XAdditiveExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8673:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
-            // InternalSignalDSL.g:8674:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            // InternalSignalDSL.g:9072:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalSignalDSL.g:9073:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XAdditiveExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -29589,23 +30870,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:8681:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:9080:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
     public final void rule__XAdditiveExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8685:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:8686:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9084:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:9085:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:8686:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:8687:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9085:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9086:2: ( rule__XAdditiveExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:8688:2: ( rule__XAdditiveExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:8688:3: rule__XAdditiveExpression__Group_1_0__0
+            // InternalSignalDSL.g:9087:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9087:3: rule__XAdditiveExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0();
@@ -29640,14 +30921,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1"
-    // InternalSignalDSL.g:8696:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:9095:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
     public final void rule__XAdditiveExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8700:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:8701:2: rule__XAdditiveExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:9099:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:9100:2: rule__XAdditiveExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1__1__Impl();
@@ -29673,23 +30954,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:8707:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:9106:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XAdditiveExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8711:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:8712:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:9110:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:9111:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:8712:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:8713:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:9111:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:9112:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:8714:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:8714:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:9113:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:9113:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__RightOperandAssignment_1_1();
@@ -29724,14 +31005,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0"
-    // InternalSignalDSL.g:8723:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:9122:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
     public final void rule__XAdditiveExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8727:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:8728:2: rule__XAdditiveExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:9126:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:9127:2: rule__XAdditiveExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0__Impl();
@@ -29757,23 +31038,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8734:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9133:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XAdditiveExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8738:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8739:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9137:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:9138:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8739:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:8740:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9138:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9139:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:8741:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:8741:3: rule__XAdditiveExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:9140:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9140:3: rule__XAdditiveExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__0();
@@ -29808,16 +31089,16 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:8750:1: rule__XAdditiveExpression__Group_1_0_0__0 : rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:9149:1: rule__XAdditiveExpression__Group_1_0_0__0 : rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 ;
     public final void rule__XAdditiveExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8754:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:8755:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:9153:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:9154:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_59);
+            pushFollow(FOLLOW_62);
             rule__XAdditiveExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -29846,23 +31127,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8762:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9161:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAdditiveExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8766:1: ( ( () ) )
-            // InternalSignalDSL.g:8767:1: ( () )
+            // InternalSignalDSL.g:9165:1: ( ( () ) )
+            // InternalSignalDSL.g:9166:1: ( () )
             {
-            // InternalSignalDSL.g:8767:1: ( () )
-            // InternalSignalDSL.g:8768:2: ()
+            // InternalSignalDSL.g:9166:1: ( () )
+            // InternalSignalDSL.g:9167:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8769:2: ()
-            // InternalSignalDSL.g:8769:3: 
+            // InternalSignalDSL.g:9168:2: ()
+            // InternalSignalDSL.g:9168:3: 
             {
             }
 
@@ -29887,14 +31168,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:8777:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:9176:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
     public final void rule__XAdditiveExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8781:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8782:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:9180:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:9181:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__1__Impl();
@@ -29920,23 +31201,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8788:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:9187:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XAdditiveExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8792:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:8793:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:9191:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:9192:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:8793:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:8794:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:9192:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:9193:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:8795:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:8795:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:9194:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:9194:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__FeatureAssignment_1_0_0_1();
@@ -29971,16 +31252,16 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0"
-    // InternalSignalDSL.g:8804:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
+    // InternalSignalDSL.g:9203:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
     public final void rule__XMultiplicativeExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8808:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
-            // InternalSignalDSL.g:8809:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            // InternalSignalDSL.g:9207:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalSignalDSL.g:9208:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
             {
-            pushFollow(FOLLOW_61);
+            pushFollow(FOLLOW_64);
             rule__XMultiplicativeExpression__Group__0__Impl();
 
             state._fsp--;
@@ -30009,17 +31290,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0__Impl"
-    // InternalSignalDSL.g:8816:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    // InternalSignalDSL.g:9215:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8820:1: ( ( ruleXUnaryOperation ) )
-            // InternalSignalDSL.g:8821:1: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:9219:1: ( ( ruleXUnaryOperation ) )
+            // InternalSignalDSL.g:9220:1: ( ruleXUnaryOperation )
             {
-            // InternalSignalDSL.g:8821:1: ( ruleXUnaryOperation )
-            // InternalSignalDSL.g:8822:2: ruleXUnaryOperation
+            // InternalSignalDSL.g:9220:1: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:9221:2: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
@@ -30054,14 +31335,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1"
-    // InternalSignalDSL.g:8831:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:9230:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8835:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
-            // InternalSignalDSL.g:8836:2: rule__XMultiplicativeExpression__Group__1__Impl
+            // InternalSignalDSL.g:9234:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalSignalDSL.g:9235:2: rule__XMultiplicativeExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__1__Impl();
@@ -30087,32 +31368,32 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1__Impl"
-    // InternalSignalDSL.g:8842:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:9241:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
     public final void rule__XMultiplicativeExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8846:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:8847:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9245:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:9246:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:8847:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:8848:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            // InternalSignalDSL.g:9246:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9247:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:8849:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
-            loop75:
+            // InternalSignalDSL.g:9248:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            loop78:
             do {
-                int alt75=2;
+                int alt78=2;
                 switch ( input.LA(1) ) {
                 case 36:
                     {
-                    int LA75_2 = input.LA(2);
+                    int LA78_2 = input.LA(2);
 
-                    if ( (synpred127_InternalSignalDSL()) ) {
-                        alt75=1;
+                    if ( (synpred130_InternalSignalDSL()) ) {
+                        alt78=1;
                     }
 
 
@@ -30120,10 +31401,10 @@
                     break;
                 case 37:
                     {
-                    int LA75_3 = input.LA(2);
+                    int LA78_3 = input.LA(2);
 
-                    if ( (synpred127_InternalSignalDSL()) ) {
-                        alt75=1;
+                    if ( (synpred130_InternalSignalDSL()) ) {
+                        alt78=1;
                     }
 
 
@@ -30131,10 +31412,10 @@
                     break;
                 case 38:
                     {
-                    int LA75_4 = input.LA(2);
+                    int LA78_4 = input.LA(2);
 
-                    if ( (synpred127_InternalSignalDSL()) ) {
-                        alt75=1;
+                    if ( (synpred130_InternalSignalDSL()) ) {
+                        alt78=1;
                     }
 
 
@@ -30142,10 +31423,10 @@
                     break;
                 case 39:
                     {
-                    int LA75_5 = input.LA(2);
+                    int LA78_5 = input.LA(2);
 
-                    if ( (synpred127_InternalSignalDSL()) ) {
-                        alt75=1;
+                    if ( (synpred130_InternalSignalDSL()) ) {
+                        alt78=1;
                     }
 
 
@@ -30154,11 +31435,11 @@
 
                 }
 
-                switch (alt75) {
+                switch (alt78) {
             	case 1 :
-            	    // InternalSignalDSL.g:8849:3: rule__XMultiplicativeExpression__Group_1__0
+            	    // InternalSignalDSL.g:9248:3: rule__XMultiplicativeExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_62);
+            	    pushFollow(FOLLOW_65);
             	    rule__XMultiplicativeExpression__Group_1__0();
 
             	    state._fsp--;
@@ -30168,7 +31449,7 @@
             	    break;
 
             	default :
-            	    break loop75;
+            	    break loop78;
                 }
             } while (true);
 
@@ -30197,16 +31478,16 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0"
-    // InternalSignalDSL.g:8858:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
+    // InternalSignalDSL.g:9257:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
     public final void rule__XMultiplicativeExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8862:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
-            // InternalSignalDSL.g:8863:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            // InternalSignalDSL.g:9261:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalSignalDSL.g:9262:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XMultiplicativeExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -30235,23 +31516,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:8870:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:9269:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8874:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:8875:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9273:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:9274:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:8875:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:8876:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9274:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9275:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:8877:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:8877:3: rule__XMultiplicativeExpression__Group_1_0__0
+            // InternalSignalDSL.g:9276:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9276:3: rule__XMultiplicativeExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0();
@@ -30286,14 +31567,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1"
-    // InternalSignalDSL.g:8885:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:9284:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8889:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:8890:2: rule__XMultiplicativeExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:9288:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:9289:2: rule__XMultiplicativeExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1__1__Impl();
@@ -30319,23 +31600,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:8896:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:9295:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8900:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:8901:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:9299:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:9300:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:8901:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:8902:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:9300:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:9301:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:8903:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:8903:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:9302:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:9302:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__RightOperandAssignment_1_1();
@@ -30370,14 +31651,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0"
-    // InternalSignalDSL.g:8912:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:9311:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8916:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:8917:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:9315:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:9316:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0__Impl();
@@ -30403,23 +31684,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8923:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9322:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8927:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8928:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9326:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:9327:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8928:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:8929:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9327:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9328:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:8930:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:8930:3: rule__XMultiplicativeExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:9329:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9329:3: rule__XMultiplicativeExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__0();
@@ -30454,16 +31735,16 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:8939:1: rule__XMultiplicativeExpression__Group_1_0_0__0 : rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:9338:1: rule__XMultiplicativeExpression__Group_1_0_0__0 : rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8943:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:8944:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:9342:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:9343:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_61);
+            pushFollow(FOLLOW_64);
             rule__XMultiplicativeExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -30492,23 +31773,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8951:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9350:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8955:1: ( ( () ) )
-            // InternalSignalDSL.g:8956:1: ( () )
+            // InternalSignalDSL.g:9354:1: ( ( () ) )
+            // InternalSignalDSL.g:9355:1: ( () )
             {
-            // InternalSignalDSL.g:8956:1: ( () )
-            // InternalSignalDSL.g:8957:2: ()
+            // InternalSignalDSL.g:9355:1: ( () )
+            // InternalSignalDSL.g:9356:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8958:2: ()
-            // InternalSignalDSL.g:8958:3: 
+            // InternalSignalDSL.g:9357:2: ()
+            // InternalSignalDSL.g:9357:3: 
             {
             }
 
@@ -30533,14 +31814,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:8966:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:9365:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8970:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8971:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:9369:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:9370:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__1__Impl();
@@ -30566,23 +31847,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8977:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:9376:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8981:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:8982:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:9380:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:9381:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:8982:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:8983:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:9381:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:9382:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:8984:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:8984:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:9383:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:9383:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1();
@@ -30617,16 +31898,16 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0"
-    // InternalSignalDSL.g:8993:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
+    // InternalSignalDSL.g:9392:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
     public final void rule__XUnaryOperation__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8997:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
-            // InternalSignalDSL.g:8998:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            // InternalSignalDSL.g:9396:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalSignalDSL.g:9397:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
             {
-            pushFollow(FOLLOW_63);
+            pushFollow(FOLLOW_66);
             rule__XUnaryOperation__Group_0__0__Impl();
 
             state._fsp--;
@@ -30655,23 +31936,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0__Impl"
-    // InternalSignalDSL.g:9005:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9404:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
     public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9009:1: ( ( () ) )
-            // InternalSignalDSL.g:9010:1: ( () )
+            // InternalSignalDSL.g:9408:1: ( ( () ) )
+            // InternalSignalDSL.g:9409:1: ( () )
             {
-            // InternalSignalDSL.g:9010:1: ( () )
-            // InternalSignalDSL.g:9011:2: ()
+            // InternalSignalDSL.g:9409:1: ( () )
+            // InternalSignalDSL.g:9410:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
             }
-            // InternalSignalDSL.g:9012:2: ()
-            // InternalSignalDSL.g:9012:3: 
+            // InternalSignalDSL.g:9411:2: ()
+            // InternalSignalDSL.g:9411:3: 
             {
             }
 
@@ -30696,16 +31977,16 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1"
-    // InternalSignalDSL.g:9020:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
+    // InternalSignalDSL.g:9419:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
     public final void rule__XUnaryOperation__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9024:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
-            // InternalSignalDSL.g:9025:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            // InternalSignalDSL.g:9423:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalSignalDSL.g:9424:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XUnaryOperation__Group_0__1__Impl();
 
             state._fsp--;
@@ -30734,23 +32015,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1__Impl"
-    // InternalSignalDSL.g:9032:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
+    // InternalSignalDSL.g:9431:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
     public final void rule__XUnaryOperation__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9036:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
-            // InternalSignalDSL.g:9037:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:9435:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalSignalDSL.g:9436:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
             {
-            // InternalSignalDSL.g:9037:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
-            // InternalSignalDSL.g:9038:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:9436:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:9437:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalSignalDSL.g:9039:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
-            // InternalSignalDSL.g:9039:3: rule__XUnaryOperation__FeatureAssignment_0_1
+            // InternalSignalDSL.g:9438:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:9438:3: rule__XUnaryOperation__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__FeatureAssignment_0_1();
@@ -30785,14 +32066,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2"
-    // InternalSignalDSL.g:9047:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
+    // InternalSignalDSL.g:9446:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
     public final void rule__XUnaryOperation__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9051:1: ( rule__XUnaryOperation__Group_0__2__Impl )
-            // InternalSignalDSL.g:9052:2: rule__XUnaryOperation__Group_0__2__Impl
+            // InternalSignalDSL.g:9450:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalSignalDSL.g:9451:2: rule__XUnaryOperation__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Group_0__2__Impl();
@@ -30818,23 +32099,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2__Impl"
-    // InternalSignalDSL.g:9058:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
+    // InternalSignalDSL.g:9457:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
     public final void rule__XUnaryOperation__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9062:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
-            // InternalSignalDSL.g:9063:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalSignalDSL.g:9461:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalSignalDSL.g:9462:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
             {
-            // InternalSignalDSL.g:9063:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
-            // InternalSignalDSL.g:9064:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalSignalDSL.g:9462:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalSignalDSL.g:9463:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
             }
-            // InternalSignalDSL.g:9065:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
-            // InternalSignalDSL.g:9065:3: rule__XUnaryOperation__OperandAssignment_0_2
+            // InternalSignalDSL.g:9464:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalSignalDSL.g:9464:3: rule__XUnaryOperation__OperandAssignment_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__OperandAssignment_0_2();
@@ -30869,16 +32150,16 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0"
-    // InternalSignalDSL.g:9074:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
+    // InternalSignalDSL.g:9473:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
     public final void rule__XCastedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9078:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
-            // InternalSignalDSL.g:9079:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            // InternalSignalDSL.g:9477:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalSignalDSL.g:9478:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
             {
-            pushFollow(FOLLOW_64);
+            pushFollow(FOLLOW_67);
             rule__XCastedExpression__Group__0__Impl();
 
             state._fsp--;
@@ -30907,17 +32188,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0__Impl"
-    // InternalSignalDSL.g:9086:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    // InternalSignalDSL.g:9485:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
     public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9090:1: ( ( ruleXPostfixOperation ) )
-            // InternalSignalDSL.g:9091:1: ( ruleXPostfixOperation )
+            // InternalSignalDSL.g:9489:1: ( ( ruleXPostfixOperation ) )
+            // InternalSignalDSL.g:9490:1: ( ruleXPostfixOperation )
             {
-            // InternalSignalDSL.g:9091:1: ( ruleXPostfixOperation )
-            // InternalSignalDSL.g:9092:2: ruleXPostfixOperation
+            // InternalSignalDSL.g:9490:1: ( ruleXPostfixOperation )
+            // InternalSignalDSL.g:9491:2: ruleXPostfixOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
@@ -30952,14 +32233,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1"
-    // InternalSignalDSL.g:9101:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:9500:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
     public final void rule__XCastedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9105:1: ( rule__XCastedExpression__Group__1__Impl )
-            // InternalSignalDSL.g:9106:2: rule__XCastedExpression__Group__1__Impl
+            // InternalSignalDSL.g:9504:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalSignalDSL.g:9505:2: rule__XCastedExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__1__Impl();
@@ -30985,43 +32266,43 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1__Impl"
-    // InternalSignalDSL.g:9112:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:9511:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
     public final void rule__XCastedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9116:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:9117:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9515:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:9516:1: ( ( rule__XCastedExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:9117:1: ( ( rule__XCastedExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:9118:2: ( rule__XCastedExpression__Group_1__0 )*
+            // InternalSignalDSL.g:9516:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9517:2: ( rule__XCastedExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:9119:2: ( rule__XCastedExpression__Group_1__0 )*
-            loop76:
+            // InternalSignalDSL.g:9518:2: ( rule__XCastedExpression__Group_1__0 )*
+            loop79:
             do {
-                int alt76=2;
-                int LA76_0 = input.LA(1);
+                int alt79=2;
+                int LA79_0 = input.LA(1);
 
-                if ( (LA76_0==87) ) {
-                    int LA76_2 = input.LA(2);
+                if ( (LA79_0==85) ) {
+                    int LA79_2 = input.LA(2);
 
-                    if ( (synpred128_InternalSignalDSL()) ) {
-                        alt76=1;
+                    if ( (synpred131_InternalSignalDSL()) ) {
+                        alt79=1;
                     }
 
 
                 }
 
 
-                switch (alt76) {
+                switch (alt79) {
             	case 1 :
-            	    // InternalSignalDSL.g:9119:3: rule__XCastedExpression__Group_1__0
+            	    // InternalSignalDSL.g:9518:3: rule__XCastedExpression__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_65);
+            	    pushFollow(FOLLOW_68);
             	    rule__XCastedExpression__Group_1__0();
 
             	    state._fsp--;
@@ -31031,7 +32312,7 @@
             	    break;
 
             	default :
-            	    break loop76;
+            	    break loop79;
                 }
             } while (true);
 
@@ -31060,16 +32341,16 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0"
-    // InternalSignalDSL.g:9128:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
+    // InternalSignalDSL.g:9527:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
     public final void rule__XCastedExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9132:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
-            // InternalSignalDSL.g:9133:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            // InternalSignalDSL.g:9531:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalSignalDSL.g:9532:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XCastedExpression__Group_1__0__Impl();
 
             state._fsp--;
@@ -31098,23 +32379,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:9140:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:9539:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
     public final void rule__XCastedExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9144:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:9145:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9543:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:9544:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:9145:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:9146:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9544:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9545:2: ( rule__XCastedExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:9147:2: ( rule__XCastedExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:9147:3: rule__XCastedExpression__Group_1_0__0
+            // InternalSignalDSL.g:9546:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9546:3: rule__XCastedExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0();
@@ -31149,14 +32430,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1"
-    // InternalSignalDSL.g:9155:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:9554:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
     public final void rule__XCastedExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9159:1: ( rule__XCastedExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:9160:2: rule__XCastedExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:9558:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:9559:2: rule__XCastedExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1__1__Impl();
@@ -31182,23 +32463,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:9166:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:9565:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
     public final void rule__XCastedExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9170:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:9171:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalSignalDSL.g:9569:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:9570:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:9171:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
-            // InternalSignalDSL.g:9172:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalSignalDSL.g:9570:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalSignalDSL.g:9571:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:9173:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
-            // InternalSignalDSL.g:9173:3: rule__XCastedExpression__TypeAssignment_1_1
+            // InternalSignalDSL.g:9572:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalSignalDSL.g:9572:3: rule__XCastedExpression__TypeAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__TypeAssignment_1_1();
@@ -31233,14 +32514,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0"
-    // InternalSignalDSL.g:9182:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:9581:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
     public final void rule__XCastedExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9186:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:9187:2: rule__XCastedExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:9585:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:9586:2: rule__XCastedExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0__Impl();
@@ -31266,23 +32547,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:9193:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9592:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XCastedExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9197:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:9198:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9596:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:9597:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:9198:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:9199:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9597:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9598:2: ( rule__XCastedExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:9200:2: ( rule__XCastedExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:9200:3: rule__XCastedExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:9599:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9599:3: rule__XCastedExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__0();
@@ -31317,16 +32598,16 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:9209:1: rule__XCastedExpression__Group_1_0_0__0 : rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:9608:1: rule__XCastedExpression__Group_1_0_0__0 : rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 ;
     public final void rule__XCastedExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9213:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:9214:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:9612:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:9613:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_64);
+            pushFollow(FOLLOW_67);
             rule__XCastedExpression__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -31355,23 +32636,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:9221:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9620:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XCastedExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9225:1: ( ( () ) )
-            // InternalSignalDSL.g:9226:1: ( () )
+            // InternalSignalDSL.g:9624:1: ( ( () ) )
+            // InternalSignalDSL.g:9625:1: ( () )
             {
-            // InternalSignalDSL.g:9226:1: ( () )
-            // InternalSignalDSL.g:9227:2: ()
+            // InternalSignalDSL.g:9625:1: ( () )
+            // InternalSignalDSL.g:9626:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:9228:2: ()
-            // InternalSignalDSL.g:9228:3: 
+            // InternalSignalDSL.g:9627:2: ()
+            // InternalSignalDSL.g:9627:3: 
             {
             }
 
@@ -31396,14 +32677,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:9236:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:9635:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
     public final void rule__XCastedExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9240:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:9241:2: rule__XCastedExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:9639:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:9640:2: rule__XCastedExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__1__Impl();
@@ -31429,22 +32710,22 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:9247:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
+    // InternalSignalDSL.g:9646:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
     public final void rule__XCastedExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9251:1: ( ( 'as' ) )
-            // InternalSignalDSL.g:9252:1: ( 'as' )
+            // InternalSignalDSL.g:9650:1: ( ( 'as' ) )
+            // InternalSignalDSL.g:9651:1: ( 'as' )
             {
-            // InternalSignalDSL.g:9252:1: ( 'as' )
-            // InternalSignalDSL.g:9253:2: 'as'
+            // InternalSignalDSL.g:9651:1: ( 'as' )
+            // InternalSignalDSL.g:9652:2: 'as'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
             }
-            match(input,87,FOLLOW_2); if (state.failed) return ;
+            match(input,85,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
             }
@@ -31470,16 +32751,16 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0"
-    // InternalSignalDSL.g:9263:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
+    // InternalSignalDSL.g:9662:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
     public final void rule__XPostfixOperation__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9267:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
-            // InternalSignalDSL.g:9268:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            // InternalSignalDSL.g:9666:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalSignalDSL.g:9667:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
             {
-            pushFollow(FOLLOW_66);
+            pushFollow(FOLLOW_69);
             rule__XPostfixOperation__Group__0__Impl();
 
             state._fsp--;
@@ -31508,17 +32789,17 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0__Impl"
-    // InternalSignalDSL.g:9275:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    // InternalSignalDSL.g:9674:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
     public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9279:1: ( ( ruleXMemberFeatureCall ) )
-            // InternalSignalDSL.g:9280:1: ( ruleXMemberFeatureCall )
+            // InternalSignalDSL.g:9678:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalSignalDSL.g:9679:1: ( ruleXMemberFeatureCall )
             {
-            // InternalSignalDSL.g:9280:1: ( ruleXMemberFeatureCall )
-            // InternalSignalDSL.g:9281:2: ruleXMemberFeatureCall
+            // InternalSignalDSL.g:9679:1: ( ruleXMemberFeatureCall )
+            // InternalSignalDSL.g:9680:2: ruleXMemberFeatureCall
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
@@ -31553,14 +32834,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1"
-    // InternalSignalDSL.g:9290:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    // InternalSignalDSL.g:9689:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
     public final void rule__XPostfixOperation__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9294:1: ( rule__XPostfixOperation__Group__1__Impl )
-            // InternalSignalDSL.g:9295:2: rule__XPostfixOperation__Group__1__Impl
+            // InternalSignalDSL.g:9693:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalSignalDSL.g:9694:2: rule__XPostfixOperation__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__1__Impl();
@@ -31586,42 +32867,42 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1__Impl"
-    // InternalSignalDSL.g:9301:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:9700:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
     public final void rule__XPostfixOperation__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9305:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
-            // InternalSignalDSL.g:9306:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalSignalDSL.g:9704:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalSignalDSL.g:9705:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:9306:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
-            // InternalSignalDSL.g:9307:2: ( rule__XPostfixOperation__Group_1__0 )?
+            // InternalSignalDSL.g:9705:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalSignalDSL.g:9706:2: ( rule__XPostfixOperation__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:9308:2: ( rule__XPostfixOperation__Group_1__0 )?
-            int alt77=2;
-            int LA77_0 = input.LA(1);
+            // InternalSignalDSL.g:9707:2: ( rule__XPostfixOperation__Group_1__0 )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
 
-            if ( (LA77_0==41) ) {
-                int LA77_1 = input.LA(2);
+            if ( (LA80_0==41) ) {
+                int LA80_1 = input.LA(2);
 
-                if ( (synpred129_InternalSignalDSL()) ) {
-                    alt77=1;
+                if ( (synpred132_InternalSignalDSL()) ) {
+                    alt80=1;
                 }
             }
-            else if ( (LA77_0==42) ) {
-                int LA77_2 = input.LA(2);
+            else if ( (LA80_0==42) ) {
+                int LA80_2 = input.LA(2);
 
-                if ( (synpred129_InternalSignalDSL()) ) {
-                    alt77=1;
+                if ( (synpred132_InternalSignalDSL()) ) {
+                    alt80=1;
                 }
             }
-            switch (alt77) {
+            switch (alt80) {
                 case 1 :
-                    // InternalSignalDSL.g:9308:3: rule__XPostfixOperation__Group_1__0
+                    // InternalSignalDSL.g:9707:3: rule__XPostfixOperation__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XPostfixOperation__Group_1__0();
@@ -31659,14 +32940,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0"
-    // InternalSignalDSL.g:9317:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
+    // InternalSignalDSL.g:9716:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
     public final void rule__XPostfixOperation__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9321:1: ( rule__XPostfixOperation__Group_1__0__Impl )
-            // InternalSignalDSL.g:9322:2: rule__XPostfixOperation__Group_1__0__Impl
+            // InternalSignalDSL.g:9720:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalSignalDSL.g:9721:2: rule__XPostfixOperation__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1__0__Impl();
@@ -31692,23 +32973,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0__Impl"
-    // InternalSignalDSL.g:9328:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:9727:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
     public final void rule__XPostfixOperation__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9332:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:9333:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9731:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:9732:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:9333:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
-            // InternalSignalDSL.g:9334:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalSignalDSL.g:9732:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9733:2: ( rule__XPostfixOperation__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:9335:2: ( rule__XPostfixOperation__Group_1_0__0 )
-            // InternalSignalDSL.g:9335:3: rule__XPostfixOperation__Group_1_0__0
+            // InternalSignalDSL.g:9734:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalSignalDSL.g:9734:3: rule__XPostfixOperation__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__0();
@@ -31743,16 +33024,16 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0"
-    // InternalSignalDSL.g:9344:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
+    // InternalSignalDSL.g:9743:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
     public final void rule__XPostfixOperation__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9348:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
-            // InternalSignalDSL.g:9349:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            // InternalSignalDSL.g:9747:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalSignalDSL.g:9748:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
             {
-            pushFollow(FOLLOW_66);
+            pushFollow(FOLLOW_69);
             rule__XPostfixOperation__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -31781,23 +33062,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:9356:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9755:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
     public final void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9360:1: ( ( () ) )
-            // InternalSignalDSL.g:9361:1: ( () )
+            // InternalSignalDSL.g:9759:1: ( ( () ) )
+            // InternalSignalDSL.g:9760:1: ( () )
             {
-            // InternalSignalDSL.g:9361:1: ( () )
-            // InternalSignalDSL.g:9362:2: ()
+            // InternalSignalDSL.g:9760:1: ( () )
+            // InternalSignalDSL.g:9761:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
             }
-            // InternalSignalDSL.g:9363:2: ()
-            // InternalSignalDSL.g:9363:3: 
+            // InternalSignalDSL.g:9762:2: ()
+            // InternalSignalDSL.g:9762:3: 
             {
             }
 
@@ -31822,14 +33103,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1"
-    // InternalSignalDSL.g:9371:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:9770:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
     public final void rule__XPostfixOperation__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9375:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:9376:2: rule__XPostfixOperation__Group_1_0__1__Impl
+            // InternalSignalDSL.g:9774:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:9775:2: rule__XPostfixOperation__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__1__Impl();
@@ -31855,23 +33136,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:9382:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:9781:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
     public final void rule__XPostfixOperation__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9386:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:9387:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9785:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:9786:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:9387:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:9388:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalSignalDSL.g:9786:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9787:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:9389:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
-            // InternalSignalDSL.g:9389:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
+            // InternalSignalDSL.g:9788:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalSignalDSL.g:9788:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__FeatureAssignment_1_0_1();
@@ -31906,16 +33187,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0"
-    // InternalSignalDSL.g:9398:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
+    // InternalSignalDSL.g:9797:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
     public final void rule__XMemberFeatureCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9402:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
-            // InternalSignalDSL.g:9403:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            // InternalSignalDSL.g:9801:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalSignalDSL.g:9802:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
             {
-            pushFollow(FOLLOW_67);
+            pushFollow(FOLLOW_70);
             rule__XMemberFeatureCall__Group__0__Impl();
 
             state._fsp--;
@@ -31944,17 +33225,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0__Impl"
-    // InternalSignalDSL.g:9410:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    // InternalSignalDSL.g:9809:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
     public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9414:1: ( ( ruleXPrimaryExpression ) )
-            // InternalSignalDSL.g:9415:1: ( ruleXPrimaryExpression )
+            // InternalSignalDSL.g:9813:1: ( ( ruleXPrimaryExpression ) )
+            // InternalSignalDSL.g:9814:1: ( ruleXPrimaryExpression )
             {
-            // InternalSignalDSL.g:9415:1: ( ruleXPrimaryExpression )
-            // InternalSignalDSL.g:9416:2: ruleXPrimaryExpression
+            // InternalSignalDSL.g:9814:1: ( ruleXPrimaryExpression )
+            // InternalSignalDSL.g:9815:2: ruleXPrimaryExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
@@ -31989,14 +33270,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1"
-    // InternalSignalDSL.g:9425:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    // InternalSignalDSL.g:9824:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
     public final void rule__XMemberFeatureCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9429:1: ( rule__XMemberFeatureCall__Group__1__Impl )
-            // InternalSignalDSL.g:9430:2: rule__XMemberFeatureCall__Group__1__Impl
+            // InternalSignalDSL.g:9828:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalSignalDSL.g:9829:2: rule__XMemberFeatureCall__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__1__Impl();
@@ -32022,32 +33303,43 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1__Impl"
-    // InternalSignalDSL.g:9436:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    // InternalSignalDSL.g:9835:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
     public final void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9440:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
-            // InternalSignalDSL.g:9441:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalSignalDSL.g:9839:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalSignalDSL.g:9840:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
             {
-            // InternalSignalDSL.g:9441:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
-            // InternalSignalDSL.g:9442:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            // InternalSignalDSL.g:9840:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalSignalDSL.g:9841:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:9443:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
-            loop78:
+            // InternalSignalDSL.g:9842:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            loop81:
             do {
-                int alt78=2;
+                int alt81=2;
                 switch ( input.LA(1) ) {
                 case 43:
                     {
-                    int LA78_2 = input.LA(2);
+                    int LA81_2 = input.LA(2);
 
-                    if ( (synpred130_InternalSignalDSL()) ) {
-                        alt78=1;
+                    if ( (synpred133_InternalSignalDSL()) ) {
+                        alt81=1;
+                    }
+
+
+                    }
+                    break;
+                case 107:
+                    {
+                    int LA81_3 = input.LA(2);
+
+                    if ( (synpred133_InternalSignalDSL()) ) {
+                        alt81=1;
                     }
 
 
@@ -32055,21 +33347,10 @@
                     break;
                 case 108:
                     {
-                    int LA78_3 = input.LA(2);
+                    int LA81_4 = input.LA(2);
 
-                    if ( (synpred130_InternalSignalDSL()) ) {
-                        alt78=1;
-                    }
-
-
-                    }
-                    break;
-                case 109:
-                    {
-                    int LA78_4 = input.LA(2);
-
-                    if ( (synpred130_InternalSignalDSL()) ) {
-                        alt78=1;
+                    if ( (synpred133_InternalSignalDSL()) ) {
+                        alt81=1;
                     }
 
 
@@ -32078,11 +33359,11 @@
 
                 }
 
-                switch (alt78) {
+                switch (alt81) {
             	case 1 :
-            	    // InternalSignalDSL.g:9443:3: rule__XMemberFeatureCall__Alternatives_1
+            	    // InternalSignalDSL.g:9842:3: rule__XMemberFeatureCall__Alternatives_1
             	    {
-            	    pushFollow(FOLLOW_68);
+            	    pushFollow(FOLLOW_71);
             	    rule__XMemberFeatureCall__Alternatives_1();
 
             	    state._fsp--;
@@ -32092,7 +33373,7 @@
             	    break;
 
             	default :
-            	    break loop78;
+            	    break loop81;
                 }
             } while (true);
 
@@ -32121,16 +33402,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0"
-    // InternalSignalDSL.g:9452:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
+    // InternalSignalDSL.g:9851:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9456:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
-            // InternalSignalDSL.g:9457:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            // InternalSignalDSL.g:9855:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalSignalDSL.g:9856:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XMemberFeatureCall__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -32159,23 +33440,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:9464:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9863:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9468:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:9469:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9867:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:9868:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:9469:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:9470:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9868:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9869:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:9471:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
-            // InternalSignalDSL.g:9471:3: rule__XMemberFeatureCall__Group_1_0_0__0
+            // InternalSignalDSL.g:9870:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9870:3: rule__XMemberFeatureCall__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0();
@@ -32210,14 +33491,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1"
-    // InternalSignalDSL.g:9479:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:9878:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9483:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:9484:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
+            // InternalSignalDSL.g:9882:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:9883:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0__1__Impl();
@@ -32243,23 +33524,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:9490:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:9889:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9494:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:9495:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9893:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:9894:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:9495:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:9496:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalSignalDSL.g:9894:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9895:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:9497:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
-            // InternalSignalDSL.g:9497:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
+            // InternalSignalDSL.g:9896:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalSignalDSL.g:9896:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ValueAssignment_1_0_1();
@@ -32294,14 +33575,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0"
-    // InternalSignalDSL.g:9506:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
+    // InternalSignalDSL.g:9905:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9510:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
-            // InternalSignalDSL.g:9511:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
+            // InternalSignalDSL.g:9909:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalSignalDSL.g:9910:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0__Impl();
@@ -32327,23 +33608,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:9517:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9916:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9521:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:9522:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:9920:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:9921:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:9522:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
-            // InternalSignalDSL.g:9523:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:9921:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:9922:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:9524:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
-            // InternalSignalDSL.g:9524:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
+            // InternalSignalDSL.g:9923:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:9923:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__0();
@@ -32378,16 +33659,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0"
-    // InternalSignalDSL.g:9533:1: rule__XMemberFeatureCall__Group_1_0_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 ;
+    // InternalSignalDSL.g:9932:1: rule__XMemberFeatureCall__Group_1_0_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9537:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
-            // InternalSignalDSL.g:9538:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            // InternalSignalDSL.g:9936:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalSignalDSL.g:9937:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
             {
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_72);
             rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl();
 
             state._fsp--;
@@ -32416,23 +33697,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl"
-    // InternalSignalDSL.g:9545:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9944:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9549:1: ( ( () ) )
-            // InternalSignalDSL.g:9550:1: ( () )
+            // InternalSignalDSL.g:9948:1: ( ( () ) )
+            // InternalSignalDSL.g:9949:1: ( () )
             {
-            // InternalSignalDSL.g:9550:1: ( () )
-            // InternalSignalDSL.g:9551:2: ()
+            // InternalSignalDSL.g:9949:1: ( () )
+            // InternalSignalDSL.g:9950:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:9552:2: ()
-            // InternalSignalDSL.g:9552:3: 
+            // InternalSignalDSL.g:9951:2: ()
+            // InternalSignalDSL.g:9951:3: 
             {
             }
 
@@ -32457,16 +33738,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1"
-    // InternalSignalDSL.g:9560:1: rule__XMemberFeatureCall__Group_1_0_0_0__1 : rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 ;
+    // InternalSignalDSL.g:9959:1: rule__XMemberFeatureCall__Group_1_0_0_0__1 : rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9564:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
-            // InternalSignalDSL.g:9565:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            // InternalSignalDSL.g:9963:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalSignalDSL.g:9964:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
             {
-            pushFollow(FOLLOW_40);
+            pushFollow(FOLLOW_43);
             rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl();
 
             state._fsp--;
@@ -32495,23 +33776,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl"
-    // InternalSignalDSL.g:9572:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
+    // InternalSignalDSL.g:9971:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9576:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
-            // InternalSignalDSL.g:9577:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalSignalDSL.g:9975:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalSignalDSL.g:9976:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
             {
-            // InternalSignalDSL.g:9577:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
-            // InternalSignalDSL.g:9578:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalSignalDSL.g:9976:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalSignalDSL.g:9977:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
             }
-            // InternalSignalDSL.g:9579:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
-            // InternalSignalDSL.g:9579:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+            // InternalSignalDSL.g:9978:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalSignalDSL.g:9978:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_0_0_0_1();
@@ -32546,16 +33827,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2"
-    // InternalSignalDSL.g:9587:1: rule__XMemberFeatureCall__Group_1_0_0_0__2 : rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 ;
+    // InternalSignalDSL.g:9986:1: rule__XMemberFeatureCall__Group_1_0_0_0__2 : rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9591:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
-            // InternalSignalDSL.g:9592:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            // InternalSignalDSL.g:9990:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalSignalDSL.g:9991:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_39);
             rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl();
 
             state._fsp--;
@@ -32584,23 +33865,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl"
-    // InternalSignalDSL.g:9599:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
+    // InternalSignalDSL.g:9998:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9603:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
-            // InternalSignalDSL.g:9604:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalSignalDSL.g:10002:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalSignalDSL.g:10003:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
             {
-            // InternalSignalDSL.g:9604:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
-            // InternalSignalDSL.g:9605:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalSignalDSL.g:10003:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalSignalDSL.g:10004:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
             }
-            // InternalSignalDSL.g:9606:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
-            // InternalSignalDSL.g:9606:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
+            // InternalSignalDSL.g:10005:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalSignalDSL.g:10005:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2();
@@ -32635,14 +33916,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3"
-    // InternalSignalDSL.g:9614:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
+    // InternalSignalDSL.g:10013:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9618:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
-            // InternalSignalDSL.g:9619:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
+            // InternalSignalDSL.g:10017:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalSignalDSL.g:10018:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl();
@@ -32668,17 +33949,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl"
-    // InternalSignalDSL.g:9625:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
+    // InternalSignalDSL.g:10024:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9629:1: ( ( ruleOpSingleAssign ) )
-            // InternalSignalDSL.g:9630:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:10028:1: ( ( ruleOpSingleAssign ) )
+            // InternalSignalDSL.g:10029:1: ( ruleOpSingleAssign )
             {
-            // InternalSignalDSL.g:9630:1: ( ruleOpSingleAssign )
-            // InternalSignalDSL.g:9631:2: ruleOpSingleAssign
+            // InternalSignalDSL.g:10029:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:10030:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
@@ -32713,16 +33994,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0"
-    // InternalSignalDSL.g:9641:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
+    // InternalSignalDSL.g:10040:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9645:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
-            // InternalSignalDSL.g:9646:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            // InternalSignalDSL.g:10044:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalSignalDSL.g:10045:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
             {
-            pushFollow(FOLLOW_70);
+            pushFollow(FOLLOW_73);
             rule__XMemberFeatureCall__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -32751,23 +34032,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:9653:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
+    // InternalSignalDSL.g:10052:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9657:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
-            // InternalSignalDSL.g:9658:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:10056:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalSignalDSL.g:10057:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
             {
-            // InternalSignalDSL.g:9658:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
-            // InternalSignalDSL.g:9659:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalSignalDSL.g:10057:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:10058:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
             }
-            // InternalSignalDSL.g:9660:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
-            // InternalSignalDSL.g:9660:3: rule__XMemberFeatureCall__Group_1_1_0__0
+            // InternalSignalDSL.g:10059:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalSignalDSL.g:10059:3: rule__XMemberFeatureCall__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0();
@@ -32802,16 +34083,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1"
-    // InternalSignalDSL.g:9668:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
+    // InternalSignalDSL.g:10067:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9672:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
-            // InternalSignalDSL.g:9673:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            // InternalSignalDSL.g:10071:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalSignalDSL.g:10072:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
             {
-            pushFollow(FOLLOW_70);
+            pushFollow(FOLLOW_73);
             rule__XMemberFeatureCall__Group_1_1__1__Impl();
 
             state._fsp--;
@@ -32840,31 +34121,31 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:9680:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
+    // InternalSignalDSL.g:10079:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9684:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
-            // InternalSignalDSL.g:9685:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalSignalDSL.g:10083:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalSignalDSL.g:10084:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
             {
-            // InternalSignalDSL.g:9685:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
-            // InternalSignalDSL.g:9686:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            // InternalSignalDSL.g:10084:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalSignalDSL.g:10085:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
             }
-            // InternalSignalDSL.g:9687:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
-            int alt79=2;
-            int LA79_0 = input.LA(1);
+            // InternalSignalDSL.g:10086:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
 
-            if ( (LA79_0==27) ) {
-                alt79=1;
+            if ( (LA82_0==27) ) {
+                alt82=1;
             }
-            switch (alt79) {
+            switch (alt82) {
                 case 1 :
-                    // InternalSignalDSL.g:9687:3: rule__XMemberFeatureCall__Group_1_1_1__0
+                    // InternalSignalDSL.g:10086:3: rule__XMemberFeatureCall__Group_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_1__0();
@@ -32902,16 +34183,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2"
-    // InternalSignalDSL.g:9695:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
+    // InternalSignalDSL.g:10094:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
     public final void rule__XMemberFeatureCall__Group_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9699:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
-            // InternalSignalDSL.g:9700:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            // InternalSignalDSL.g:10098:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalSignalDSL.g:10099:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
             {
-            pushFollow(FOLLOW_71);
+            pushFollow(FOLLOW_74);
             rule__XMemberFeatureCall__Group_1_1__2__Impl();
 
             state._fsp--;
@@ -32940,23 +34221,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2__Impl"
-    // InternalSignalDSL.g:9707:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
+    // InternalSignalDSL.g:10106:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9711:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
-            // InternalSignalDSL.g:9712:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalSignalDSL.g:10110:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalSignalDSL.g:10111:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
             {
-            // InternalSignalDSL.g:9712:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
-            // InternalSignalDSL.g:9713:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalSignalDSL.g:10111:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalSignalDSL.g:10112:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
             }
-            // InternalSignalDSL.g:9714:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
-            // InternalSignalDSL.g:9714:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
+            // InternalSignalDSL.g:10113:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalSignalDSL.g:10113:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_1_2();
@@ -32991,16 +34272,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3"
-    // InternalSignalDSL.g:9722:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
+    // InternalSignalDSL.g:10121:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
     public final void rule__XMemberFeatureCall__Group_1_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9726:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
-            // InternalSignalDSL.g:9727:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            // InternalSignalDSL.g:10125:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalSignalDSL.g:10126:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
             {
-            pushFollow(FOLLOW_71);
+            pushFollow(FOLLOW_74);
             rule__XMemberFeatureCall__Group_1_1__3__Impl();
 
             state._fsp--;
@@ -33029,27 +34310,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3__Impl"
-    // InternalSignalDSL.g:9734:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
+    // InternalSignalDSL.g:10133:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9738:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
-            // InternalSignalDSL.g:9739:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalSignalDSL.g:10137:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalSignalDSL.g:10138:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
             {
-            // InternalSignalDSL.g:9739:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
-            // InternalSignalDSL.g:9740:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            // InternalSignalDSL.g:10138:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalSignalDSL.g:10139:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
             }
-            // InternalSignalDSL.g:9741:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
-            int alt80=2;
-            alt80 = dfa80.predict(input);
-            switch (alt80) {
+            // InternalSignalDSL.g:10140:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            int alt83=2;
+            alt83 = dfa83.predict(input);
+            switch (alt83) {
                 case 1 :
-                    // InternalSignalDSL.g:9741:3: rule__XMemberFeatureCall__Group_1_1_3__0
+                    // InternalSignalDSL.g:10140:3: rule__XMemberFeatureCall__Group_1_1_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3__0();
@@ -33087,14 +34368,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4"
-    // InternalSignalDSL.g:9749:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
+    // InternalSignalDSL.g:10148:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9753:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
-            // InternalSignalDSL.g:9754:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
+            // InternalSignalDSL.g:10152:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalSignalDSL.g:10153:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1__4__Impl();
@@ -33120,27 +34401,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4__Impl"
-    // InternalSignalDSL.g:9760:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
+    // InternalSignalDSL.g:10159:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9764:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
-            // InternalSignalDSL.g:9765:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalSignalDSL.g:10163:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalSignalDSL.g:10164:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
             {
-            // InternalSignalDSL.g:9765:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
-            // InternalSignalDSL.g:9766:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            // InternalSignalDSL.g:10164:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalSignalDSL.g:10165:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
             }
-            // InternalSignalDSL.g:9767:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
-            int alt81=2;
-            alt81 = dfa81.predict(input);
-            switch (alt81) {
+            // InternalSignalDSL.g:10166:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            int alt84=2;
+            alt84 = dfa84.predict(input);
+            switch (alt84) {
                 case 1 :
-                    // InternalSignalDSL.g:9767:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+                    // InternalSignalDSL.g:10166:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -33178,14 +34459,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0"
-    // InternalSignalDSL.g:9776:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
+    // InternalSignalDSL.g:10175:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9780:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
-            // InternalSignalDSL.g:9781:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
+            // InternalSignalDSL.g:10179:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalSignalDSL.g:10180:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0__Impl();
@@ -33211,23 +34492,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0__Impl"
-    // InternalSignalDSL.g:9787:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:10186:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9791:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:9792:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:10190:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:10191:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:9792:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
-            // InternalSignalDSL.g:9793:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:10191:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:10192:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
             }
-            // InternalSignalDSL.g:9794:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
-            // InternalSignalDSL.g:9794:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
+            // InternalSignalDSL.g:10193:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:10193:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__0();
@@ -33262,16 +34543,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0"
-    // InternalSignalDSL.g:9803:1: rule__XMemberFeatureCall__Group_1_1_0_0__0 : rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 ;
+    // InternalSignalDSL.g:10202:1: rule__XMemberFeatureCall__Group_1_1_0_0__0 : rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9807:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
-            // InternalSignalDSL.g:9808:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            // InternalSignalDSL.g:10206:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalSignalDSL.g:10207:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
             {
-            pushFollow(FOLLOW_67);
+            pushFollow(FOLLOW_70);
             rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl();
 
             state._fsp--;
@@ -33300,23 +34581,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl"
-    // InternalSignalDSL.g:9815:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:10214:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9819:1: ( ( () ) )
-            // InternalSignalDSL.g:9820:1: ( () )
+            // InternalSignalDSL.g:10218:1: ( ( () ) )
+            // InternalSignalDSL.g:10219:1: ( () )
             {
-            // InternalSignalDSL.g:9820:1: ( () )
-            // InternalSignalDSL.g:9821:2: ()
+            // InternalSignalDSL.g:10219:1: ( () )
+            // InternalSignalDSL.g:10220:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:9822:2: ()
-            // InternalSignalDSL.g:9822:3: 
+            // InternalSignalDSL.g:10221:2: ()
+            // InternalSignalDSL.g:10221:3: 
             {
             }
 
@@ -33341,14 +34622,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1"
-    // InternalSignalDSL.g:9830:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:10229:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9834:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
-            // InternalSignalDSL.g:9835:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
+            // InternalSignalDSL.g:10233:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalSignalDSL.g:10234:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl();
@@ -33374,23 +34655,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl"
-    // InternalSignalDSL.g:9841:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:10240:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9845:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:9846:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:10244:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:10245:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:9846:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
-            // InternalSignalDSL.g:9847:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalSignalDSL.g:10245:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:10246:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:9848:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
-            // InternalSignalDSL.g:9848:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+            // InternalSignalDSL.g:10247:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalSignalDSL.g:10247:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_1_0_0_1();
@@ -33425,16 +34706,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0"
-    // InternalSignalDSL.g:9857:1: rule__XMemberFeatureCall__Group_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 ;
+    // InternalSignalDSL.g:10256:1: rule__XMemberFeatureCall__Group_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9861:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
-            // InternalSignalDSL.g:9862:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            // InternalSignalDSL.g:10260:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalSignalDSL.g:10261:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__XMemberFeatureCall__Group_1_1_1__0__Impl();
 
             state._fsp--;
@@ -33463,17 +34744,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0__Impl"
-    // InternalSignalDSL.g:9869:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:10268:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9873:1: ( ( '<' ) )
-            // InternalSignalDSL.g:9874:1: ( '<' )
+            // InternalSignalDSL.g:10272:1: ( ( '<' ) )
+            // InternalSignalDSL.g:10273:1: ( '<' )
             {
-            // InternalSignalDSL.g:9874:1: ( '<' )
-            // InternalSignalDSL.g:9875:2: '<'
+            // InternalSignalDSL.g:10273:1: ( '<' )
+            // InternalSignalDSL.g:10274:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); 
@@ -33504,16 +34785,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1"
-    // InternalSignalDSL.g:9884:1: rule__XMemberFeatureCall__Group_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 ;
+    // InternalSignalDSL.g:10283:1: rule__XMemberFeatureCall__Group_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9888:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
-            // InternalSignalDSL.g:9889:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            // InternalSignalDSL.g:10287:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalSignalDSL.g:10288:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__XMemberFeatureCall__Group_1_1_1__1__Impl();
 
             state._fsp--;
@@ -33542,23 +34823,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1__Impl"
-    // InternalSignalDSL.g:9896:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:10295:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9900:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:9901:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:10299:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:10300:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:9901:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
-            // InternalSignalDSL.g:9902:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:10300:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:10301:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:9903:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
-            // InternalSignalDSL.g:9903:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
+            // InternalSignalDSL.g:10302:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:10302:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1();
@@ -33593,16 +34874,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2"
-    // InternalSignalDSL.g:9911:1: rule__XMemberFeatureCall__Group_1_1_1__2 : rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 ;
+    // InternalSignalDSL.g:10310:1: rule__XMemberFeatureCall__Group_1_1_1__2 : rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9915:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
-            // InternalSignalDSL.g:9916:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            // InternalSignalDSL.g:10314:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalSignalDSL.g:10315:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__XMemberFeatureCall__Group_1_1_1__2__Impl();
 
             state._fsp--;
@@ -33631,37 +34912,37 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2__Impl"
-    // InternalSignalDSL.g:9923:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
+    // InternalSignalDSL.g:10322:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9927:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
-            // InternalSignalDSL.g:9928:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalSignalDSL.g:10326:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalSignalDSL.g:10327:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
             {
-            // InternalSignalDSL.g:9928:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
-            // InternalSignalDSL.g:9929:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            // InternalSignalDSL.g:10327:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalSignalDSL.g:10328:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
             }
-            // InternalSignalDSL.g:9930:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
-            loop82:
+            // InternalSignalDSL.g:10329:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            loop85:
             do {
-                int alt82=2;
-                int LA82_0 = input.LA(1);
+                int alt85=2;
+                int LA85_0 = input.LA(1);
 
-                if ( (LA82_0==82) ) {
-                    alt82=1;
+                if ( (LA85_0==80) ) {
+                    alt85=1;
                 }
 
 
-                switch (alt82) {
+                switch (alt85) {
             	case 1 :
-            	    // InternalSignalDSL.g:9930:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    // InternalSignalDSL.g:10329:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
 
             	    state._fsp--;
@@ -33671,7 +34952,7 @@
             	    break;
 
             	default :
-            	    break loop82;
+            	    break loop85;
                 }
             } while (true);
 
@@ -33700,14 +34981,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3"
-    // InternalSignalDSL.g:9938:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
+    // InternalSignalDSL.g:10337:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9942:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
-            // InternalSignalDSL.g:9943:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
+            // InternalSignalDSL.g:10341:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalSignalDSL.g:10342:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1__3__Impl();
@@ -33733,17 +35014,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3__Impl"
-    // InternalSignalDSL.g:9949:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:10348:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9953:1: ( ( '>' ) )
-            // InternalSignalDSL.g:9954:1: ( '>' )
+            // InternalSignalDSL.g:10352:1: ( ( '>' ) )
+            // InternalSignalDSL.g:10353:1: ( '>' )
             {
-            // InternalSignalDSL.g:9954:1: ( '>' )
-            // InternalSignalDSL.g:9955:2: '>'
+            // InternalSignalDSL.g:10353:1: ( '>' )
+            // InternalSignalDSL.g:10354:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); 
@@ -33774,16 +35055,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0"
-    // InternalSignalDSL.g:9965:1: rule__XMemberFeatureCall__Group_1_1_1_2__0 : rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 ;
+    // InternalSignalDSL.g:10364:1: rule__XMemberFeatureCall__Group_1_1_1_2__0 : rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9969:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
-            // InternalSignalDSL.g:9970:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            // InternalSignalDSL.g:10368:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalSignalDSL.g:10369:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl();
 
             state._fsp--;
@@ -33812,22 +35093,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl"
-    // InternalSignalDSL.g:9977:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:10376:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9981:1: ( ( ',' ) )
-            // InternalSignalDSL.g:9982:1: ( ',' )
+            // InternalSignalDSL.g:10380:1: ( ( ',' ) )
+            // InternalSignalDSL.g:10381:1: ( ',' )
             {
-            // InternalSignalDSL.g:9982:1: ( ',' )
-            // InternalSignalDSL.g:9983:2: ','
+            // InternalSignalDSL.g:10381:1: ( ',' )
+            // InternalSignalDSL.g:10382:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
@@ -33853,14 +35134,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1"
-    // InternalSignalDSL.g:9992:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
+    // InternalSignalDSL.g:10391:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9996:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
-            // InternalSignalDSL.g:9997:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
+            // InternalSignalDSL.g:10395:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalSignalDSL.g:10396:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl();
@@ -33886,23 +35167,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl"
-    // InternalSignalDSL.g:10003:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
+    // InternalSignalDSL.g:10402:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10007:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
-            // InternalSignalDSL.g:10008:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalSignalDSL.g:10406:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalSignalDSL.g:10407:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
             {
-            // InternalSignalDSL.g:10008:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
-            // InternalSignalDSL.g:10009:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalSignalDSL.g:10407:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalSignalDSL.g:10408:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
             }
-            // InternalSignalDSL.g:10010:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
-            // InternalSignalDSL.g:10010:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
+            // InternalSignalDSL.g:10409:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalSignalDSL.g:10409:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1();
@@ -33937,16 +35218,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0"
-    // InternalSignalDSL.g:10019:1: rule__XMemberFeatureCall__Group_1_1_3__0 : rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 ;
+    // InternalSignalDSL.g:10418:1: rule__XMemberFeatureCall__Group_1_1_3__0 : rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10023:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
-            // InternalSignalDSL.g:10024:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            // InternalSignalDSL.g:10422:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalSignalDSL.g:10423:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_77);
             rule__XMemberFeatureCall__Group_1_1_3__0__Impl();
 
             state._fsp--;
@@ -33975,23 +35256,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0__Impl"
-    // InternalSignalDSL.g:10031:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
+    // InternalSignalDSL.g:10430:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10035:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
-            // InternalSignalDSL.g:10036:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalSignalDSL.g:10434:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalSignalDSL.g:10435:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
             {
-            // InternalSignalDSL.g:10036:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
-            // InternalSignalDSL.g:10037:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalSignalDSL.g:10435:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalSignalDSL.g:10436:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
             }
-            // InternalSignalDSL.g:10038:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
-            // InternalSignalDSL.g:10038:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
+            // InternalSignalDSL.g:10437:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalSignalDSL.g:10437:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0();
@@ -34026,16 +35307,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1"
-    // InternalSignalDSL.g:10046:1: rule__XMemberFeatureCall__Group_1_1_3__1 : rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 ;
+    // InternalSignalDSL.g:10445:1: rule__XMemberFeatureCall__Group_1_1_3__1 : rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10050:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
-            // InternalSignalDSL.g:10051:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            // InternalSignalDSL.g:10449:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalSignalDSL.g:10450:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_77);
             rule__XMemberFeatureCall__Group_1_1_3__1__Impl();
 
             state._fsp--;
@@ -34064,31 +35345,31 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1__Impl"
-    // InternalSignalDSL.g:10058:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
+    // InternalSignalDSL.g:10457:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10062:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
-            // InternalSignalDSL.g:10063:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalSignalDSL.g:10461:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalSignalDSL.g:10462:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
             {
-            // InternalSignalDSL.g:10063:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
-            // InternalSignalDSL.g:10064:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            // InternalSignalDSL.g:10462:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalSignalDSL.g:10463:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
             }
-            // InternalSignalDSL.g:10065:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
-            int alt83=2;
-            int LA83_0 = input.LA(1);
+            // InternalSignalDSL.g:10464:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            int alt86=2;
+            int LA86_0 = input.LA(1);
 
-            if ( ((LA83_0>=RULE_ID && LA83_0<=RULE_STRING)||LA83_0==27||LA83_0==31||(LA83_0>=34 && LA83_0<=35)||LA83_0==40||(LA83_0>=45 && LA83_0<=50)||LA83_0==63||LA83_0==80||(LA83_0>=84 && LA83_0<=85)||LA83_0==88||LA83_0==90||(LA83_0>=93 && LA83_0<=101)||LA83_0==103||LA83_0==110||LA83_0==112) ) {
-                alt83=1;
+            if ( ((LA86_0>=RULE_ID && LA86_0<=RULE_STRING)||LA86_0==27||LA86_0==31||(LA86_0>=34 && LA86_0<=35)||LA86_0==40||(LA86_0>=45 && LA86_0<=50)||LA86_0==62||LA86_0==78||(LA86_0>=82 && LA86_0<=83)||LA86_0==86||LA86_0==88||(LA86_0>=91 && LA86_0<=99)||LA86_0==101||LA86_0==109||LA86_0==111) ) {
+                alt86=1;
             }
-            switch (alt83) {
+            switch (alt86) {
                 case 1 :
-                    // InternalSignalDSL.g:10065:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
+                    // InternalSignalDSL.g:10464:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Alternatives_1_1_3_1();
@@ -34126,14 +35407,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2"
-    // InternalSignalDSL.g:10073:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
+    // InternalSignalDSL.g:10472:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10077:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
-            // InternalSignalDSL.g:10078:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
+            // InternalSignalDSL.g:10476:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalSignalDSL.g:10477:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3__2__Impl();
@@ -34159,22 +35440,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2__Impl"
-    // InternalSignalDSL.g:10084:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:10483:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10088:1: ( ( ')' ) )
-            // InternalSignalDSL.g:10089:1: ( ')' )
+            // InternalSignalDSL.g:10487:1: ( ( ')' ) )
+            // InternalSignalDSL.g:10488:1: ( ')' )
             {
-            // InternalSignalDSL.g:10089:1: ( ')' )
-            // InternalSignalDSL.g:10090:2: ')'
+            // InternalSignalDSL.g:10488:1: ( ')' )
+            // InternalSignalDSL.g:10489:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
@@ -34200,16 +35481,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0"
-    // InternalSignalDSL.g:10100:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 ;
+    // InternalSignalDSL.g:10499:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10104:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
-            // InternalSignalDSL.g:10105:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            // InternalSignalDSL.g:10503:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalSignalDSL.g:10504:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl();
 
             state._fsp--;
@@ -34238,23 +35519,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl"
-    // InternalSignalDSL.g:10112:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
+    // InternalSignalDSL.g:10511:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10116:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
-            // InternalSignalDSL.g:10117:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalSignalDSL.g:10515:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalSignalDSL.g:10516:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
             {
-            // InternalSignalDSL.g:10117:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
-            // InternalSignalDSL.g:10118:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalSignalDSL.g:10516:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalSignalDSL.g:10517:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
             }
-            // InternalSignalDSL.g:10119:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
-            // InternalSignalDSL.g:10119:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
+            // InternalSignalDSL.g:10518:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalSignalDSL.g:10518:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0();
@@ -34289,14 +35570,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1"
-    // InternalSignalDSL.g:10127:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
+    // InternalSignalDSL.g:10526:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10131:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
-            // InternalSignalDSL.g:10132:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
+            // InternalSignalDSL.g:10530:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalSignalDSL.g:10531:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl();
@@ -34322,37 +35603,37 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl"
-    // InternalSignalDSL.g:10138:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
+    // InternalSignalDSL.g:10537:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10142:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:10143:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:10541:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:10542:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:10143:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
-            // InternalSignalDSL.g:10144:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            // InternalSignalDSL.g:10542:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:10543:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1()); 
             }
-            // InternalSignalDSL.g:10145:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
-            loop84:
+            // InternalSignalDSL.g:10544:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            loop87:
             do {
-                int alt84=2;
-                int LA84_0 = input.LA(1);
+                int alt87=2;
+                int LA87_0 = input.LA(1);
 
-                if ( (LA84_0==82) ) {
-                    alt84=1;
+                if ( (LA87_0==80) ) {
+                    alt87=1;
                 }
 
 
-                switch (alt84) {
+                switch (alt87) {
             	case 1 :
-            	    // InternalSignalDSL.g:10145:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    // InternalSignalDSL.g:10544:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
 
             	    state._fsp--;
@@ -34362,7 +35643,7 @@
             	    break;
 
             	default :
-            	    break loop84;
+            	    break loop87;
                 }
             } while (true);
 
@@ -34391,16 +35672,16 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0"
-    // InternalSignalDSL.g:10154:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 ;
+    // InternalSignalDSL.g:10553:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10158:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
-            // InternalSignalDSL.g:10159:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            // InternalSignalDSL.g:10557:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalSignalDSL.g:10558:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl();
 
             state._fsp--;
@@ -34429,22 +35710,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl"
-    // InternalSignalDSL.g:10166:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:10565:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10170:1: ( ( ',' ) )
-            // InternalSignalDSL.g:10171:1: ( ',' )
+            // InternalSignalDSL.g:10569:1: ( ( ',' ) )
+            // InternalSignalDSL.g:10570:1: ( ',' )
             {
-            // InternalSignalDSL.g:10171:1: ( ',' )
-            // InternalSignalDSL.g:10172:2: ','
+            // InternalSignalDSL.g:10570:1: ( ',' )
+            // InternalSignalDSL.g:10571:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
@@ -34470,14 +35751,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1"
-    // InternalSignalDSL.g:10181:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:10580:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10185:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
-            // InternalSignalDSL.g:10186:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
+            // InternalSignalDSL.g:10584:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalSignalDSL.g:10585:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl();
@@ -34503,23 +35784,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl"
-    // InternalSignalDSL.g:10192:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:10591:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10196:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:10197:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:10595:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:10596:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:10197:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
-            // InternalSignalDSL.g:10198:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalSignalDSL.g:10596:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:10597:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:10199:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
-            // InternalSignalDSL.g:10199:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
+            // InternalSignalDSL.g:10598:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalSignalDSL.g:10598:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1();
@@ -34554,16 +35835,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0"
-    // InternalSignalDSL.g:10208:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
+    // InternalSignalDSL.g:10607:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
     public final void rule__XSetLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10212:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
-            // InternalSignalDSL.g:10213:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            // InternalSignalDSL.g:10611:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalSignalDSL.g:10612:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
             {
-            pushFollow(FOLLOW_38);
+            pushFollow(FOLLOW_41);
             rule__XSetLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -34592,23 +35873,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:10220:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:10619:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10224:1: ( ( () ) )
-            // InternalSignalDSL.g:10225:1: ( () )
+            // InternalSignalDSL.g:10623:1: ( ( () ) )
+            // InternalSignalDSL.g:10624:1: ( () )
             {
-            // InternalSignalDSL.g:10225:1: ( () )
-            // InternalSignalDSL.g:10226:2: ()
+            // InternalSignalDSL.g:10624:1: ( () )
+            // InternalSignalDSL.g:10625:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:10227:2: ()
-            // InternalSignalDSL.g:10227:3: 
+            // InternalSignalDSL.g:10626:2: ()
+            // InternalSignalDSL.g:10626:3: 
             {
             }
 
@@ -34633,14 +35914,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1"
-    // InternalSignalDSL.g:10235:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
+    // InternalSignalDSL.g:10634:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
     public final void rule__XSetLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10239:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
-            // InternalSignalDSL.g:10240:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
+            // InternalSignalDSL.g:10638:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalSignalDSL.g:10639:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
             {
             pushFollow(FOLLOW_7);
             rule__XSetLiteral__Group__1__Impl();
@@ -34671,22 +35952,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:10247:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:10646:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10251:1: ( ( '#' ) )
-            // InternalSignalDSL.g:10252:1: ( '#' )
+            // InternalSignalDSL.g:10650:1: ( ( '#' ) )
+            // InternalSignalDSL.g:10651:1: ( '#' )
             {
-            // InternalSignalDSL.g:10252:1: ( '#' )
-            // InternalSignalDSL.g:10253:2: '#'
+            // InternalSignalDSL.g:10651:1: ( '#' )
+            // InternalSignalDSL.g:10652:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,84,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -34712,16 +35993,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2"
-    // InternalSignalDSL.g:10262:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
+    // InternalSignalDSL.g:10661:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
     public final void rule__XSetLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10266:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
-            // InternalSignalDSL.g:10267:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            // InternalSignalDSL.g:10665:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalSignalDSL.g:10666:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
             {
-            pushFollow(FOLLOW_75);
+            pushFollow(FOLLOW_78);
             rule__XSetLiteral__Group__2__Impl();
 
             state._fsp--;
@@ -34750,22 +36031,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2__Impl"
-    // InternalSignalDSL.g:10274:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:10673:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
     public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10278:1: ( ( '{' ) )
-            // InternalSignalDSL.g:10279:1: ( '{' )
+            // InternalSignalDSL.g:10677:1: ( ( '{' ) )
+            // InternalSignalDSL.g:10678:1: ( '{' )
             {
-            // InternalSignalDSL.g:10279:1: ( '{' )
-            // InternalSignalDSL.g:10280:2: '{'
+            // InternalSignalDSL.g:10678:1: ( '{' )
+            // InternalSignalDSL.g:10679:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
             }
-            match(input,63,FOLLOW_2); if (state.failed) return ;
+            match(input,62,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
             }
@@ -34791,16 +36072,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3"
-    // InternalSignalDSL.g:10289:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
+    // InternalSignalDSL.g:10688:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
     public final void rule__XSetLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10293:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
-            // InternalSignalDSL.g:10294:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            // InternalSignalDSL.g:10692:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalSignalDSL.g:10693:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
             {
-            pushFollow(FOLLOW_75);
+            pushFollow(FOLLOW_78);
             rule__XSetLiteral__Group__3__Impl();
 
             state._fsp--;
@@ -34829,31 +36110,31 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3__Impl"
-    // InternalSignalDSL.g:10301:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:10700:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
     public final void rule__XSetLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10305:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
-            // InternalSignalDSL.g:10306:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10704:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalSignalDSL.g:10705:1: ( ( rule__XSetLiteral__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:10306:1: ( ( rule__XSetLiteral__Group_3__0 )? )
-            // InternalSignalDSL.g:10307:2: ( rule__XSetLiteral__Group_3__0 )?
+            // InternalSignalDSL.g:10705:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10706:2: ( rule__XSetLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:10308:2: ( rule__XSetLiteral__Group_3__0 )?
-            int alt85=2;
-            int LA85_0 = input.LA(1);
+            // InternalSignalDSL.g:10707:2: ( rule__XSetLiteral__Group_3__0 )?
+            int alt88=2;
+            int LA88_0 = input.LA(1);
 
-            if ( ((LA85_0>=RULE_ID && LA85_0<=RULE_STRING)||LA85_0==27||(LA85_0>=34 && LA85_0<=35)||LA85_0==40||(LA85_0>=45 && LA85_0<=50)||LA85_0==63||LA85_0==80||(LA85_0>=84 && LA85_0<=85)||LA85_0==88||LA85_0==90||(LA85_0>=93 && LA85_0<=101)||LA85_0==103||LA85_0==112) ) {
-                alt85=1;
+            if ( ((LA88_0>=RULE_ID && LA88_0<=RULE_STRING)||LA88_0==27||(LA88_0>=34 && LA88_0<=35)||LA88_0==40||(LA88_0>=45 && LA88_0<=50)||LA88_0==62||LA88_0==78||(LA88_0>=82 && LA88_0<=83)||LA88_0==86||LA88_0==88||(LA88_0>=91 && LA88_0<=99)||LA88_0==101||LA88_0==111) ) {
+                alt88=1;
             }
-            switch (alt85) {
+            switch (alt88) {
                 case 1 :
-                    // InternalSignalDSL.g:10308:3: rule__XSetLiteral__Group_3__0
+                    // InternalSignalDSL.g:10707:3: rule__XSetLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSetLiteral__Group_3__0();
@@ -34891,14 +36172,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4"
-    // InternalSignalDSL.g:10316:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    // InternalSignalDSL.g:10715:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
     public final void rule__XSetLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10320:1: ( rule__XSetLiteral__Group__4__Impl )
-            // InternalSignalDSL.g:10321:2: rule__XSetLiteral__Group__4__Impl
+            // InternalSignalDSL.g:10719:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalSignalDSL.g:10720:2: rule__XSetLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__4__Impl();
@@ -34924,22 +36205,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4__Impl"
-    // InternalSignalDSL.g:10327:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:10726:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
     public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10331:1: ( ( '}' ) )
-            // InternalSignalDSL.g:10332:1: ( '}' )
+            // InternalSignalDSL.g:10730:1: ( ( '}' ) )
+            // InternalSignalDSL.g:10731:1: ( '}' )
             {
-            // InternalSignalDSL.g:10332:1: ( '}' )
-            // InternalSignalDSL.g:10333:2: '}'
+            // InternalSignalDSL.g:10731:1: ( '}' )
+            // InternalSignalDSL.g:10732:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
             }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
             }
@@ -34965,16 +36246,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0"
-    // InternalSignalDSL.g:10343:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
+    // InternalSignalDSL.g:10742:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
     public final void rule__XSetLiteral__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10347:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
-            // InternalSignalDSL.g:10348:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            // InternalSignalDSL.g:10746:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalSignalDSL.g:10747:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XSetLiteral__Group_3__0__Impl();
 
             state._fsp--;
@@ -35003,23 +36284,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0__Impl"
-    // InternalSignalDSL.g:10355:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:10754:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
     public final void rule__XSetLiteral__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10359:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:10360:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:10758:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:10759:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:10360:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
-            // InternalSignalDSL.g:10361:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:10759:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:10760:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:10362:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
-            // InternalSignalDSL.g:10362:3: rule__XSetLiteral__ElementsAssignment_3_0
+            // InternalSignalDSL.g:10761:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:10761:3: rule__XSetLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_0();
@@ -35054,14 +36335,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1"
-    // InternalSignalDSL.g:10370:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
+    // InternalSignalDSL.g:10769:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
     public final void rule__XSetLiteral__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10374:1: ( rule__XSetLiteral__Group_3__1__Impl )
-            // InternalSignalDSL.g:10375:2: rule__XSetLiteral__Group_3__1__Impl
+            // InternalSignalDSL.g:10773:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalSignalDSL.g:10774:2: rule__XSetLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3__1__Impl();
@@ -35087,37 +36368,37 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1__Impl"
-    // InternalSignalDSL.g:10381:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
+    // InternalSignalDSL.g:10780:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
     public final void rule__XSetLiteral__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10385:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
-            // InternalSignalDSL.g:10386:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:10784:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalSignalDSL.g:10785:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
             {
-            // InternalSignalDSL.g:10386:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
-            // InternalSignalDSL.g:10387:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            // InternalSignalDSL.g:10785:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:10786:2: ( rule__XSetLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
             }
-            // InternalSignalDSL.g:10388:2: ( rule__XSetLiteral__Group_3_1__0 )*
-            loop86:
+            // InternalSignalDSL.g:10787:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            loop89:
             do {
-                int alt86=2;
-                int LA86_0 = input.LA(1);
+                int alt89=2;
+                int LA89_0 = input.LA(1);
 
-                if ( (LA86_0==82) ) {
-                    alt86=1;
+                if ( (LA89_0==80) ) {
+                    alt89=1;
                 }
 
 
-                switch (alt86) {
+                switch (alt89) {
             	case 1 :
-            	    // InternalSignalDSL.g:10388:3: rule__XSetLiteral__Group_3_1__0
+            	    // InternalSignalDSL.g:10787:3: rule__XSetLiteral__Group_3_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XSetLiteral__Group_3_1__0();
 
             	    state._fsp--;
@@ -35127,7 +36408,7 @@
             	    break;
 
             	default :
-            	    break loop86;
+            	    break loop89;
                 }
             } while (true);
 
@@ -35156,16 +36437,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0"
-    // InternalSignalDSL.g:10397:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
+    // InternalSignalDSL.g:10796:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
     public final void rule__XSetLiteral__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10401:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
-            // InternalSignalDSL.g:10402:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            // InternalSignalDSL.g:10800:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalSignalDSL.g:10801:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XSetLiteral__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -35194,22 +36475,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:10409:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:10808:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10413:1: ( ( ',' ) )
-            // InternalSignalDSL.g:10414:1: ( ',' )
+            // InternalSignalDSL.g:10812:1: ( ( ',' ) )
+            // InternalSignalDSL.g:10813:1: ( ',' )
             {
-            // InternalSignalDSL.g:10414:1: ( ',' )
-            // InternalSignalDSL.g:10415:2: ','
+            // InternalSignalDSL.g:10813:1: ( ',' )
+            // InternalSignalDSL.g:10814:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -35235,14 +36516,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1"
-    // InternalSignalDSL.g:10424:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:10823:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
     public final void rule__XSetLiteral__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10428:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:10429:2: rule__XSetLiteral__Group_3_1__1__Impl
+            // InternalSignalDSL.g:10827:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:10828:2: rule__XSetLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3_1__1__Impl();
@@ -35268,23 +36549,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:10435:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:10834:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
     public final void rule__XSetLiteral__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10439:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:10440:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:10838:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:10839:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:10440:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:10441:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:10839:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:10840:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:10442:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
-            // InternalSignalDSL.g:10442:3: rule__XSetLiteral__ElementsAssignment_3_1_1
+            // InternalSignalDSL.g:10841:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:10841:3: rule__XSetLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_1_1();
@@ -35319,16 +36600,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0"
-    // InternalSignalDSL.g:10451:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
+    // InternalSignalDSL.g:10850:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
     public final void rule__XListLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10455:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
-            // InternalSignalDSL.g:10456:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            // InternalSignalDSL.g:10854:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalSignalDSL.g:10855:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
             {
-            pushFollow(FOLLOW_38);
+            pushFollow(FOLLOW_41);
             rule__XListLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -35357,23 +36638,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:10463:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:10862:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10467:1: ( ( () ) )
-            // InternalSignalDSL.g:10468:1: ( () )
+            // InternalSignalDSL.g:10866:1: ( ( () ) )
+            // InternalSignalDSL.g:10867:1: ( () )
             {
-            // InternalSignalDSL.g:10468:1: ( () )
-            // InternalSignalDSL.g:10469:2: ()
+            // InternalSignalDSL.g:10867:1: ( () )
+            // InternalSignalDSL.g:10868:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:10470:2: ()
-            // InternalSignalDSL.g:10470:3: 
+            // InternalSignalDSL.g:10869:2: ()
+            // InternalSignalDSL.g:10869:3: 
             {
             }
 
@@ -35398,16 +36679,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1"
-    // InternalSignalDSL.g:10478:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
+    // InternalSignalDSL.g:10877:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
     public final void rule__XListLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10482:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
-            // InternalSignalDSL.g:10483:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            // InternalSignalDSL.g:10881:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalSignalDSL.g:10882:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_42);
             rule__XListLiteral__Group__1__Impl();
 
             state._fsp--;
@@ -35436,22 +36717,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:10490:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:10889:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10494:1: ( ( '#' ) )
-            // InternalSignalDSL.g:10495:1: ( '#' )
+            // InternalSignalDSL.g:10893:1: ( ( '#' ) )
+            // InternalSignalDSL.g:10894:1: ( '#' )
             {
-            // InternalSignalDSL.g:10495:1: ( '#' )
-            // InternalSignalDSL.g:10496:2: '#'
+            // InternalSignalDSL.g:10894:1: ( '#' )
+            // InternalSignalDSL.g:10895:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,84,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -35477,16 +36758,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2"
-    // InternalSignalDSL.g:10505:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
+    // InternalSignalDSL.g:10904:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
     public final void rule__XListLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10509:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
-            // InternalSignalDSL.g:10510:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            // InternalSignalDSL.g:10908:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalSignalDSL.g:10909:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_40);
             rule__XListLiteral__Group__2__Impl();
 
             state._fsp--;
@@ -35515,22 +36796,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2__Impl"
-    // InternalSignalDSL.g:10517:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:10916:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
     public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10521:1: ( ( '[' ) )
-            // InternalSignalDSL.g:10522:1: ( '[' )
+            // InternalSignalDSL.g:10920:1: ( ( '[' ) )
+            // InternalSignalDSL.g:10921:1: ( '[' )
             {
-            // InternalSignalDSL.g:10522:1: ( '[' )
-            // InternalSignalDSL.g:10523:2: '['
+            // InternalSignalDSL.g:10921:1: ( '[' )
+            // InternalSignalDSL.g:10922:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
@@ -35556,16 +36837,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3"
-    // InternalSignalDSL.g:10532:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
+    // InternalSignalDSL.g:10931:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
     public final void rule__XListLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10536:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
-            // InternalSignalDSL.g:10537:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            // InternalSignalDSL.g:10935:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalSignalDSL.g:10936:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
             {
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_40);
             rule__XListLiteral__Group__3__Impl();
 
             state._fsp--;
@@ -35594,31 +36875,31 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3__Impl"
-    // InternalSignalDSL.g:10544:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:10943:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
     public final void rule__XListLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10548:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
-            // InternalSignalDSL.g:10549:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10947:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalSignalDSL.g:10948:1: ( ( rule__XListLiteral__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:10549:1: ( ( rule__XListLiteral__Group_3__0 )? )
-            // InternalSignalDSL.g:10550:2: ( rule__XListLiteral__Group_3__0 )?
+            // InternalSignalDSL.g:10948:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10949:2: ( rule__XListLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:10551:2: ( rule__XListLiteral__Group_3__0 )?
-            int alt87=2;
-            int LA87_0 = input.LA(1);
+            // InternalSignalDSL.g:10950:2: ( rule__XListLiteral__Group_3__0 )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
 
-            if ( ((LA87_0>=RULE_ID && LA87_0<=RULE_STRING)||LA87_0==27||(LA87_0>=34 && LA87_0<=35)||LA87_0==40||(LA87_0>=45 && LA87_0<=50)||LA87_0==63||LA87_0==80||(LA87_0>=84 && LA87_0<=85)||LA87_0==88||LA87_0==90||(LA87_0>=93 && LA87_0<=101)||LA87_0==103||LA87_0==112) ) {
-                alt87=1;
+            if ( ((LA90_0>=RULE_ID && LA90_0<=RULE_STRING)||LA90_0==27||(LA90_0>=34 && LA90_0<=35)||LA90_0==40||(LA90_0>=45 && LA90_0<=50)||LA90_0==62||LA90_0==78||(LA90_0>=82 && LA90_0<=83)||LA90_0==86||LA90_0==88||(LA90_0>=91 && LA90_0<=99)||LA90_0==101||LA90_0==111) ) {
+                alt90=1;
             }
-            switch (alt87) {
+            switch (alt90) {
                 case 1 :
-                    // InternalSignalDSL.g:10551:3: rule__XListLiteral__Group_3__0
+                    // InternalSignalDSL.g:10950:3: rule__XListLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XListLiteral__Group_3__0();
@@ -35656,14 +36937,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4"
-    // InternalSignalDSL.g:10559:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    // InternalSignalDSL.g:10958:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
     public final void rule__XListLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10563:1: ( rule__XListLiteral__Group__4__Impl )
-            // InternalSignalDSL.g:10564:2: rule__XListLiteral__Group__4__Impl
+            // InternalSignalDSL.g:10962:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalSignalDSL.g:10963:2: rule__XListLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__4__Impl();
@@ -35689,22 +36970,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4__Impl"
-    // InternalSignalDSL.g:10570:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:10969:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
     public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10574:1: ( ( ']' ) )
-            // InternalSignalDSL.g:10575:1: ( ']' )
+            // InternalSignalDSL.g:10973:1: ( ( ']' ) )
+            // InternalSignalDSL.g:10974:1: ( ']' )
             {
-            // InternalSignalDSL.g:10575:1: ( ']' )
-            // InternalSignalDSL.g:10576:2: ']'
+            // InternalSignalDSL.g:10974:1: ( ']' )
+            // InternalSignalDSL.g:10975:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
-            match(input,83,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
@@ -35730,16 +37011,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0"
-    // InternalSignalDSL.g:10586:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
+    // InternalSignalDSL.g:10985:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
     public final void rule__XListLiteral__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10590:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
-            // InternalSignalDSL.g:10591:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            // InternalSignalDSL.g:10989:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalSignalDSL.g:10990:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XListLiteral__Group_3__0__Impl();
 
             state._fsp--;
@@ -35768,23 +37049,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0__Impl"
-    // InternalSignalDSL.g:10598:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:10997:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
     public final void rule__XListLiteral__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10602:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:10603:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:11001:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:11002:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:10603:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
-            // InternalSignalDSL.g:10604:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:11002:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:11003:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:10605:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
-            // InternalSignalDSL.g:10605:3: rule__XListLiteral__ElementsAssignment_3_0
+            // InternalSignalDSL.g:11004:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:11004:3: rule__XListLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_0();
@@ -35819,14 +37100,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1"
-    // InternalSignalDSL.g:10613:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
+    // InternalSignalDSL.g:11012:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
     public final void rule__XListLiteral__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10617:1: ( rule__XListLiteral__Group_3__1__Impl )
-            // InternalSignalDSL.g:10618:2: rule__XListLiteral__Group_3__1__Impl
+            // InternalSignalDSL.g:11016:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalSignalDSL.g:11017:2: rule__XListLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3__1__Impl();
@@ -35852,37 +37133,37 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1__Impl"
-    // InternalSignalDSL.g:10624:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
+    // InternalSignalDSL.g:11023:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
     public final void rule__XListLiteral__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10628:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
-            // InternalSignalDSL.g:10629:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:11027:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalSignalDSL.g:11028:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
             {
-            // InternalSignalDSL.g:10629:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
-            // InternalSignalDSL.g:10630:2: ( rule__XListLiteral__Group_3_1__0 )*
+            // InternalSignalDSL.g:11028:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:11029:2: ( rule__XListLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
             }
-            // InternalSignalDSL.g:10631:2: ( rule__XListLiteral__Group_3_1__0 )*
-            loop88:
+            // InternalSignalDSL.g:11030:2: ( rule__XListLiteral__Group_3_1__0 )*
+            loop91:
             do {
-                int alt88=2;
-                int LA88_0 = input.LA(1);
+                int alt91=2;
+                int LA91_0 = input.LA(1);
 
-                if ( (LA88_0==82) ) {
-                    alt88=1;
+                if ( (LA91_0==80) ) {
+                    alt91=1;
                 }
 
 
-                switch (alt88) {
+                switch (alt91) {
             	case 1 :
-            	    // InternalSignalDSL.g:10631:3: rule__XListLiteral__Group_3_1__0
+            	    // InternalSignalDSL.g:11030:3: rule__XListLiteral__Group_3_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XListLiteral__Group_3_1__0();
 
             	    state._fsp--;
@@ -35892,7 +37173,7 @@
             	    break;
 
             	default :
-            	    break loop88;
+            	    break loop91;
                 }
             } while (true);
 
@@ -35921,16 +37202,16 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0"
-    // InternalSignalDSL.g:10640:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
+    // InternalSignalDSL.g:11039:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
     public final void rule__XListLiteral__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10644:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
-            // InternalSignalDSL.g:10645:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            // InternalSignalDSL.g:11043:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalSignalDSL.g:11044:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XListLiteral__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -35959,22 +37240,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:10652:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:11051:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10656:1: ( ( ',' ) )
-            // InternalSignalDSL.g:10657:1: ( ',' )
+            // InternalSignalDSL.g:11055:1: ( ( ',' ) )
+            // InternalSignalDSL.g:11056:1: ( ',' )
             {
-            // InternalSignalDSL.g:10657:1: ( ',' )
-            // InternalSignalDSL.g:10658:2: ','
+            // InternalSignalDSL.g:11056:1: ( ',' )
+            // InternalSignalDSL.g:11057:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -36000,14 +37281,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1"
-    // InternalSignalDSL.g:10667:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:11066:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
     public final void rule__XListLiteral__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10671:1: ( rule__XListLiteral__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:10672:2: rule__XListLiteral__Group_3_1__1__Impl
+            // InternalSignalDSL.g:11070:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:11071:2: rule__XListLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3_1__1__Impl();
@@ -36033,23 +37314,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:10678:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:11077:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
     public final void rule__XListLiteral__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10682:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:10683:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:11081:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:11082:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:10683:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:10684:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:11082:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:11083:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:10685:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
-            // InternalSignalDSL.g:10685:3: rule__XListLiteral__ElementsAssignment_3_1_1
+            // InternalSignalDSL.g:11084:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:11084:3: rule__XListLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_1_1();
@@ -36084,16 +37365,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0"
-    // InternalSignalDSL.g:10694:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
+    // InternalSignalDSL.g:11093:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
     public final void rule__XClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10698:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
-            // InternalSignalDSL.g:10699:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            // InternalSignalDSL.g:11097:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalSignalDSL.g:11098:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
             {
-            pushFollow(FOLLOW_76);
+            pushFollow(FOLLOW_79);
             rule__XClosure__Group__0__Impl();
 
             state._fsp--;
@@ -36122,23 +37403,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0__Impl"
-    // InternalSignalDSL.g:10706:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:11105:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
     public final void rule__XClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10710:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
-            // InternalSignalDSL.g:10711:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:11109:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalSignalDSL.g:11110:1: ( ( rule__XClosure__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:10711:1: ( ( rule__XClosure__Group_0__0 ) )
-            // InternalSignalDSL.g:10712:2: ( rule__XClosure__Group_0__0 )
+            // InternalSignalDSL.g:11110:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:11111:2: ( rule__XClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:10713:2: ( rule__XClosure__Group_0__0 )
-            // InternalSignalDSL.g:10713:3: rule__XClosure__Group_0__0
+            // InternalSignalDSL.g:11112:2: ( rule__XClosure__Group_0__0 )
+            // InternalSignalDSL.g:11112:3: rule__XClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0();
@@ -36173,16 +37454,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1"
-    // InternalSignalDSL.g:10721:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
+    // InternalSignalDSL.g:11120:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
     public final void rule__XClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10725:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
-            // InternalSignalDSL.g:10726:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            // InternalSignalDSL.g:11124:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalSignalDSL.g:11125:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
             {
-            pushFollow(FOLLOW_76);
+            pushFollow(FOLLOW_79);
             rule__XClosure__Group__1__Impl();
 
             state._fsp--;
@@ -36211,27 +37492,27 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1__Impl"
-    // InternalSignalDSL.g:10733:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:11132:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
     public final void rule__XClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10737:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
-            // InternalSignalDSL.g:10738:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalSignalDSL.g:11136:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalSignalDSL.g:11137:1: ( ( rule__XClosure__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:10738:1: ( ( rule__XClosure__Group_1__0 )? )
-            // InternalSignalDSL.g:10739:2: ( rule__XClosure__Group_1__0 )?
+            // InternalSignalDSL.g:11137:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalSignalDSL.g:11138:2: ( rule__XClosure__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:10740:2: ( rule__XClosure__Group_1__0 )?
-            int alt89=2;
-            alt89 = dfa89.predict(input);
-            switch (alt89) {
+            // InternalSignalDSL.g:11139:2: ( rule__XClosure__Group_1__0 )?
+            int alt92=2;
+            alt92 = dfa92.predict(input);
+            switch (alt92) {
                 case 1 :
-                    // InternalSignalDSL.g:10740:3: rule__XClosure__Group_1__0
+                    // InternalSignalDSL.g:11139:3: rule__XClosure__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1__0();
@@ -36269,16 +37550,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2"
-    // InternalSignalDSL.g:10748:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
+    // InternalSignalDSL.g:11147:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
     public final void rule__XClosure__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10752:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
-            // InternalSignalDSL.g:10753:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            // InternalSignalDSL.g:11151:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalSignalDSL.g:11152:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
             {
-            pushFollow(FOLLOW_77);
+            pushFollow(FOLLOW_80);
             rule__XClosure__Group__2__Impl();
 
             state._fsp--;
@@ -36307,23 +37588,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2__Impl"
-    // InternalSignalDSL.g:10760:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    // InternalSignalDSL.g:11159:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
     public final void rule__XClosure__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10764:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
-            // InternalSignalDSL.g:10765:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:11163:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalSignalDSL.g:11164:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
             {
-            // InternalSignalDSL.g:10765:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
-            // InternalSignalDSL.g:10766:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:11164:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:11165:2: ( rule__XClosure__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:10767:2: ( rule__XClosure__ExpressionAssignment_2 )
-            // InternalSignalDSL.g:10767:3: rule__XClosure__ExpressionAssignment_2
+            // InternalSignalDSL.g:11166:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:11166:3: rule__XClosure__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExpressionAssignment_2();
@@ -36358,14 +37639,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3"
-    // InternalSignalDSL.g:10775:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    // InternalSignalDSL.g:11174:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
     public final void rule__XClosure__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10779:1: ( rule__XClosure__Group__3__Impl )
-            // InternalSignalDSL.g:10780:2: rule__XClosure__Group__3__Impl
+            // InternalSignalDSL.g:11178:1: ( rule__XClosure__Group__3__Impl )
+            // InternalSignalDSL.g:11179:2: rule__XClosure__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__3__Impl();
@@ -36391,22 +37672,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3__Impl"
-    // InternalSignalDSL.g:10786:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:11185:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
     public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10790:1: ( ( ']' ) )
-            // InternalSignalDSL.g:10791:1: ( ']' )
+            // InternalSignalDSL.g:11189:1: ( ( ']' ) )
+            // InternalSignalDSL.g:11190:1: ( ']' )
             {
-            // InternalSignalDSL.g:10791:1: ( ']' )
-            // InternalSignalDSL.g:10792:2: ']'
+            // InternalSignalDSL.g:11190:1: ( ']' )
+            // InternalSignalDSL.g:11191:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
-            match(input,83,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
@@ -36432,14 +37713,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0"
-    // InternalSignalDSL.g:10802:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
+    // InternalSignalDSL.g:11201:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
     public final void rule__XClosure__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10806:1: ( rule__XClosure__Group_0__0__Impl )
-            // InternalSignalDSL.g:10807:2: rule__XClosure__Group_0__0__Impl
+            // InternalSignalDSL.g:11205:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalSignalDSL.g:11206:2: rule__XClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0__Impl();
@@ -36465,23 +37746,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0__Impl"
-    // InternalSignalDSL.g:10813:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:11212:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
     public final void rule__XClosure__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10817:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:10818:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:11216:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:11217:1: ( ( rule__XClosure__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:10818:1: ( ( rule__XClosure__Group_0_0__0 ) )
-            // InternalSignalDSL.g:10819:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:11217:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:11218:2: ( rule__XClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:10820:2: ( rule__XClosure__Group_0_0__0 )
-            // InternalSignalDSL.g:10820:3: rule__XClosure__Group_0_0__0
+            // InternalSignalDSL.g:11219:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:11219:3: rule__XClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__0();
@@ -36516,16 +37797,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0"
-    // InternalSignalDSL.g:10829:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
+    // InternalSignalDSL.g:11228:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
     public final void rule__XClosure__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10833:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
-            // InternalSignalDSL.g:10834:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            // InternalSignalDSL.g:11232:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalSignalDSL.g:11233:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_42);
             rule__XClosure__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -36554,23 +37835,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:10841:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11240:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10845:1: ( ( () ) )
-            // InternalSignalDSL.g:10846:1: ( () )
+            // InternalSignalDSL.g:11244:1: ( ( () ) )
+            // InternalSignalDSL.g:11245:1: ( () )
             {
-            // InternalSignalDSL.g:10846:1: ( () )
-            // InternalSignalDSL.g:10847:2: ()
+            // InternalSignalDSL.g:11245:1: ( () )
+            // InternalSignalDSL.g:11246:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:10848:2: ()
-            // InternalSignalDSL.g:10848:3: 
+            // InternalSignalDSL.g:11247:2: ()
+            // InternalSignalDSL.g:11247:3: 
             {
             }
 
@@ -36595,14 +37876,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1"
-    // InternalSignalDSL.g:10856:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
+    // InternalSignalDSL.g:11255:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
     public final void rule__XClosure__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10860:1: ( rule__XClosure__Group_0_0__1__Impl )
-            // InternalSignalDSL.g:10861:2: rule__XClosure__Group_0_0__1__Impl
+            // InternalSignalDSL.g:11259:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalSignalDSL.g:11260:2: rule__XClosure__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__1__Impl();
@@ -36628,22 +37909,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:10867:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:11266:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
     public final void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10871:1: ( ( '[' ) )
-            // InternalSignalDSL.g:10872:1: ( '[' )
+            // InternalSignalDSL.g:11270:1: ( ( '[' ) )
+            // InternalSignalDSL.g:11271:1: ( '[' )
             {
-            // InternalSignalDSL.g:10872:1: ( '[' )
-            // InternalSignalDSL.g:10873:2: '['
+            // InternalSignalDSL.g:11271:1: ( '[' )
+            // InternalSignalDSL.g:11272:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
@@ -36669,14 +37950,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0"
-    // InternalSignalDSL.g:10883:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
+    // InternalSignalDSL.g:11282:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
     public final void rule__XClosure__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10887:1: ( rule__XClosure__Group_1__0__Impl )
-            // InternalSignalDSL.g:10888:2: rule__XClosure__Group_1__0__Impl
+            // InternalSignalDSL.g:11286:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalSignalDSL.g:11287:2: rule__XClosure__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1__0__Impl();
@@ -36702,23 +37983,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0__Impl"
-    // InternalSignalDSL.g:10894:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:11293:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
     public final void rule__XClosure__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10898:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:10899:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalSignalDSL.g:11297:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:11298:1: ( ( rule__XClosure__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:10899:1: ( ( rule__XClosure__Group_1_0__0 ) )
-            // InternalSignalDSL.g:10900:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalSignalDSL.g:11298:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalSignalDSL.g:11299:2: ( rule__XClosure__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:10901:2: ( rule__XClosure__Group_1_0__0 )
-            // InternalSignalDSL.g:10901:3: rule__XClosure__Group_1_0__0
+            // InternalSignalDSL.g:11300:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalSignalDSL.g:11300:3: rule__XClosure__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__0();
@@ -36753,16 +38034,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0"
-    // InternalSignalDSL.g:10910:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
+    // InternalSignalDSL.g:11309:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
     public final void rule__XClosure__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10914:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
-            // InternalSignalDSL.g:10915:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            // InternalSignalDSL.g:11313:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalSignalDSL.g:11314:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
             {
-            pushFollow(FOLLOW_78);
+            pushFollow(FOLLOW_81);
             rule__XClosure__Group_1_0__0__Impl();
 
             state._fsp--;
@@ -36791,31 +38072,31 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:10922:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
+    // InternalSignalDSL.g:11321:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
     public final void rule__XClosure__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10926:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
-            // InternalSignalDSL.g:10927:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalSignalDSL.g:11325:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalSignalDSL.g:11326:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
             {
-            // InternalSignalDSL.g:10927:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
-            // InternalSignalDSL.g:10928:2: ( rule__XClosure__Group_1_0_0__0 )?
+            // InternalSignalDSL.g:11326:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalSignalDSL.g:11327:2: ( rule__XClosure__Group_1_0_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:10929:2: ( rule__XClosure__Group_1_0_0__0 )?
-            int alt90=2;
-            int LA90_0 = input.LA(1);
+            // InternalSignalDSL.g:11328:2: ( rule__XClosure__Group_1_0_0__0 )?
+            int alt93=2;
+            int LA93_0 = input.LA(1);
 
-            if ( (LA90_0==RULE_ID||LA90_0==31||LA90_0==80) ) {
-                alt90=1;
+            if ( (LA93_0==RULE_ID||LA93_0==31||LA93_0==78) ) {
+                alt93=1;
             }
-            switch (alt90) {
+            switch (alt93) {
                 case 1 :
-                    // InternalSignalDSL.g:10929:3: rule__XClosure__Group_1_0_0__0
+                    // InternalSignalDSL.g:11328:3: rule__XClosure__Group_1_0_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1_0_0__0();
@@ -36853,14 +38134,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1"
-    // InternalSignalDSL.g:10937:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:11336:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
     public final void rule__XClosure__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10941:1: ( rule__XClosure__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:10942:2: rule__XClosure__Group_1_0__1__Impl
+            // InternalSignalDSL.g:11340:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:11341:2: rule__XClosure__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__1__Impl();
@@ -36886,23 +38167,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:10948:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:11347:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
     public final void rule__XClosure__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10952:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:10953:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:11351:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:11352:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:10953:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:10954:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalSignalDSL.g:11352:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:11353:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:10955:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
-            // InternalSignalDSL.g:10955:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
+            // InternalSignalDSL.g:11354:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalSignalDSL.g:11354:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExplicitSyntaxAssignment_1_0_1();
@@ -36937,16 +38218,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0"
-    // InternalSignalDSL.g:10964:1: rule__XClosure__Group_1_0_0__0 : rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:11363:1: rule__XClosure__Group_1_0_0__0 : rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 ;
     public final void rule__XClosure__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10968:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
-            // InternalSignalDSL.g:10969:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            // InternalSignalDSL.g:11367:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalSignalDSL.g:11368:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XClosure__Group_1_0_0__0__Impl();
 
             state._fsp--;
@@ -36975,23 +38256,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:10976:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
+    // InternalSignalDSL.g:11375:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
     public final void rule__XClosure__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10980:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
-            // InternalSignalDSL.g:10981:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalSignalDSL.g:11379:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalSignalDSL.g:11380:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
             {
-            // InternalSignalDSL.g:10981:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
-            // InternalSignalDSL.g:10982:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalSignalDSL.g:11380:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalSignalDSL.g:11381:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:10983:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
-            // InternalSignalDSL.g:10983:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
+            // InternalSignalDSL.g:11382:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalSignalDSL.g:11382:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0();
@@ -37026,14 +38307,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1"
-    // InternalSignalDSL.g:10991:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:11390:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
     public final void rule__XClosure__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10995:1: ( rule__XClosure__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:10996:2: rule__XClosure__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:11394:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:11395:2: rule__XClosure__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0__1__Impl();
@@ -37059,37 +38340,37 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:11002:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
+    // InternalSignalDSL.g:11401:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
     public final void rule__XClosure__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11006:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
-            // InternalSignalDSL.g:11007:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalSignalDSL.g:11405:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalSignalDSL.g:11406:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
             {
-            // InternalSignalDSL.g:11007:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
-            // InternalSignalDSL.g:11008:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            // InternalSignalDSL.g:11406:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalSignalDSL.g:11407:2: ( rule__XClosure__Group_1_0_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:11009:2: ( rule__XClosure__Group_1_0_0_1__0 )*
-            loop91:
+            // InternalSignalDSL.g:11408:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            loop94:
             do {
-                int alt91=2;
-                int LA91_0 = input.LA(1);
+                int alt94=2;
+                int LA94_0 = input.LA(1);
 
-                if ( (LA91_0==82) ) {
-                    alt91=1;
+                if ( (LA94_0==80) ) {
+                    alt94=1;
                 }
 
 
-                switch (alt91) {
+                switch (alt94) {
             	case 1 :
-            	    // InternalSignalDSL.g:11009:3: rule__XClosure__Group_1_0_0_1__0
+            	    // InternalSignalDSL.g:11408:3: rule__XClosure__Group_1_0_0_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XClosure__Group_1_0_0_1__0();
 
             	    state._fsp--;
@@ -37099,7 +38380,7 @@
             	    break;
 
             	default :
-            	    break loop91;
+            	    break loop94;
                 }
             } while (true);
 
@@ -37128,16 +38409,16 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0"
-    // InternalSignalDSL.g:11018:1: rule__XClosure__Group_1_0_0_1__0 : rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 ;
+    // InternalSignalDSL.g:11417:1: rule__XClosure__Group_1_0_0_1__0 : rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 ;
     public final void rule__XClosure__Group_1_0_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11022:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
-            // InternalSignalDSL.g:11023:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            // InternalSignalDSL.g:11421:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalSignalDSL.g:11422:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XClosure__Group_1_0_0_1__0__Impl();
 
             state._fsp--;
@@ -37166,22 +38447,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0__Impl"
-    // InternalSignalDSL.g:11030:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:11429:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
     public final void rule__XClosure__Group_1_0_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11034:1: ( ( ',' ) )
-            // InternalSignalDSL.g:11035:1: ( ',' )
+            // InternalSignalDSL.g:11433:1: ( ( ',' ) )
+            // InternalSignalDSL.g:11434:1: ( ',' )
             {
-            // InternalSignalDSL.g:11035:1: ( ',' )
-            // InternalSignalDSL.g:11036:2: ','
+            // InternalSignalDSL.g:11434:1: ( ',' )
+            // InternalSignalDSL.g:11435:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
@@ -37207,14 +38488,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1"
-    // InternalSignalDSL.g:11045:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
+    // InternalSignalDSL.g:11444:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
     public final void rule__XClosure__Group_1_0_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11049:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
-            // InternalSignalDSL.g:11050:2: rule__XClosure__Group_1_0_0_1__1__Impl
+            // InternalSignalDSL.g:11448:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalSignalDSL.g:11449:2: rule__XClosure__Group_1_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0_1__1__Impl();
@@ -37240,23 +38521,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1__Impl"
-    // InternalSignalDSL.g:11056:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
+    // InternalSignalDSL.g:11455:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
     public final void rule__XClosure__Group_1_0_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11060:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
-            // InternalSignalDSL.g:11061:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalSignalDSL.g:11459:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalSignalDSL.g:11460:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
             {
-            // InternalSignalDSL.g:11061:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
-            // InternalSignalDSL.g:11062:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalSignalDSL.g:11460:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalSignalDSL.g:11461:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
             }
-            // InternalSignalDSL.g:11063:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
-            // InternalSignalDSL.g:11063:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
+            // InternalSignalDSL.g:11462:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalSignalDSL.g:11462:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1();
@@ -37291,16 +38572,16 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0"
-    // InternalSignalDSL.g:11072:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
+    // InternalSignalDSL.g:11471:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
     public final void rule__XExpressionInClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11076:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
-            // InternalSignalDSL.g:11077:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            // InternalSignalDSL.g:11475:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalSignalDSL.g:11476:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
             {
-            pushFollow(FOLLOW_76);
+            pushFollow(FOLLOW_79);
             rule__XExpressionInClosure__Group__0__Impl();
 
             state._fsp--;
@@ -37329,23 +38610,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0__Impl"
-    // InternalSignalDSL.g:11084:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11483:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
     public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11088:1: ( ( () ) )
-            // InternalSignalDSL.g:11089:1: ( () )
+            // InternalSignalDSL.g:11487:1: ( ( () ) )
+            // InternalSignalDSL.g:11488:1: ( () )
             {
-            // InternalSignalDSL.g:11089:1: ( () )
-            // InternalSignalDSL.g:11090:2: ()
+            // InternalSignalDSL.g:11488:1: ( () )
+            // InternalSignalDSL.g:11489:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:11091:2: ()
-            // InternalSignalDSL.g:11091:3: 
+            // InternalSignalDSL.g:11490:2: ()
+            // InternalSignalDSL.g:11490:3: 
             {
             }
 
@@ -37370,14 +38651,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1"
-    // InternalSignalDSL.g:11099:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    // InternalSignalDSL.g:11498:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
     public final void rule__XExpressionInClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11103:1: ( rule__XExpressionInClosure__Group__1__Impl )
-            // InternalSignalDSL.g:11104:2: rule__XExpressionInClosure__Group__1__Impl
+            // InternalSignalDSL.g:11502:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalSignalDSL.g:11503:2: rule__XExpressionInClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__1__Impl();
@@ -37403,37 +38684,37 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1__Impl"
-    // InternalSignalDSL.g:11110:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:11509:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
     public final void rule__XExpressionInClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11114:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
-            // InternalSignalDSL.g:11115:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalSignalDSL.g:11513:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalSignalDSL.g:11514:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:11115:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
-            // InternalSignalDSL.g:11116:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            // InternalSignalDSL.g:11514:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalSignalDSL.g:11515:2: ( rule__XExpressionInClosure__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:11117:2: ( rule__XExpressionInClosure__Group_1__0 )*
-            loop92:
+            // InternalSignalDSL.g:11516:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            loop95:
             do {
-                int alt92=2;
-                int LA92_0 = input.LA(1);
+                int alt95=2;
+                int LA95_0 = input.LA(1);
 
-                if ( ((LA92_0>=RULE_ID && LA92_0<=RULE_STRING)||LA92_0==27||(LA92_0>=34 && LA92_0<=35)||LA92_0==40||(LA92_0>=44 && LA92_0<=50)||LA92_0==63||LA92_0==80||(LA92_0>=84 && LA92_0<=85)||LA92_0==88||LA92_0==90||(LA92_0>=93 && LA92_0<=101)||LA92_0==103||(LA92_0>=111 && LA92_0<=112)) ) {
-                    alt92=1;
+                if ( ((LA95_0>=RULE_ID && LA95_0<=RULE_STRING)||LA95_0==27||(LA95_0>=34 && LA95_0<=35)||LA95_0==40||(LA95_0>=44 && LA95_0<=50)||LA95_0==62||LA95_0==78||(LA95_0>=82 && LA95_0<=83)||LA95_0==86||LA95_0==88||(LA95_0>=91 && LA95_0<=99)||LA95_0==101||(LA95_0>=110 && LA95_0<=111)) ) {
+                    alt95=1;
                 }
 
 
-                switch (alt92) {
+                switch (alt95) {
             	case 1 :
-            	    // InternalSignalDSL.g:11117:3: rule__XExpressionInClosure__Group_1__0
+            	    // InternalSignalDSL.g:11516:3: rule__XExpressionInClosure__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_79);
+            	    pushFollow(FOLLOW_82);
             	    rule__XExpressionInClosure__Group_1__0();
 
             	    state._fsp--;
@@ -37443,7 +38724,7 @@
             	    break;
 
             	default :
-            	    break loop92;
+            	    break loop95;
                 }
             } while (true);
 
@@ -37472,16 +38753,16 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0"
-    // InternalSignalDSL.g:11126:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
+    // InternalSignalDSL.g:11525:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
     public final void rule__XExpressionInClosure__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11130:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
-            // InternalSignalDSL.g:11131:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            // InternalSignalDSL.g:11529:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalSignalDSL.g:11530:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_30);
             rule__XExpressionInClosure__Group_1__0__Impl();
 
             state._fsp--;
@@ -37510,23 +38791,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0__Impl"
-    // InternalSignalDSL.g:11138:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
+    // InternalSignalDSL.g:11537:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
     public final void rule__XExpressionInClosure__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11142:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
-            // InternalSignalDSL.g:11143:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalSignalDSL.g:11541:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalSignalDSL.g:11542:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
             {
-            // InternalSignalDSL.g:11143:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
-            // InternalSignalDSL.g:11144:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalSignalDSL.g:11542:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalSignalDSL.g:11543:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
             }
-            // InternalSignalDSL.g:11145:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
-            // InternalSignalDSL.g:11145:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
+            // InternalSignalDSL.g:11544:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalSignalDSL.g:11544:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__ExpressionsAssignment_1_0();
@@ -37561,14 +38842,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1"
-    // InternalSignalDSL.g:11153:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
+    // InternalSignalDSL.g:11552:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
     public final void rule__XExpressionInClosure__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11157:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
-            // InternalSignalDSL.g:11158:2: rule__XExpressionInClosure__Group_1__1__Impl
+            // InternalSignalDSL.g:11556:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalSignalDSL.g:11557:2: rule__XExpressionInClosure__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group_1__1__Impl();
@@ -37594,33 +38875,33 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1__Impl"
-    // InternalSignalDSL.g:11164:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    // InternalSignalDSL.g:11563:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
     public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11168:1: ( ( ( ';' )? ) )
-            // InternalSignalDSL.g:11169:1: ( ( ';' )? )
+            // InternalSignalDSL.g:11567:1: ( ( ( ';' )? ) )
+            // InternalSignalDSL.g:11568:1: ( ( ';' )? )
             {
-            // InternalSignalDSL.g:11169:1: ( ( ';' )? )
-            // InternalSignalDSL.g:11170:2: ( ';' )?
+            // InternalSignalDSL.g:11568:1: ( ( ';' )? )
+            // InternalSignalDSL.g:11569:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
             }
-            // InternalSignalDSL.g:11171:2: ( ';' )?
-            int alt93=2;
-            int LA93_0 = input.LA(1);
+            // InternalSignalDSL.g:11570:2: ( ';' )?
+            int alt96=2;
+            int LA96_0 = input.LA(1);
 
-            if ( (LA93_0==78) ) {
-                alt93=1;
+            if ( (LA96_0==76) ) {
+                alt96=1;
             }
-            switch (alt93) {
+            switch (alt96) {
                 case 1 :
-                    // InternalSignalDSL.g:11171:3: ';'
+                    // InternalSignalDSL.g:11570:3: ';'
                     {
-                    match(input,78,FOLLOW_2); if (state.failed) return ;
+                    match(input,76,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -37652,16 +38933,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0"
-    // InternalSignalDSL.g:11180:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
+    // InternalSignalDSL.g:11579:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
     public final void rule__XShortClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11184:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
-            // InternalSignalDSL.g:11185:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            // InternalSignalDSL.g:11583:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalSignalDSL.g:11584:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XShortClosure__Group__0__Impl();
 
             state._fsp--;
@@ -37690,23 +38971,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0__Impl"
-    // InternalSignalDSL.g:11192:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:11591:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
     public final void rule__XShortClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11196:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
-            // InternalSignalDSL.g:11197:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:11595:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalSignalDSL.g:11596:1: ( ( rule__XShortClosure__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:11197:1: ( ( rule__XShortClosure__Group_0__0 ) )
-            // InternalSignalDSL.g:11198:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalSignalDSL.g:11596:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:11597:2: ( rule__XShortClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:11199:2: ( rule__XShortClosure__Group_0__0 )
-            // InternalSignalDSL.g:11199:3: rule__XShortClosure__Group_0__0
+            // InternalSignalDSL.g:11598:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalSignalDSL.g:11598:3: rule__XShortClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0();
@@ -37741,14 +39022,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1"
-    // InternalSignalDSL.g:11207:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    // InternalSignalDSL.g:11606:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
     public final void rule__XShortClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11211:1: ( rule__XShortClosure__Group__1__Impl )
-            // InternalSignalDSL.g:11212:2: rule__XShortClosure__Group__1__Impl
+            // InternalSignalDSL.g:11610:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalSignalDSL.g:11611:2: rule__XShortClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__1__Impl();
@@ -37774,23 +39055,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1__Impl"
-    // InternalSignalDSL.g:11218:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    // InternalSignalDSL.g:11617:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
     public final void rule__XShortClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11222:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
-            // InternalSignalDSL.g:11223:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:11621:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalSignalDSL.g:11622:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
             {
-            // InternalSignalDSL.g:11223:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
-            // InternalSignalDSL.g:11224:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalSignalDSL.g:11622:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:11623:2: ( rule__XShortClosure__ExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
             }
-            // InternalSignalDSL.g:11225:2: ( rule__XShortClosure__ExpressionAssignment_1 )
-            // InternalSignalDSL.g:11225:3: rule__XShortClosure__ExpressionAssignment_1
+            // InternalSignalDSL.g:11624:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalSignalDSL.g:11624:3: rule__XShortClosure__ExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExpressionAssignment_1();
@@ -37825,14 +39106,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0"
-    // InternalSignalDSL.g:11234:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
+    // InternalSignalDSL.g:11633:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
     public final void rule__XShortClosure__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11238:1: ( rule__XShortClosure__Group_0__0__Impl )
-            // InternalSignalDSL.g:11239:2: rule__XShortClosure__Group_0__0__Impl
+            // InternalSignalDSL.g:11637:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalSignalDSL.g:11638:2: rule__XShortClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0__Impl();
@@ -37858,23 +39139,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0__Impl"
-    // InternalSignalDSL.g:11245:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:11644:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
     public final void rule__XShortClosure__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11249:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:11250:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:11648:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:11649:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:11250:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
-            // InternalSignalDSL.g:11251:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:11649:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:11650:2: ( rule__XShortClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:11252:2: ( rule__XShortClosure__Group_0_0__0 )
-            // InternalSignalDSL.g:11252:3: rule__XShortClosure__Group_0_0__0
+            // InternalSignalDSL.g:11651:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:11651:3: rule__XShortClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__0();
@@ -37909,16 +39190,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0"
-    // InternalSignalDSL.g:11261:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
+    // InternalSignalDSL.g:11660:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
     public final void rule__XShortClosure__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11265:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
-            // InternalSignalDSL.g:11266:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            // InternalSignalDSL.g:11664:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalSignalDSL.g:11665:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
             {
-            pushFollow(FOLLOW_78);
+            pushFollow(FOLLOW_81);
             rule__XShortClosure__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -37947,23 +39228,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:11273:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11672:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11277:1: ( ( () ) )
-            // InternalSignalDSL.g:11278:1: ( () )
+            // InternalSignalDSL.g:11676:1: ( ( () ) )
+            // InternalSignalDSL.g:11677:1: ( () )
             {
-            // InternalSignalDSL.g:11278:1: ( () )
-            // InternalSignalDSL.g:11279:2: ()
+            // InternalSignalDSL.g:11677:1: ( () )
+            // InternalSignalDSL.g:11678:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:11280:2: ()
-            // InternalSignalDSL.g:11280:3: 
+            // InternalSignalDSL.g:11679:2: ()
+            // InternalSignalDSL.g:11679:3: 
             {
             }
 
@@ -37988,16 +39269,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1"
-    // InternalSignalDSL.g:11288:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
+    // InternalSignalDSL.g:11687:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
     public final void rule__XShortClosure__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11292:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
-            // InternalSignalDSL.g:11293:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            // InternalSignalDSL.g:11691:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalSignalDSL.g:11692:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
             {
-            pushFollow(FOLLOW_78);
+            pushFollow(FOLLOW_81);
             rule__XShortClosure__Group_0_0__1__Impl();
 
             state._fsp--;
@@ -38026,31 +39307,31 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:11300:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
+    // InternalSignalDSL.g:11699:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
     public final void rule__XShortClosure__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11304:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
-            // InternalSignalDSL.g:11305:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalSignalDSL.g:11703:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalSignalDSL.g:11704:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
             {
-            // InternalSignalDSL.g:11305:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
-            // InternalSignalDSL.g:11306:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            // InternalSignalDSL.g:11704:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalSignalDSL.g:11705:2: ( rule__XShortClosure__Group_0_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
             }
-            // InternalSignalDSL.g:11307:2: ( rule__XShortClosure__Group_0_0_1__0 )?
-            int alt94=2;
-            int LA94_0 = input.LA(1);
+            // InternalSignalDSL.g:11706:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
 
-            if ( (LA94_0==RULE_ID||LA94_0==31||LA94_0==80) ) {
-                alt94=1;
+            if ( (LA97_0==RULE_ID||LA97_0==31||LA97_0==78) ) {
+                alt97=1;
             }
-            switch (alt94) {
+            switch (alt97) {
                 case 1 :
-                    // InternalSignalDSL.g:11307:3: rule__XShortClosure__Group_0_0_1__0
+                    // InternalSignalDSL.g:11706:3: rule__XShortClosure__Group_0_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XShortClosure__Group_0_0_1__0();
@@ -38088,14 +39369,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2"
-    // InternalSignalDSL.g:11315:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
+    // InternalSignalDSL.g:11714:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
     public final void rule__XShortClosure__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11319:1: ( rule__XShortClosure__Group_0_0__2__Impl )
-            // InternalSignalDSL.g:11320:2: rule__XShortClosure__Group_0_0__2__Impl
+            // InternalSignalDSL.g:11718:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalSignalDSL.g:11719:2: rule__XShortClosure__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__2__Impl();
@@ -38121,23 +39402,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2__Impl"
-    // InternalSignalDSL.g:11326:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
+    // InternalSignalDSL.g:11725:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
     public final void rule__XShortClosure__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11330:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
-            // InternalSignalDSL.g:11331:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalSignalDSL.g:11729:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalSignalDSL.g:11730:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
             {
-            // InternalSignalDSL.g:11331:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
-            // InternalSignalDSL.g:11332:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalSignalDSL.g:11730:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalSignalDSL.g:11731:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
             }
-            // InternalSignalDSL.g:11333:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
-            // InternalSignalDSL.g:11333:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
+            // InternalSignalDSL.g:11732:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalSignalDSL.g:11732:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2();
@@ -38172,16 +39453,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0"
-    // InternalSignalDSL.g:11342:1: rule__XShortClosure__Group_0_0_1__0 : rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 ;
+    // InternalSignalDSL.g:11741:1: rule__XShortClosure__Group_0_0_1__0 : rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 ;
     public final void rule__XShortClosure__Group_0_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11346:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
-            // InternalSignalDSL.g:11347:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            // InternalSignalDSL.g:11745:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalSignalDSL.g:11746:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XShortClosure__Group_0_0_1__0__Impl();
 
             state._fsp--;
@@ -38210,23 +39491,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0__Impl"
-    // InternalSignalDSL.g:11354:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
+    // InternalSignalDSL.g:11753:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
     public final void rule__XShortClosure__Group_0_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11358:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
-            // InternalSignalDSL.g:11359:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalSignalDSL.g:11757:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalSignalDSL.g:11758:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
             {
-            // InternalSignalDSL.g:11359:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
-            // InternalSignalDSL.g:11360:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalSignalDSL.g:11758:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalSignalDSL.g:11759:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:11361:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
-            // InternalSignalDSL.g:11361:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
+            // InternalSignalDSL.g:11760:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalSignalDSL.g:11760:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0();
@@ -38261,14 +39542,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1"
-    // InternalSignalDSL.g:11369:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
+    // InternalSignalDSL.g:11768:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
     public final void rule__XShortClosure__Group_0_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11373:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
-            // InternalSignalDSL.g:11374:2: rule__XShortClosure__Group_0_0_1__1__Impl
+            // InternalSignalDSL.g:11772:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalSignalDSL.g:11773:2: rule__XShortClosure__Group_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1__1__Impl();
@@ -38294,37 +39575,37 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1__Impl"
-    // InternalSignalDSL.g:11380:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:11779:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
     public final void rule__XShortClosure__Group_0_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11384:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:11385:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalSignalDSL.g:11783:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:11784:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:11385:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
-            // InternalSignalDSL.g:11386:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            // InternalSignalDSL.g:11784:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalSignalDSL.g:11785:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
             }
-            // InternalSignalDSL.g:11387:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
-            loop95:
+            // InternalSignalDSL.g:11786:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            loop98:
             do {
-                int alt95=2;
-                int LA95_0 = input.LA(1);
+                int alt98=2;
+                int LA98_0 = input.LA(1);
 
-                if ( (LA95_0==82) ) {
-                    alt95=1;
+                if ( (LA98_0==80) ) {
+                    alt98=1;
                 }
 
 
-                switch (alt95) {
+                switch (alt98) {
             	case 1 :
-            	    // InternalSignalDSL.g:11387:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    // InternalSignalDSL.g:11786:3: rule__XShortClosure__Group_0_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XShortClosure__Group_0_0_1_1__0();
 
             	    state._fsp--;
@@ -38334,7 +39615,7 @@
             	    break;
 
             	default :
-            	    break loop95;
+            	    break loop98;
                 }
             } while (true);
 
@@ -38363,16 +39644,16 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0"
-    // InternalSignalDSL.g:11396:1: rule__XShortClosure__Group_0_0_1_1__0 : rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 ;
+    // InternalSignalDSL.g:11795:1: rule__XShortClosure__Group_0_0_1_1__0 : rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 ;
     public final void rule__XShortClosure__Group_0_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11400:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
-            // InternalSignalDSL.g:11401:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            // InternalSignalDSL.g:11799:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalSignalDSL.g:11800:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XShortClosure__Group_0_0_1_1__0__Impl();
 
             state._fsp--;
@@ -38401,22 +39682,22 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0__Impl"
-    // InternalSignalDSL.g:11408:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:11807:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XShortClosure__Group_0_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11412:1: ( ( ',' ) )
-            // InternalSignalDSL.g:11413:1: ( ',' )
+            // InternalSignalDSL.g:11811:1: ( ( ',' ) )
+            // InternalSignalDSL.g:11812:1: ( ',' )
             {
-            // InternalSignalDSL.g:11413:1: ( ',' )
-            // InternalSignalDSL.g:11414:2: ','
+            // InternalSignalDSL.g:11812:1: ( ',' )
+            // InternalSignalDSL.g:11813:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
@@ -38442,14 +39723,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1"
-    // InternalSignalDSL.g:11423:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:11822:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
     public final void rule__XShortClosure__Group_0_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11427:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
-            // InternalSignalDSL.g:11428:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
+            // InternalSignalDSL.g:11826:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalSignalDSL.g:11827:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1_1__1__Impl();
@@ -38475,23 +39756,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1__Impl"
-    // InternalSignalDSL.g:11434:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:11833:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
     public final void rule__XShortClosure__Group_0_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11438:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:11439:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalSignalDSL.g:11837:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:11838:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:11439:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
-            // InternalSignalDSL.g:11440:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalSignalDSL.g:11838:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalSignalDSL.g:11839:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:11441:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
-            // InternalSignalDSL.g:11441:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
+            // InternalSignalDSL.g:11840:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalSignalDSL.g:11840:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1();
@@ -38526,16 +39807,16 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0"
-    // InternalSignalDSL.g:11450:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
+    // InternalSignalDSL.g:11849:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
     public final void rule__XParenthesizedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11454:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
-            // InternalSignalDSL.g:11455:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            // InternalSignalDSL.g:11853:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalSignalDSL.g:11854:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XParenthesizedExpression__Group__0__Impl();
 
             state._fsp--;
@@ -38564,22 +39845,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0__Impl"
-    // InternalSignalDSL.g:11462:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:11861:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
     public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11466:1: ( ( '(' ) )
-            // InternalSignalDSL.g:11467:1: ( '(' )
+            // InternalSignalDSL.g:11865:1: ( ( '(' ) )
+            // InternalSignalDSL.g:11866:1: ( '(' )
             {
-            // InternalSignalDSL.g:11467:1: ( '(' )
-            // InternalSignalDSL.g:11468:2: '('
+            // InternalSignalDSL.g:11866:1: ( '(' )
+            // InternalSignalDSL.g:11867:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
@@ -38605,16 +39886,16 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1"
-    // InternalSignalDSL.g:11477:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
+    // InternalSignalDSL.g:11876:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
     public final void rule__XParenthesizedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11481:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
-            // InternalSignalDSL.g:11482:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            // InternalSignalDSL.g:11880:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalSignalDSL.g:11881:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XParenthesizedExpression__Group__1__Impl();
 
             state._fsp--;
@@ -38643,17 +39924,17 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1__Impl"
-    // InternalSignalDSL.g:11489:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:11888:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
     public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11493:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:11494:1: ( ruleXExpression )
+            // InternalSignalDSL.g:11892:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:11893:1: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:11494:1: ( ruleXExpression )
-            // InternalSignalDSL.g:11495:2: ruleXExpression
+            // InternalSignalDSL.g:11893:1: ( ruleXExpression )
+            // InternalSignalDSL.g:11894:2: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -38688,14 +39969,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2"
-    // InternalSignalDSL.g:11504:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    // InternalSignalDSL.g:11903:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
     public final void rule__XParenthesizedExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11508:1: ( rule__XParenthesizedExpression__Group__2__Impl )
-            // InternalSignalDSL.g:11509:2: rule__XParenthesizedExpression__Group__2__Impl
+            // InternalSignalDSL.g:11907:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalSignalDSL.g:11908:2: rule__XParenthesizedExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__2__Impl();
@@ -38721,22 +40002,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2__Impl"
-    // InternalSignalDSL.g:11515:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:11914:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11519:1: ( ( ')' ) )
-            // InternalSignalDSL.g:11520:1: ( ')' )
+            // InternalSignalDSL.g:11918:1: ( ( ')' ) )
+            // InternalSignalDSL.g:11919:1: ( ')' )
             {
-            // InternalSignalDSL.g:11520:1: ( ')' )
-            // InternalSignalDSL.g:11521:2: ')'
+            // InternalSignalDSL.g:11919:1: ( ')' )
+            // InternalSignalDSL.g:11920:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -38762,16 +40043,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0"
-    // InternalSignalDSL.g:11531:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
+    // InternalSignalDSL.g:11930:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
     public final void rule__XIfExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11535:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
-            // InternalSignalDSL.g:11536:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            // InternalSignalDSL.g:11934:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalSignalDSL.g:11935:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
             {
-            pushFollow(FOLLOW_81);
+            pushFollow(FOLLOW_84);
             rule__XIfExpression__Group__0__Impl();
 
             state._fsp--;
@@ -38800,23 +40081,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0__Impl"
-    // InternalSignalDSL.g:11543:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11942:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
     public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11547:1: ( ( () ) )
-            // InternalSignalDSL.g:11548:1: ( () )
+            // InternalSignalDSL.g:11946:1: ( ( () ) )
+            // InternalSignalDSL.g:11947:1: ( () )
             {
-            // InternalSignalDSL.g:11548:1: ( () )
-            // InternalSignalDSL.g:11549:2: ()
+            // InternalSignalDSL.g:11947:1: ( () )
+            // InternalSignalDSL.g:11948:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:11550:2: ()
-            // InternalSignalDSL.g:11550:3: 
+            // InternalSignalDSL.g:11949:2: ()
+            // InternalSignalDSL.g:11949:3: 
             {
             }
 
@@ -38841,16 +40122,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1"
-    // InternalSignalDSL.g:11558:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
+    // InternalSignalDSL.g:11957:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
     public final void rule__XIfExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11562:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
-            // InternalSignalDSL.g:11563:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            // InternalSignalDSL.g:11961:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalSignalDSL.g:11962:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XIfExpression__Group__1__Impl();
 
             state._fsp--;
@@ -38879,22 +40160,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1__Impl"
-    // InternalSignalDSL.g:11570:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    // InternalSignalDSL.g:11969:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
     public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11574:1: ( ( 'if' ) )
-            // InternalSignalDSL.g:11575:1: ( 'if' )
+            // InternalSignalDSL.g:11973:1: ( ( 'if' ) )
+            // InternalSignalDSL.g:11974:1: ( 'if' )
             {
-            // InternalSignalDSL.g:11575:1: ( 'if' )
-            // InternalSignalDSL.g:11576:2: 'if'
+            // InternalSignalDSL.g:11974:1: ( 'if' )
+            // InternalSignalDSL.g:11975:2: 'if'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
             }
-            match(input,88,FOLLOW_2); if (state.failed) return ;
+            match(input,86,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
             }
@@ -38920,16 +40201,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2"
-    // InternalSignalDSL.g:11585:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
+    // InternalSignalDSL.g:11984:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
     public final void rule__XIfExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11589:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
-            // InternalSignalDSL.g:11590:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            // InternalSignalDSL.g:11988:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalSignalDSL.g:11989:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XIfExpression__Group__2__Impl();
 
             state._fsp--;
@@ -38958,22 +40239,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2__Impl"
-    // InternalSignalDSL.g:11597:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:11996:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11601:1: ( ( '(' ) )
-            // InternalSignalDSL.g:11602:1: ( '(' )
+            // InternalSignalDSL.g:12000:1: ( ( '(' ) )
+            // InternalSignalDSL.g:12001:1: ( '(' )
             {
-            // InternalSignalDSL.g:11602:1: ( '(' )
-            // InternalSignalDSL.g:11603:2: '('
+            // InternalSignalDSL.g:12001:1: ( '(' )
+            // InternalSignalDSL.g:12002:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -38999,16 +40280,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3"
-    // InternalSignalDSL.g:11612:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
+    // InternalSignalDSL.g:12011:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
     public final void rule__XIfExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11616:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
-            // InternalSignalDSL.g:11617:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            // InternalSignalDSL.g:12015:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalSignalDSL.g:12016:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XIfExpression__Group__3__Impl();
 
             state._fsp--;
@@ -39037,23 +40318,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3__Impl"
-    // InternalSignalDSL.g:11624:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    // InternalSignalDSL.g:12023:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
     public final void rule__XIfExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11628:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
-            // InternalSignalDSL.g:11629:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalSignalDSL.g:12027:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalSignalDSL.g:12028:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
             {
-            // InternalSignalDSL.g:11629:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
-            // InternalSignalDSL.g:11630:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalSignalDSL.g:12028:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalSignalDSL.g:12029:2: ( rule__XIfExpression__IfAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
             }
-            // InternalSignalDSL.g:11631:2: ( rule__XIfExpression__IfAssignment_3 )
-            // InternalSignalDSL.g:11631:3: rule__XIfExpression__IfAssignment_3
+            // InternalSignalDSL.g:12030:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalSignalDSL.g:12030:3: rule__XIfExpression__IfAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__IfAssignment_3();
@@ -39088,16 +40369,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4"
-    // InternalSignalDSL.g:11639:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
+    // InternalSignalDSL.g:12038:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
     public final void rule__XIfExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11643:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
-            // InternalSignalDSL.g:11644:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            // InternalSignalDSL.g:12042:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalSignalDSL.g:12043:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XIfExpression__Group__4__Impl();
 
             state._fsp--;
@@ -39126,22 +40407,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4__Impl"
-    // InternalSignalDSL.g:11651:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:12050:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11655:1: ( ( ')' ) )
-            // InternalSignalDSL.g:11656:1: ( ')' )
+            // InternalSignalDSL.g:12054:1: ( ( ')' ) )
+            // InternalSignalDSL.g:12055:1: ( ')' )
             {
-            // InternalSignalDSL.g:11656:1: ( ')' )
-            // InternalSignalDSL.g:11657:2: ')'
+            // InternalSignalDSL.g:12055:1: ( ')' )
+            // InternalSignalDSL.g:12056:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -39167,16 +40448,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5"
-    // InternalSignalDSL.g:11666:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
+    // InternalSignalDSL.g:12065:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
     public final void rule__XIfExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11670:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
-            // InternalSignalDSL.g:11671:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            // InternalSignalDSL.g:12069:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalSignalDSL.g:12070:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
             {
-            pushFollow(FOLLOW_82);
+            pushFollow(FOLLOW_85);
             rule__XIfExpression__Group__5__Impl();
 
             state._fsp--;
@@ -39205,23 +40486,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5__Impl"
-    // InternalSignalDSL.g:11678:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    // InternalSignalDSL.g:12077:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
     public final void rule__XIfExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11682:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
-            // InternalSignalDSL.g:11683:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalSignalDSL.g:12081:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalSignalDSL.g:12082:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
             {
-            // InternalSignalDSL.g:11683:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
-            // InternalSignalDSL.g:11684:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalSignalDSL.g:12082:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalSignalDSL.g:12083:2: ( rule__XIfExpression__ThenAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
             }
-            // InternalSignalDSL.g:11685:2: ( rule__XIfExpression__ThenAssignment_5 )
-            // InternalSignalDSL.g:11685:3: rule__XIfExpression__ThenAssignment_5
+            // InternalSignalDSL.g:12084:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalSignalDSL.g:12084:3: rule__XIfExpression__ThenAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ThenAssignment_5();
@@ -39256,14 +40537,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6"
-    // InternalSignalDSL.g:11693:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    // InternalSignalDSL.g:12092:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
     public final void rule__XIfExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11697:1: ( rule__XIfExpression__Group__6__Impl )
-            // InternalSignalDSL.g:11698:2: rule__XIfExpression__Group__6__Impl
+            // InternalSignalDSL.g:12096:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalSignalDSL.g:12097:2: rule__XIfExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__6__Impl();
@@ -39289,35 +40570,35 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6__Impl"
-    // InternalSignalDSL.g:11704:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
+    // InternalSignalDSL.g:12103:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
     public final void rule__XIfExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11708:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
-            // InternalSignalDSL.g:11709:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalSignalDSL.g:12107:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalSignalDSL.g:12108:1: ( ( rule__XIfExpression__Group_6__0 )? )
             {
-            // InternalSignalDSL.g:11709:1: ( ( rule__XIfExpression__Group_6__0 )? )
-            // InternalSignalDSL.g:11710:2: ( rule__XIfExpression__Group_6__0 )?
+            // InternalSignalDSL.g:12108:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalSignalDSL.g:12109:2: ( rule__XIfExpression__Group_6__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
             }
-            // InternalSignalDSL.g:11711:2: ( rule__XIfExpression__Group_6__0 )?
-            int alt96=2;
-            int LA96_0 = input.LA(1);
+            // InternalSignalDSL.g:12110:2: ( rule__XIfExpression__Group_6__0 )?
+            int alt99=2;
+            int LA99_0 = input.LA(1);
 
-            if ( (LA96_0==89) ) {
-                int LA96_1 = input.LA(2);
+            if ( (LA99_0==87) ) {
+                int LA99_1 = input.LA(2);
 
-                if ( (synpred148_InternalSignalDSL()) ) {
-                    alt96=1;
+                if ( (synpred151_InternalSignalDSL()) ) {
+                    alt99=1;
                 }
             }
-            switch (alt96) {
+            switch (alt99) {
                 case 1 :
-                    // InternalSignalDSL.g:11711:3: rule__XIfExpression__Group_6__0
+                    // InternalSignalDSL.g:12110:3: rule__XIfExpression__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XIfExpression__Group_6__0();
@@ -39355,16 +40636,16 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0"
-    // InternalSignalDSL.g:11720:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
+    // InternalSignalDSL.g:12119:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
     public final void rule__XIfExpression__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11724:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
-            // InternalSignalDSL.g:11725:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            // InternalSignalDSL.g:12123:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalSignalDSL.g:12124:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XIfExpression__Group_6__0__Impl();
 
             state._fsp--;
@@ -39393,25 +40674,25 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0__Impl"
-    // InternalSignalDSL.g:11732:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    // InternalSignalDSL.g:12131:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
     public final void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11736:1: ( ( ( 'else' ) ) )
-            // InternalSignalDSL.g:11737:1: ( ( 'else' ) )
+            // InternalSignalDSL.g:12135:1: ( ( ( 'else' ) ) )
+            // InternalSignalDSL.g:12136:1: ( ( 'else' ) )
             {
-            // InternalSignalDSL.g:11737:1: ( ( 'else' ) )
-            // InternalSignalDSL.g:11738:2: ( 'else' )
+            // InternalSignalDSL.g:12136:1: ( ( 'else' ) )
+            // InternalSignalDSL.g:12137:2: ( 'else' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
             }
-            // InternalSignalDSL.g:11739:2: ( 'else' )
-            // InternalSignalDSL.g:11739:3: 'else'
+            // InternalSignalDSL.g:12138:2: ( 'else' )
+            // InternalSignalDSL.g:12138:3: 'else'
             {
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,87,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -39440,14 +40721,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1"
-    // InternalSignalDSL.g:11747:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
+    // InternalSignalDSL.g:12146:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
     public final void rule__XIfExpression__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11751:1: ( rule__XIfExpression__Group_6__1__Impl )
-            // InternalSignalDSL.g:11752:2: rule__XIfExpression__Group_6__1__Impl
+            // InternalSignalDSL.g:12150:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalSignalDSL.g:12151:2: rule__XIfExpression__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group_6__1__Impl();
@@ -39473,23 +40754,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1__Impl"
-    // InternalSignalDSL.g:11758:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
+    // InternalSignalDSL.g:12157:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
     public final void rule__XIfExpression__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11762:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
-            // InternalSignalDSL.g:11763:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalSignalDSL.g:12161:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalSignalDSL.g:12162:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
             {
-            // InternalSignalDSL.g:11763:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
-            // InternalSignalDSL.g:11764:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalSignalDSL.g:12162:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalSignalDSL.g:12163:2: ( rule__XIfExpression__ElseAssignment_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
             }
-            // InternalSignalDSL.g:11765:2: ( rule__XIfExpression__ElseAssignment_6_1 )
-            // InternalSignalDSL.g:11765:3: rule__XIfExpression__ElseAssignment_6_1
+            // InternalSignalDSL.g:12164:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalSignalDSL.g:12164:3: rule__XIfExpression__ElseAssignment_6_1
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ElseAssignment_6_1();
@@ -39524,16 +40805,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0"
-    // InternalSignalDSL.g:11774:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
+    // InternalSignalDSL.g:12173:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
     public final void rule__XSwitchExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11778:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
-            // InternalSignalDSL.g:11779:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            // InternalSignalDSL.g:12177:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalSignalDSL.g:12178:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
             {
-            pushFollow(FOLLOW_83);
+            pushFollow(FOLLOW_86);
             rule__XSwitchExpression__Group__0__Impl();
 
             state._fsp--;
@@ -39562,23 +40843,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0__Impl"
-    // InternalSignalDSL.g:11786:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:12185:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
     public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11790:1: ( ( () ) )
-            // InternalSignalDSL.g:11791:1: ( () )
+            // InternalSignalDSL.g:12189:1: ( ( () ) )
+            // InternalSignalDSL.g:12190:1: ( () )
             {
-            // InternalSignalDSL.g:11791:1: ( () )
-            // InternalSignalDSL.g:11792:2: ()
+            // InternalSignalDSL.g:12190:1: ( () )
+            // InternalSignalDSL.g:12191:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:11793:2: ()
-            // InternalSignalDSL.g:11793:3: 
+            // InternalSignalDSL.g:12192:2: ()
+            // InternalSignalDSL.g:12192:3: 
             {
             }
 
@@ -39603,16 +40884,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1"
-    // InternalSignalDSL.g:11801:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
+    // InternalSignalDSL.g:12200:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
     public final void rule__XSwitchExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11805:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
-            // InternalSignalDSL.g:11806:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            // InternalSignalDSL.g:12204:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalSignalDSL.g:12205:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
             {
-            pushFollow(FOLLOW_84);
+            pushFollow(FOLLOW_87);
             rule__XSwitchExpression__Group__1__Impl();
 
             state._fsp--;
@@ -39641,22 +40922,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1__Impl"
-    // InternalSignalDSL.g:11813:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    // InternalSignalDSL.g:12212:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
     public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11817:1: ( ( 'switch' ) )
-            // InternalSignalDSL.g:11818:1: ( 'switch' )
+            // InternalSignalDSL.g:12216:1: ( ( 'switch' ) )
+            // InternalSignalDSL.g:12217:1: ( 'switch' )
             {
-            // InternalSignalDSL.g:11818:1: ( 'switch' )
-            // InternalSignalDSL.g:11819:2: 'switch'
+            // InternalSignalDSL.g:12217:1: ( 'switch' )
+            // InternalSignalDSL.g:12218:2: 'switch'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,88,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
             }
@@ -39682,14 +40963,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2"
-    // InternalSignalDSL.g:11828:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
+    // InternalSignalDSL.g:12227:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
     public final void rule__XSwitchExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11832:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
-            // InternalSignalDSL.g:11833:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
+            // InternalSignalDSL.g:12231:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalSignalDSL.g:12232:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
             {
             pushFollow(FOLLOW_7);
             rule__XSwitchExpression__Group__2__Impl();
@@ -39720,23 +41001,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2__Impl"
-    // InternalSignalDSL.g:11840:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    // InternalSignalDSL.g:12239:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
     public final void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11844:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
-            // InternalSignalDSL.g:11845:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalSignalDSL.g:12243:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalSignalDSL.g:12244:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
             {
-            // InternalSignalDSL.g:11845:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
-            // InternalSignalDSL.g:11846:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalSignalDSL.g:12244:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalSignalDSL.g:12245:2: ( rule__XSwitchExpression__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:11847:2: ( rule__XSwitchExpression__Alternatives_2 )
-            // InternalSignalDSL.g:11847:3: rule__XSwitchExpression__Alternatives_2
+            // InternalSignalDSL.g:12246:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalSignalDSL.g:12246:3: rule__XSwitchExpression__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Alternatives_2();
@@ -39771,16 +41052,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3"
-    // InternalSignalDSL.g:11855:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
+    // InternalSignalDSL.g:12254:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
     public final void rule__XSwitchExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11859:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
-            // InternalSignalDSL.g:11860:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            // InternalSignalDSL.g:12258:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalSignalDSL.g:12259:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
             {
-            pushFollow(FOLLOW_85);
+            pushFollow(FOLLOW_88);
             rule__XSwitchExpression__Group__3__Impl();
 
             state._fsp--;
@@ -39809,22 +41090,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3__Impl"
-    // InternalSignalDSL.g:11867:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:12266:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
     public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11871:1: ( ( '{' ) )
-            // InternalSignalDSL.g:11872:1: ( '{' )
+            // InternalSignalDSL.g:12270:1: ( ( '{' ) )
+            // InternalSignalDSL.g:12271:1: ( '{' )
             {
-            // InternalSignalDSL.g:11872:1: ( '{' )
-            // InternalSignalDSL.g:11873:2: '{'
+            // InternalSignalDSL.g:12271:1: ( '{' )
+            // InternalSignalDSL.g:12272:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
             }
-            match(input,63,FOLLOW_2); if (state.failed) return ;
+            match(input,62,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
             }
@@ -39850,16 +41131,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4"
-    // InternalSignalDSL.g:11882:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
+    // InternalSignalDSL.g:12281:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
     public final void rule__XSwitchExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11886:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
-            // InternalSignalDSL.g:11887:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            // InternalSignalDSL.g:12285:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalSignalDSL.g:12286:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
             {
-            pushFollow(FOLLOW_85);
+            pushFollow(FOLLOW_88);
             rule__XSwitchExpression__Group__4__Impl();
 
             state._fsp--;
@@ -39888,37 +41169,37 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4__Impl"
-    // InternalSignalDSL.g:11894:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    // InternalSignalDSL.g:12293:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
     public final void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11898:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
-            // InternalSignalDSL.g:11899:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalSignalDSL.g:12297:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalSignalDSL.g:12298:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
             {
-            // InternalSignalDSL.g:11899:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
-            // InternalSignalDSL.g:11900:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            // InternalSignalDSL.g:12298:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalSignalDSL.g:12299:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
             }
-            // InternalSignalDSL.g:11901:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
-            loop97:
+            // InternalSignalDSL.g:12300:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            loop100:
             do {
-                int alt97=2;
-                int LA97_0 = input.LA(1);
+                int alt100=2;
+                int LA100_0 = input.LA(1);
 
-                if ( (LA97_0==RULE_ID||LA97_0==31||LA97_0==73||LA97_0==80||LA97_0==82||LA97_0==92) ) {
-                    alt97=1;
+                if ( (LA100_0==RULE_ID||LA100_0==31||LA100_0==72||LA100_0==78||LA100_0==80||LA100_0==90) ) {
+                    alt100=1;
                 }
 
 
-                switch (alt97) {
+                switch (alt100) {
             	case 1 :
-            	    // InternalSignalDSL.g:11901:3: rule__XSwitchExpression__CasesAssignment_4
+            	    // InternalSignalDSL.g:12300:3: rule__XSwitchExpression__CasesAssignment_4
             	    {
-            	    pushFollow(FOLLOW_86);
+            	    pushFollow(FOLLOW_89);
             	    rule__XSwitchExpression__CasesAssignment_4();
 
             	    state._fsp--;
@@ -39928,7 +41209,7 @@
             	    break;
 
             	default :
-            	    break loop97;
+            	    break loop100;
                 }
             } while (true);
 
@@ -39957,16 +41238,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5"
-    // InternalSignalDSL.g:11909:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
+    // InternalSignalDSL.g:12308:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
     public final void rule__XSwitchExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11913:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
-            // InternalSignalDSL.g:11914:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            // InternalSignalDSL.g:12312:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalSignalDSL.g:12313:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
             {
-            pushFollow(FOLLOW_85);
+            pushFollow(FOLLOW_88);
             rule__XSwitchExpression__Group__5__Impl();
 
             state._fsp--;
@@ -39995,31 +41276,31 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5__Impl"
-    // InternalSignalDSL.g:11921:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
+    // InternalSignalDSL.g:12320:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
     public final void rule__XSwitchExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11925:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
-            // InternalSignalDSL.g:11926:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalSignalDSL.g:12324:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalSignalDSL.g:12325:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
             {
-            // InternalSignalDSL.g:11926:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
-            // InternalSignalDSL.g:11927:2: ( rule__XSwitchExpression__Group_5__0 )?
+            // InternalSignalDSL.g:12325:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalSignalDSL.g:12326:2: ( rule__XSwitchExpression__Group_5__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
             }
-            // InternalSignalDSL.g:11928:2: ( rule__XSwitchExpression__Group_5__0 )?
-            int alt98=2;
-            int LA98_0 = input.LA(1);
+            // InternalSignalDSL.g:12327:2: ( rule__XSwitchExpression__Group_5__0 )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
 
-            if ( (LA98_0==91) ) {
-                alt98=1;
+            if ( (LA101_0==89) ) {
+                alt101=1;
             }
-            switch (alt98) {
+            switch (alt101) {
                 case 1 :
-                    // InternalSignalDSL.g:11928:3: rule__XSwitchExpression__Group_5__0
+                    // InternalSignalDSL.g:12327:3: rule__XSwitchExpression__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_5__0();
@@ -40057,14 +41338,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6"
-    // InternalSignalDSL.g:11936:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    // InternalSignalDSL.g:12335:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
     public final void rule__XSwitchExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11940:1: ( rule__XSwitchExpression__Group__6__Impl )
-            // InternalSignalDSL.g:11941:2: rule__XSwitchExpression__Group__6__Impl
+            // InternalSignalDSL.g:12339:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalSignalDSL.g:12340:2: rule__XSwitchExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__6__Impl();
@@ -40090,22 +41371,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6__Impl"
-    // InternalSignalDSL.g:11947:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:12346:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
     public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11951:1: ( ( '}' ) )
-            // InternalSignalDSL.g:11952:1: ( '}' )
+            // InternalSignalDSL.g:12350:1: ( ( '}' ) )
+            // InternalSignalDSL.g:12351:1: ( '}' )
             {
-            // InternalSignalDSL.g:11952:1: ( '}' )
-            // InternalSignalDSL.g:11953:2: '}'
+            // InternalSignalDSL.g:12351:1: ( '}' )
+            // InternalSignalDSL.g:12352:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
             }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
             }
@@ -40131,16 +41412,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0"
-    // InternalSignalDSL.g:11963:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
+    // InternalSignalDSL.g:12362:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
     public final void rule__XSwitchExpression__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11967:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
-            // InternalSignalDSL.g:11968:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            // InternalSignalDSL.g:12366:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalSignalDSL.g:12367:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XSwitchExpression__Group_2_0__0__Impl();
 
             state._fsp--;
@@ -40169,23 +41450,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:11975:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
+    // InternalSignalDSL.g:12374:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11979:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
-            // InternalSignalDSL.g:11980:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:12378:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalSignalDSL.g:12379:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
             {
-            // InternalSignalDSL.g:11980:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
-            // InternalSignalDSL.g:11981:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalSignalDSL.g:12379:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:12380:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
             }
-            // InternalSignalDSL.g:11982:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
-            // InternalSignalDSL.g:11982:3: rule__XSwitchExpression__Group_2_0_0__0
+            // InternalSignalDSL.g:12381:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalSignalDSL.g:12381:3: rule__XSwitchExpression__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0();
@@ -40220,16 +41501,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1"
-    // InternalSignalDSL.g:11990:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
+    // InternalSignalDSL.g:12389:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
     public final void rule__XSwitchExpression__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11994:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
-            // InternalSignalDSL.g:11995:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            // InternalSignalDSL.g:12393:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalSignalDSL.g:12394:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XSwitchExpression__Group_2_0__1__Impl();
 
             state._fsp--;
@@ -40258,23 +41539,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1__Impl"
-    // InternalSignalDSL.g:12002:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
+    // InternalSignalDSL.g:12401:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12006:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
-            // InternalSignalDSL.g:12007:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalSignalDSL.g:12405:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalSignalDSL.g:12406:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
             {
-            // InternalSignalDSL.g:12007:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
-            // InternalSignalDSL.g:12008:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalSignalDSL.g:12406:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalSignalDSL.g:12407:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
             }
-            // InternalSignalDSL.g:12009:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
-            // InternalSignalDSL.g:12009:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
+            // InternalSignalDSL.g:12408:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalSignalDSL.g:12408:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_0_1();
@@ -40309,14 +41590,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2"
-    // InternalSignalDSL.g:12017:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
+    // InternalSignalDSL.g:12416:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
     public final void rule__XSwitchExpression__Group_2_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12021:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
-            // InternalSignalDSL.g:12022:2: rule__XSwitchExpression__Group_2_0__2__Impl
+            // InternalSignalDSL.g:12420:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalSignalDSL.g:12421:2: rule__XSwitchExpression__Group_2_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0__2__Impl();
@@ -40342,22 +41623,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2__Impl"
-    // InternalSignalDSL.g:12028:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:12427:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
     public final void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12032:1: ( ( ')' ) )
-            // InternalSignalDSL.g:12033:1: ( ')' )
+            // InternalSignalDSL.g:12431:1: ( ( ')' ) )
+            // InternalSignalDSL.g:12432:1: ( ')' )
             {
-            // InternalSignalDSL.g:12033:1: ( ')' )
-            // InternalSignalDSL.g:12034:2: ')'
+            // InternalSignalDSL.g:12432:1: ( ')' )
+            // InternalSignalDSL.g:12433:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
@@ -40383,14 +41664,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0"
-    // InternalSignalDSL.g:12044:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
+    // InternalSignalDSL.g:12443:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
     public final void rule__XSwitchExpression__Group_2_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12048:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
-            // InternalSignalDSL.g:12049:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
+            // InternalSignalDSL.g:12447:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalSignalDSL.g:12448:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0__Impl();
@@ -40416,23 +41697,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0__Impl"
-    // InternalSignalDSL.g:12055:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:12454:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12059:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:12060:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalSignalDSL.g:12458:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:12459:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:12060:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
-            // InternalSignalDSL.g:12061:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalSignalDSL.g:12459:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalSignalDSL.g:12460:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
             }
-            // InternalSignalDSL.g:12062:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
-            // InternalSignalDSL.g:12062:3: rule__XSwitchExpression__Group_2_0_0_0__0
+            // InternalSignalDSL.g:12461:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalSignalDSL.g:12461:3: rule__XSwitchExpression__Group_2_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__0();
@@ -40467,16 +41748,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0"
-    // InternalSignalDSL.g:12071:1: rule__XSwitchExpression__Group_2_0_0_0__0 : rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 ;
+    // InternalSignalDSL.g:12470:1: rule__XSwitchExpression__Group_2_0_0_0__0 : rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12075:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
-            // InternalSignalDSL.g:12076:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            // InternalSignalDSL.g:12474:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalSignalDSL.g:12475:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XSwitchExpression__Group_2_0_0_0__0__Impl();
 
             state._fsp--;
@@ -40505,22 +41786,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0__Impl"
-    // InternalSignalDSL.g:12083:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:12482:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12087:1: ( ( '(' ) )
-            // InternalSignalDSL.g:12088:1: ( '(' )
+            // InternalSignalDSL.g:12486:1: ( ( '(' ) )
+            // InternalSignalDSL.g:12487:1: ( '(' )
             {
-            // InternalSignalDSL.g:12088:1: ( '(' )
-            // InternalSignalDSL.g:12089:2: '('
+            // InternalSignalDSL.g:12487:1: ( '(' )
+            // InternalSignalDSL.g:12488:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
@@ -40546,16 +41827,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1"
-    // InternalSignalDSL.g:12098:1: rule__XSwitchExpression__Group_2_0_0_0__1 : rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 ;
+    // InternalSignalDSL.g:12497:1: rule__XSwitchExpression__Group_2_0_0_0__1 : rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12102:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
-            // InternalSignalDSL.g:12103:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            // InternalSignalDSL.g:12501:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalSignalDSL.g:12502:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_24);
             rule__XSwitchExpression__Group_2_0_0_0__1__Impl();
 
             state._fsp--;
@@ -40584,23 +41865,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1__Impl"
-    // InternalSignalDSL.g:12110:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
+    // InternalSignalDSL.g:12509:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12114:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
-            // InternalSignalDSL.g:12115:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalSignalDSL.g:12513:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalSignalDSL.g:12514:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
             {
-            // InternalSignalDSL.g:12115:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
-            // InternalSignalDSL.g:12116:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalSignalDSL.g:12514:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalSignalDSL.g:12515:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
             }
-            // InternalSignalDSL.g:12117:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
-            // InternalSignalDSL.g:12117:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
+            // InternalSignalDSL.g:12516:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalSignalDSL.g:12516:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1();
@@ -40635,14 +41916,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2"
-    // InternalSignalDSL.g:12125:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
+    // InternalSignalDSL.g:12524:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12129:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
-            // InternalSignalDSL.g:12130:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
+            // InternalSignalDSL.g:12528:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalSignalDSL.g:12529:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__2__Impl();
@@ -40668,22 +41949,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2__Impl"
-    // InternalSignalDSL.g:12136:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12535:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12140:1: ( ( ':' ) )
-            // InternalSignalDSL.g:12141:1: ( ':' )
+            // InternalSignalDSL.g:12539:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12540:1: ( ':' )
             {
-            // InternalSignalDSL.g:12141:1: ( ':' )
-            // InternalSignalDSL.g:12142:2: ':'
+            // InternalSignalDSL.g:12540:1: ( ':' )
+            // InternalSignalDSL.g:12541:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
@@ -40709,16 +41990,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0"
-    // InternalSignalDSL.g:12152:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
+    // InternalSignalDSL.g:12551:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
     public final void rule__XSwitchExpression__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12156:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
-            // InternalSignalDSL.g:12157:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            // InternalSignalDSL.g:12555:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalSignalDSL.g:12556:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
             {
-            pushFollow(FOLLOW_84);
+            pushFollow(FOLLOW_87);
             rule__XSwitchExpression__Group_2_1__0__Impl();
 
             state._fsp--;
@@ -40747,27 +42028,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0__Impl"
-    // InternalSignalDSL.g:12164:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
+    // InternalSignalDSL.g:12563:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
     public final void rule__XSwitchExpression__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12168:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
-            // InternalSignalDSL.g:12169:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalSignalDSL.g:12567:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalSignalDSL.g:12568:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
             {
-            // InternalSignalDSL.g:12169:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
-            // InternalSignalDSL.g:12170:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            // InternalSignalDSL.g:12568:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalSignalDSL.g:12569:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
             }
-            // InternalSignalDSL.g:12171:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
-            int alt99=2;
-            alt99 = dfa99.predict(input);
-            switch (alt99) {
+            // InternalSignalDSL.g:12570:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            int alt102=2;
+            alt102 = dfa102.predict(input);
+            switch (alt102) {
                 case 1 :
-                    // InternalSignalDSL.g:12171:3: rule__XSwitchExpression__Group_2_1_0__0
+                    // InternalSignalDSL.g:12570:3: rule__XSwitchExpression__Group_2_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1_0__0();
@@ -40805,14 +42086,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1"
-    // InternalSignalDSL.g:12179:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
+    // InternalSignalDSL.g:12578:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
     public final void rule__XSwitchExpression__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12183:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
-            // InternalSignalDSL.g:12184:2: rule__XSwitchExpression__Group_2_1__1__Impl
+            // InternalSignalDSL.g:12582:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalSignalDSL.g:12583:2: rule__XSwitchExpression__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1__1__Impl();
@@ -40838,23 +42119,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1__Impl"
-    // InternalSignalDSL.g:12190:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
+    // InternalSignalDSL.g:12589:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12194:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
-            // InternalSignalDSL.g:12195:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalSignalDSL.g:12593:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalSignalDSL.g:12594:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
             {
-            // InternalSignalDSL.g:12195:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
-            // InternalSignalDSL.g:12196:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalSignalDSL.g:12594:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalSignalDSL.g:12595:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
             }
-            // InternalSignalDSL.g:12197:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
-            // InternalSignalDSL.g:12197:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
+            // InternalSignalDSL.g:12596:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalSignalDSL.g:12596:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_1_1();
@@ -40889,14 +42170,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0"
-    // InternalSignalDSL.g:12206:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
+    // InternalSignalDSL.g:12605:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
     public final void rule__XSwitchExpression__Group_2_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12210:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
-            // InternalSignalDSL.g:12211:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
+            // InternalSignalDSL.g:12609:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalSignalDSL.g:12610:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0__0__Impl();
@@ -40922,23 +42203,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0__Impl"
-    // InternalSignalDSL.g:12217:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:12616:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12221:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:12222:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalSignalDSL.g:12620:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:12621:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:12222:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
-            // InternalSignalDSL.g:12223:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalSignalDSL.g:12621:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalSignalDSL.g:12622:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
             }
-            // InternalSignalDSL.g:12224:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
-            // InternalSignalDSL.g:12224:3: rule__XSwitchExpression__Group_2_1_0_0__0
+            // InternalSignalDSL.g:12623:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalSignalDSL.g:12623:3: rule__XSwitchExpression__Group_2_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__0();
@@ -40973,16 +42254,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0"
-    // InternalSignalDSL.g:12233:1: rule__XSwitchExpression__Group_2_1_0_0__0 : rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 ;
+    // InternalSignalDSL.g:12632:1: rule__XSwitchExpression__Group_2_1_0_0__0 : rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12237:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
-            // InternalSignalDSL.g:12238:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            // InternalSignalDSL.g:12636:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalSignalDSL.g:12637:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_24);
             rule__XSwitchExpression__Group_2_1_0_0__0__Impl();
 
             state._fsp--;
@@ -41011,23 +42292,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0__Impl"
-    // InternalSignalDSL.g:12245:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
+    // InternalSignalDSL.g:12644:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12249:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
-            // InternalSignalDSL.g:12250:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalSignalDSL.g:12648:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalSignalDSL.g:12649:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
             {
-            // InternalSignalDSL.g:12250:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
-            // InternalSignalDSL.g:12251:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalSignalDSL.g:12649:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalSignalDSL.g:12650:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:12252:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
-            // InternalSignalDSL.g:12252:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
+            // InternalSignalDSL.g:12651:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalSignalDSL.g:12651:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0();
@@ -41062,14 +42343,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1"
-    // InternalSignalDSL.g:12260:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:12659:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12264:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
-            // InternalSignalDSL.g:12265:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
+            // InternalSignalDSL.g:12663:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalSignalDSL.g:12664:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__1__Impl();
@@ -41095,22 +42376,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1__Impl"
-    // InternalSignalDSL.g:12271:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12670:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12275:1: ( ( ':' ) )
-            // InternalSignalDSL.g:12276:1: ( ':' )
+            // InternalSignalDSL.g:12674:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12675:1: ( ':' )
             {
-            // InternalSignalDSL.g:12276:1: ( ':' )
-            // InternalSignalDSL.g:12277:2: ':'
+            // InternalSignalDSL.g:12675:1: ( ':' )
+            // InternalSignalDSL.g:12676:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
             }
@@ -41136,16 +42417,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0"
-    // InternalSignalDSL.g:12287:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
+    // InternalSignalDSL.g:12686:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
     public final void rule__XSwitchExpression__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12291:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
-            // InternalSignalDSL.g:12292:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            // InternalSignalDSL.g:12690:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalSignalDSL.g:12691:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_24);
             rule__XSwitchExpression__Group_5__0__Impl();
 
             state._fsp--;
@@ -41174,22 +42455,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0__Impl"
-    // InternalSignalDSL.g:12299:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    // InternalSignalDSL.g:12698:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
     public final void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12303:1: ( ( 'default' ) )
-            // InternalSignalDSL.g:12304:1: ( 'default' )
+            // InternalSignalDSL.g:12702:1: ( ( 'default' ) )
+            // InternalSignalDSL.g:12703:1: ( 'default' )
             {
-            // InternalSignalDSL.g:12304:1: ( 'default' )
-            // InternalSignalDSL.g:12305:2: 'default'
+            // InternalSignalDSL.g:12703:1: ( 'default' )
+            // InternalSignalDSL.g:12704:2: 'default'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,89,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
             }
@@ -41215,16 +42496,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1"
-    // InternalSignalDSL.g:12314:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
+    // InternalSignalDSL.g:12713:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
     public final void rule__XSwitchExpression__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12318:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
-            // InternalSignalDSL.g:12319:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            // InternalSignalDSL.g:12717:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalSignalDSL.g:12718:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XSwitchExpression__Group_5__1__Impl();
 
             state._fsp--;
@@ -41253,22 +42534,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1__Impl"
-    // InternalSignalDSL.g:12326:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12725:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12330:1: ( ( ':' ) )
-            // InternalSignalDSL.g:12331:1: ( ':' )
+            // InternalSignalDSL.g:12729:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12730:1: ( ':' )
             {
-            // InternalSignalDSL.g:12331:1: ( ':' )
-            // InternalSignalDSL.g:12332:2: ':'
+            // InternalSignalDSL.g:12730:1: ( ':' )
+            // InternalSignalDSL.g:12731:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
             }
@@ -41294,14 +42575,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2"
-    // InternalSignalDSL.g:12341:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
+    // InternalSignalDSL.g:12740:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
     public final void rule__XSwitchExpression__Group_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12345:1: ( rule__XSwitchExpression__Group_5__2__Impl )
-            // InternalSignalDSL.g:12346:2: rule__XSwitchExpression__Group_5__2__Impl
+            // InternalSignalDSL.g:12744:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalSignalDSL.g:12745:2: rule__XSwitchExpression__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_5__2__Impl();
@@ -41327,23 +42608,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2__Impl"
-    // InternalSignalDSL.g:12352:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
+    // InternalSignalDSL.g:12751:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
     public final void rule__XSwitchExpression__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12356:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
-            // InternalSignalDSL.g:12357:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalSignalDSL.g:12755:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalSignalDSL.g:12756:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
             {
-            // InternalSignalDSL.g:12357:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
-            // InternalSignalDSL.g:12358:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalSignalDSL.g:12756:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalSignalDSL.g:12757:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
             }
-            // InternalSignalDSL.g:12359:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
-            // InternalSignalDSL.g:12359:3: rule__XSwitchExpression__DefaultAssignment_5_2
+            // InternalSignalDSL.g:12758:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalSignalDSL.g:12758:3: rule__XSwitchExpression__DefaultAssignment_5_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DefaultAssignment_5_2();
@@ -41378,16 +42659,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0"
-    // InternalSignalDSL.g:12368:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
+    // InternalSignalDSL.g:12767:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
     public final void rule__XCasePart__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12372:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
-            // InternalSignalDSL.g:12373:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            // InternalSignalDSL.g:12771:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalSignalDSL.g:12772:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_90);
             rule__XCasePart__Group__0__Impl();
 
             state._fsp--;
@@ -41416,23 +42697,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0__Impl"
-    // InternalSignalDSL.g:12380:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:12779:1: rule__XCasePart__Group__0__Impl : ( () ) ;
     public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12384:1: ( ( () ) )
-            // InternalSignalDSL.g:12385:1: ( () )
+            // InternalSignalDSL.g:12783:1: ( ( () ) )
+            // InternalSignalDSL.g:12784:1: ( () )
             {
-            // InternalSignalDSL.g:12385:1: ( () )
-            // InternalSignalDSL.g:12386:2: ()
+            // InternalSignalDSL.g:12784:1: ( () )
+            // InternalSignalDSL.g:12785:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
             }
-            // InternalSignalDSL.g:12387:2: ()
-            // InternalSignalDSL.g:12387:3: 
+            // InternalSignalDSL.g:12786:2: ()
+            // InternalSignalDSL.g:12786:3: 
             {
             }
 
@@ -41457,16 +42738,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1"
-    // InternalSignalDSL.g:12395:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
+    // InternalSignalDSL.g:12794:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
     public final void rule__XCasePart__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12399:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
-            // InternalSignalDSL.g:12400:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            // InternalSignalDSL.g:12798:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalSignalDSL.g:12799:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_90);
             rule__XCasePart__Group__1__Impl();
 
             state._fsp--;
@@ -41495,31 +42776,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1__Impl"
-    // InternalSignalDSL.g:12407:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    // InternalSignalDSL.g:12806:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
     public final void rule__XCasePart__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12411:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
-            // InternalSignalDSL.g:12412:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalSignalDSL.g:12810:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalSignalDSL.g:12811:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
             {
-            // InternalSignalDSL.g:12412:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
-            // InternalSignalDSL.g:12413:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            // InternalSignalDSL.g:12811:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalSignalDSL.g:12812:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
             }
-            // InternalSignalDSL.g:12414:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
-            int alt100=2;
-            int LA100_0 = input.LA(1);
+            // InternalSignalDSL.g:12813:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
 
-            if ( (LA100_0==RULE_ID||LA100_0==31||LA100_0==80) ) {
-                alt100=1;
+            if ( (LA103_0==RULE_ID||LA103_0==31||LA103_0==78) ) {
+                alt103=1;
             }
-            switch (alt100) {
+            switch (alt103) {
                 case 1 :
-                    // InternalSignalDSL.g:12414:3: rule__XCasePart__TypeGuardAssignment_1
+                    // InternalSignalDSL.g:12813:3: rule__XCasePart__TypeGuardAssignment_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__TypeGuardAssignment_1();
@@ -41557,16 +42838,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2"
-    // InternalSignalDSL.g:12422:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
+    // InternalSignalDSL.g:12821:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
     public final void rule__XCasePart__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12426:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
-            // InternalSignalDSL.g:12427:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            // InternalSignalDSL.g:12825:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalSignalDSL.g:12826:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_90);
             rule__XCasePart__Group__2__Impl();
 
             state._fsp--;
@@ -41595,31 +42876,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2__Impl"
-    // InternalSignalDSL.g:12434:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
+    // InternalSignalDSL.g:12833:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
     public final void rule__XCasePart__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12438:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
-            // InternalSignalDSL.g:12439:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalSignalDSL.g:12837:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalSignalDSL.g:12838:1: ( ( rule__XCasePart__Group_2__0 )? )
             {
-            // InternalSignalDSL.g:12439:1: ( ( rule__XCasePart__Group_2__0 )? )
-            // InternalSignalDSL.g:12440:2: ( rule__XCasePart__Group_2__0 )?
+            // InternalSignalDSL.g:12838:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalSignalDSL.g:12839:2: ( rule__XCasePart__Group_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup_2()); 
             }
-            // InternalSignalDSL.g:12441:2: ( rule__XCasePart__Group_2__0 )?
-            int alt101=2;
-            int LA101_0 = input.LA(1);
+            // InternalSignalDSL.g:12840:2: ( rule__XCasePart__Group_2__0 )?
+            int alt104=2;
+            int LA104_0 = input.LA(1);
 
-            if ( (LA101_0==92) ) {
-                alt101=1;
+            if ( (LA104_0==90) ) {
+                alt104=1;
             }
-            switch (alt101) {
+            switch (alt104) {
                 case 1 :
-                    // InternalSignalDSL.g:12441:3: rule__XCasePart__Group_2__0
+                    // InternalSignalDSL.g:12840:3: rule__XCasePart__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_2__0();
@@ -41657,14 +42938,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3"
-    // InternalSignalDSL.g:12449:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    // InternalSignalDSL.g:12848:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
     public final void rule__XCasePart__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12453:1: ( rule__XCasePart__Group__3__Impl )
-            // InternalSignalDSL.g:12454:2: rule__XCasePart__Group__3__Impl
+            // InternalSignalDSL.g:12852:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalSignalDSL.g:12853:2: rule__XCasePart__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__3__Impl();
@@ -41690,23 +42971,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3__Impl"
-    // InternalSignalDSL.g:12460:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    // InternalSignalDSL.g:12859:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
     public final void rule__XCasePart__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12464:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
-            // InternalSignalDSL.g:12465:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalSignalDSL.g:12863:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalSignalDSL.g:12864:1: ( ( rule__XCasePart__Alternatives_3 ) )
             {
-            // InternalSignalDSL.g:12465:1: ( ( rule__XCasePart__Alternatives_3 ) )
-            // InternalSignalDSL.g:12466:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalSignalDSL.g:12864:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalSignalDSL.g:12865:2: ( rule__XCasePart__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
             }
-            // InternalSignalDSL.g:12467:2: ( rule__XCasePart__Alternatives_3 )
-            // InternalSignalDSL.g:12467:3: rule__XCasePart__Alternatives_3
+            // InternalSignalDSL.g:12866:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalSignalDSL.g:12866:3: rule__XCasePart__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Alternatives_3();
@@ -41741,16 +43022,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0"
-    // InternalSignalDSL.g:12476:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
+    // InternalSignalDSL.g:12875:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
     public final void rule__XCasePart__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12480:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
-            // InternalSignalDSL.g:12481:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            // InternalSignalDSL.g:12879:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalSignalDSL.g:12880:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XCasePart__Group_2__0__Impl();
 
             state._fsp--;
@@ -41779,22 +43060,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0__Impl"
-    // InternalSignalDSL.g:12488:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    // InternalSignalDSL.g:12887:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
     public final void rule__XCasePart__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12492:1: ( ( 'case' ) )
-            // InternalSignalDSL.g:12493:1: ( 'case' )
+            // InternalSignalDSL.g:12891:1: ( ( 'case' ) )
+            // InternalSignalDSL.g:12892:1: ( 'case' )
             {
-            // InternalSignalDSL.g:12493:1: ( 'case' )
-            // InternalSignalDSL.g:12494:2: 'case'
+            // InternalSignalDSL.g:12892:1: ( 'case' )
+            // InternalSignalDSL.g:12893:2: 'case'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
-            match(input,92,FOLLOW_2); if (state.failed) return ;
+            match(input,90,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
@@ -41820,14 +43101,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1"
-    // InternalSignalDSL.g:12503:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
+    // InternalSignalDSL.g:12902:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
     public final void rule__XCasePart__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12507:1: ( rule__XCasePart__Group_2__1__Impl )
-            // InternalSignalDSL.g:12508:2: rule__XCasePart__Group_2__1__Impl
+            // InternalSignalDSL.g:12906:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalSignalDSL.g:12907:2: rule__XCasePart__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_2__1__Impl();
@@ -41853,23 +43134,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1__Impl"
-    // InternalSignalDSL.g:12514:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
+    // InternalSignalDSL.g:12913:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
     public final void rule__XCasePart__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12518:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
-            // InternalSignalDSL.g:12519:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalSignalDSL.g:12917:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalSignalDSL.g:12918:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
             {
-            // InternalSignalDSL.g:12519:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
-            // InternalSignalDSL.g:12520:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalSignalDSL.g:12918:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalSignalDSL.g:12919:2: ( rule__XCasePart__CaseAssignment_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
             }
-            // InternalSignalDSL.g:12521:2: ( rule__XCasePart__CaseAssignment_2_1 )
-            // InternalSignalDSL.g:12521:3: rule__XCasePart__CaseAssignment_2_1
+            // InternalSignalDSL.g:12920:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalSignalDSL.g:12920:3: rule__XCasePart__CaseAssignment_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__CaseAssignment_2_1();
@@ -41904,16 +43185,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0"
-    // InternalSignalDSL.g:12530:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
+    // InternalSignalDSL.g:12929:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
     public final void rule__XCasePart__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12534:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
-            // InternalSignalDSL.g:12535:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            // InternalSignalDSL.g:12933:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalSignalDSL.g:12934:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XCasePart__Group_3_0__0__Impl();
 
             state._fsp--;
@@ -41942,22 +43223,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0__Impl"
-    // InternalSignalDSL.g:12542:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12941:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
     public final void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12546:1: ( ( ':' ) )
-            // InternalSignalDSL.g:12547:1: ( ':' )
+            // InternalSignalDSL.g:12945:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12946:1: ( ':' )
             {
-            // InternalSignalDSL.g:12547:1: ( ':' )
-            // InternalSignalDSL.g:12548:2: ':'
+            // InternalSignalDSL.g:12946:1: ( ':' )
+            // InternalSignalDSL.g:12947:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
@@ -41983,14 +43264,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1"
-    // InternalSignalDSL.g:12557:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
+    // InternalSignalDSL.g:12956:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
     public final void rule__XCasePart__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12561:1: ( rule__XCasePart__Group_3_0__1__Impl )
-            // InternalSignalDSL.g:12562:2: rule__XCasePart__Group_3_0__1__Impl
+            // InternalSignalDSL.g:12960:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalSignalDSL.g:12961:2: rule__XCasePart__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_3_0__1__Impl();
@@ -42016,23 +43297,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1__Impl"
-    // InternalSignalDSL.g:12568:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
+    // InternalSignalDSL.g:12967:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
     public final void rule__XCasePart__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12572:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
-            // InternalSignalDSL.g:12573:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalSignalDSL.g:12971:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalSignalDSL.g:12972:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
             {
-            // InternalSignalDSL.g:12573:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
-            // InternalSignalDSL.g:12574:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalSignalDSL.g:12972:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalSignalDSL.g:12973:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
             }
-            // InternalSignalDSL.g:12575:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
-            // InternalSignalDSL.g:12575:3: rule__XCasePart__ThenAssignment_3_0_1
+            // InternalSignalDSL.g:12974:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalSignalDSL.g:12974:3: rule__XCasePart__ThenAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__ThenAssignment_3_0_1();
@@ -42067,16 +43348,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0"
-    // InternalSignalDSL.g:12584:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
+    // InternalSignalDSL.g:12983:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
     public final void rule__XForLoopExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12588:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
-            // InternalSignalDSL.g:12589:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            // InternalSignalDSL.g:12987:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalSignalDSL.g:12988:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XForLoopExpression__Group__0__Impl();
 
             state._fsp--;
@@ -42105,23 +43386,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0__Impl"
-    // InternalSignalDSL.g:12596:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:12995:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
     public final void rule__XForLoopExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12600:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
-            // InternalSignalDSL.g:12601:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:12999:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalSignalDSL.g:13000:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:12601:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
-            // InternalSignalDSL.g:12602:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalSignalDSL.g:13000:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:13001:2: ( rule__XForLoopExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:12603:2: ( rule__XForLoopExpression__Group_0__0 )
-            // InternalSignalDSL.g:12603:3: rule__XForLoopExpression__Group_0__0
+            // InternalSignalDSL.g:13002:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalSignalDSL.g:13002:3: rule__XForLoopExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0();
@@ -42156,16 +43437,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1"
-    // InternalSignalDSL.g:12611:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
+    // InternalSignalDSL.g:13010:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
     public final void rule__XForLoopExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12615:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
-            // InternalSignalDSL.g:12616:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            // InternalSignalDSL.g:13014:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalSignalDSL.g:13015:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XForLoopExpression__Group__1__Impl();
 
             state._fsp--;
@@ -42194,23 +43475,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1__Impl"
-    // InternalSignalDSL.g:12623:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    // InternalSignalDSL.g:13022:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
     public final void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12627:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
-            // InternalSignalDSL.g:12628:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:13026:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalSignalDSL.g:13027:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
             {
-            // InternalSignalDSL.g:12628:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
-            // InternalSignalDSL.g:12629:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalSignalDSL.g:13027:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:13028:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
             }
-            // InternalSignalDSL.g:12630:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
-            // InternalSignalDSL.g:12630:3: rule__XForLoopExpression__ForExpressionAssignment_1
+            // InternalSignalDSL.g:13029:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalSignalDSL.g:13029:3: rule__XForLoopExpression__ForExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__ForExpressionAssignment_1();
@@ -42245,16 +43526,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2"
-    // InternalSignalDSL.g:12638:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
+    // InternalSignalDSL.g:13037:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
     public final void rule__XForLoopExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12642:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
-            // InternalSignalDSL.g:12643:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            // InternalSignalDSL.g:13041:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalSignalDSL.g:13042:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XForLoopExpression__Group__2__Impl();
 
             state._fsp--;
@@ -42283,22 +43564,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2__Impl"
-    // InternalSignalDSL.g:12650:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:13049:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12654:1: ( ( ')' ) )
-            // InternalSignalDSL.g:12655:1: ( ')' )
+            // InternalSignalDSL.g:13053:1: ( ( ')' ) )
+            // InternalSignalDSL.g:13054:1: ( ')' )
             {
-            // InternalSignalDSL.g:12655:1: ( ')' )
-            // InternalSignalDSL.g:12656:2: ')'
+            // InternalSignalDSL.g:13054:1: ( ')' )
+            // InternalSignalDSL.g:13055:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -42324,14 +43605,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3"
-    // InternalSignalDSL.g:12665:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:13064:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
     public final void rule__XForLoopExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12669:1: ( rule__XForLoopExpression__Group__3__Impl )
-            // InternalSignalDSL.g:12670:2: rule__XForLoopExpression__Group__3__Impl
+            // InternalSignalDSL.g:13068:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalSignalDSL.g:13069:2: rule__XForLoopExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__3__Impl();
@@ -42357,23 +43638,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3__Impl"
-    // InternalSignalDSL.g:12676:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    // InternalSignalDSL.g:13075:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
     public final void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12680:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
-            // InternalSignalDSL.g:12681:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:13079:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalSignalDSL.g:13080:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
             {
-            // InternalSignalDSL.g:12681:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
-            // InternalSignalDSL.g:12682:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalSignalDSL.g:13080:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:13081:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
             }
-            // InternalSignalDSL.g:12683:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
-            // InternalSignalDSL.g:12683:3: rule__XForLoopExpression__EachExpressionAssignment_3
+            // InternalSignalDSL.g:13082:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalSignalDSL.g:13082:3: rule__XForLoopExpression__EachExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__EachExpressionAssignment_3();
@@ -42408,14 +43689,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0"
-    // InternalSignalDSL.g:12692:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
+    // InternalSignalDSL.g:13091:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
     public final void rule__XForLoopExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12696:1: ( rule__XForLoopExpression__Group_0__0__Impl )
-            // InternalSignalDSL.g:12697:2: rule__XForLoopExpression__Group_0__0__Impl
+            // InternalSignalDSL.g:13095:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalSignalDSL.g:13096:2: rule__XForLoopExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0__Impl();
@@ -42441,23 +43722,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0__Impl"
-    // InternalSignalDSL.g:12703:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:13102:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
     public final void rule__XForLoopExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12707:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:12708:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:13106:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:13107:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:12708:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
-            // InternalSignalDSL.g:12709:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:13107:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:13108:2: ( rule__XForLoopExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:12710:2: ( rule__XForLoopExpression__Group_0_0__0 )
-            // InternalSignalDSL.g:12710:3: rule__XForLoopExpression__Group_0_0__0
+            // InternalSignalDSL.g:13109:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:13109:3: rule__XForLoopExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__0();
@@ -42492,16 +43773,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0"
-    // InternalSignalDSL.g:12719:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
+    // InternalSignalDSL.g:13118:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
     public final void rule__XForLoopExpression__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12723:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
-            // InternalSignalDSL.g:12724:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            // InternalSignalDSL.g:13122:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalSignalDSL.g:13123:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_91);
             rule__XForLoopExpression__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -42530,23 +43811,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:12731:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13130:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12735:1: ( ( () ) )
-            // InternalSignalDSL.g:12736:1: ( () )
+            // InternalSignalDSL.g:13134:1: ( ( () ) )
+            // InternalSignalDSL.g:13135:1: ( () )
             {
-            // InternalSignalDSL.g:12736:1: ( () )
-            // InternalSignalDSL.g:12737:2: ()
+            // InternalSignalDSL.g:13135:1: ( () )
+            // InternalSignalDSL.g:13136:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:12738:2: ()
-            // InternalSignalDSL.g:12738:3: 
+            // InternalSignalDSL.g:13137:2: ()
+            // InternalSignalDSL.g:13137:3: 
             {
             }
 
@@ -42571,16 +43852,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1"
-    // InternalSignalDSL.g:12746:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
+    // InternalSignalDSL.g:13145:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
     public final void rule__XForLoopExpression__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12750:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
-            // InternalSignalDSL.g:12751:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            // InternalSignalDSL.g:13149:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalSignalDSL.g:13150:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XForLoopExpression__Group_0_0__1__Impl();
 
             state._fsp--;
@@ -42609,22 +43890,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:12758:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
+    // InternalSignalDSL.g:13157:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
     public final void rule__XForLoopExpression__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12762:1: ( ( 'for' ) )
-            // InternalSignalDSL.g:12763:1: ( 'for' )
+            // InternalSignalDSL.g:13161:1: ( ( 'for' ) )
+            // InternalSignalDSL.g:13162:1: ( 'for' )
             {
-            // InternalSignalDSL.g:12763:1: ( 'for' )
-            // InternalSignalDSL.g:12764:2: 'for'
+            // InternalSignalDSL.g:13162:1: ( 'for' )
+            // InternalSignalDSL.g:13163:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
             }
@@ -42650,16 +43931,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2"
-    // InternalSignalDSL.g:12773:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
+    // InternalSignalDSL.g:13172:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
     public final void rule__XForLoopExpression__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12777:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
-            // InternalSignalDSL.g:12778:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            // InternalSignalDSL.g:13176:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalSignalDSL.g:13177:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XForLoopExpression__Group_0_0__2__Impl();
 
             state._fsp--;
@@ -42688,22 +43969,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2__Impl"
-    // InternalSignalDSL.g:12785:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:13184:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
     public final void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12789:1: ( ( '(' ) )
-            // InternalSignalDSL.g:12790:1: ( '(' )
+            // InternalSignalDSL.g:13188:1: ( ( '(' ) )
+            // InternalSignalDSL.g:13189:1: ( '(' )
             {
-            // InternalSignalDSL.g:12790:1: ( '(' )
-            // InternalSignalDSL.g:12791:2: '('
+            // InternalSignalDSL.g:13189:1: ( '(' )
+            // InternalSignalDSL.g:13190:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -42729,16 +44010,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3"
-    // InternalSignalDSL.g:12800:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
+    // InternalSignalDSL.g:13199:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
     public final void rule__XForLoopExpression__Group_0_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12804:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
-            // InternalSignalDSL.g:12805:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            // InternalSignalDSL.g:13203:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalSignalDSL.g:13204:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_24);
             rule__XForLoopExpression__Group_0_0__3__Impl();
 
             state._fsp--;
@@ -42767,23 +44048,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3__Impl"
-    // InternalSignalDSL.g:12812:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
+    // InternalSignalDSL.g:13211:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
     public final void rule__XForLoopExpression__Group_0_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12816:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
-            // InternalSignalDSL.g:12817:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalSignalDSL.g:13215:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalSignalDSL.g:13216:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
             {
-            // InternalSignalDSL.g:12817:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
-            // InternalSignalDSL.g:12818:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalSignalDSL.g:13216:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalSignalDSL.g:13217:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
             }
-            // InternalSignalDSL.g:12819:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
-            // InternalSignalDSL.g:12819:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
+            // InternalSignalDSL.g:13218:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalSignalDSL.g:13218:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__DeclaredParamAssignment_0_0_3();
@@ -42818,14 +44099,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4"
-    // InternalSignalDSL.g:12827:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
+    // InternalSignalDSL.g:13226:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
     public final void rule__XForLoopExpression__Group_0_0__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12831:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
-            // InternalSignalDSL.g:12832:2: rule__XForLoopExpression__Group_0_0__4__Impl
+            // InternalSignalDSL.g:13230:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalSignalDSL.g:13231:2: rule__XForLoopExpression__Group_0_0__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__4__Impl();
@@ -42851,22 +44132,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4__Impl"
-    // InternalSignalDSL.g:12838:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:13237:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
     public final void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12842:1: ( ( ':' ) )
-            // InternalSignalDSL.g:12843:1: ( ':' )
+            // InternalSignalDSL.g:13241:1: ( ( ':' ) )
+            // InternalSignalDSL.g:13242:1: ( ':' )
             {
-            // InternalSignalDSL.g:12843:1: ( ':' )
-            // InternalSignalDSL.g:12844:2: ':'
+            // InternalSignalDSL.g:13242:1: ( ':' )
+            // InternalSignalDSL.g:13243:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
@@ -42892,16 +44173,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0"
-    // InternalSignalDSL.g:12854:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
+    // InternalSignalDSL.g:13253:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
     public final void rule__XBasicForLoopExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12858:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
-            // InternalSignalDSL.g:12859:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            // InternalSignalDSL.g:13257:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalSignalDSL.g:13258:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_91);
             rule__XBasicForLoopExpression__Group__0__Impl();
 
             state._fsp--;
@@ -42930,23 +44211,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0__Impl"
-    // InternalSignalDSL.g:12866:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13265:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12870:1: ( ( () ) )
-            // InternalSignalDSL.g:12871:1: ( () )
+            // InternalSignalDSL.g:13269:1: ( ( () ) )
+            // InternalSignalDSL.g:13270:1: ( () )
             {
-            // InternalSignalDSL.g:12871:1: ( () )
-            // InternalSignalDSL.g:12872:2: ()
+            // InternalSignalDSL.g:13270:1: ( () )
+            // InternalSignalDSL.g:13271:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:12873:2: ()
-            // InternalSignalDSL.g:12873:3: 
+            // InternalSignalDSL.g:13272:2: ()
+            // InternalSignalDSL.g:13272:3: 
             {
             }
 
@@ -42971,16 +44252,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1"
-    // InternalSignalDSL.g:12881:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
+    // InternalSignalDSL.g:13280:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
     public final void rule__XBasicForLoopExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12885:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
-            // InternalSignalDSL.g:12886:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            // InternalSignalDSL.g:13284:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalSignalDSL.g:13285:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XBasicForLoopExpression__Group__1__Impl();
 
             state._fsp--;
@@ -43009,22 +44290,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1__Impl"
-    // InternalSignalDSL.g:12893:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    // InternalSignalDSL.g:13292:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
     public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12897:1: ( ( 'for' ) )
-            // InternalSignalDSL.g:12898:1: ( 'for' )
+            // InternalSignalDSL.g:13296:1: ( ( 'for' ) )
+            // InternalSignalDSL.g:13297:1: ( 'for' )
             {
-            // InternalSignalDSL.g:12898:1: ( 'for' )
-            // InternalSignalDSL.g:12899:2: 'for'
+            // InternalSignalDSL.g:13297:1: ( 'for' )
+            // InternalSignalDSL.g:13298:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
             }
@@ -43050,16 +44331,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2"
-    // InternalSignalDSL.g:12908:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
+    // InternalSignalDSL.g:13307:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
     public final void rule__XBasicForLoopExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12912:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
-            // InternalSignalDSL.g:12913:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            // InternalSignalDSL.g:13311:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalSignalDSL.g:13312:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_92);
             rule__XBasicForLoopExpression__Group__2__Impl();
 
             state._fsp--;
@@ -43088,22 +44369,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2__Impl"
-    // InternalSignalDSL.g:12920:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:13319:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12924:1: ( ( '(' ) )
-            // InternalSignalDSL.g:12925:1: ( '(' )
+            // InternalSignalDSL.g:13323:1: ( ( '(' ) )
+            // InternalSignalDSL.g:13324:1: ( '(' )
             {
-            // InternalSignalDSL.g:12925:1: ( '(' )
-            // InternalSignalDSL.g:12926:2: '('
+            // InternalSignalDSL.g:13324:1: ( '(' )
+            // InternalSignalDSL.g:13325:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -43129,16 +44410,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3"
-    // InternalSignalDSL.g:12935:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
+    // InternalSignalDSL.g:13334:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
     public final void rule__XBasicForLoopExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12939:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
-            // InternalSignalDSL.g:12940:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            // InternalSignalDSL.g:13338:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalSignalDSL.g:13339:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
             {
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_92);
             rule__XBasicForLoopExpression__Group__3__Impl();
 
             state._fsp--;
@@ -43167,31 +44448,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3__Impl"
-    // InternalSignalDSL.g:12947:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:13346:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12951:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
-            // InternalSignalDSL.g:12952:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalSignalDSL.g:13350:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalSignalDSL.g:13351:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:12952:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
-            // InternalSignalDSL.g:12953:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            // InternalSignalDSL.g:13351:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalSignalDSL.g:13352:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:12954:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
-            int alt102=2;
-            int LA102_0 = input.LA(1);
+            // InternalSignalDSL.g:13353:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            int alt105=2;
+            int LA105_0 = input.LA(1);
 
-            if ( ((LA102_0>=RULE_ID && LA102_0<=RULE_STRING)||LA102_0==27||(LA102_0>=34 && LA102_0<=35)||LA102_0==40||(LA102_0>=44 && LA102_0<=50)||LA102_0==63||LA102_0==80||(LA102_0>=84 && LA102_0<=85)||LA102_0==88||LA102_0==90||(LA102_0>=93 && LA102_0<=101)||LA102_0==103||(LA102_0>=111 && LA102_0<=112)) ) {
-                alt102=1;
+            if ( ((LA105_0>=RULE_ID && LA105_0<=RULE_STRING)||LA105_0==27||(LA105_0>=34 && LA105_0<=35)||LA105_0==40||(LA105_0>=44 && LA105_0<=50)||LA105_0==62||LA105_0==78||(LA105_0>=82 && LA105_0<=83)||LA105_0==86||LA105_0==88||(LA105_0>=91 && LA105_0<=99)||LA105_0==101||(LA105_0>=110 && LA105_0<=111)) ) {
+                alt105=1;
             }
-            switch (alt102) {
+            switch (alt105) {
                 case 1 :
-                    // InternalSignalDSL.g:12954:3: rule__XBasicForLoopExpression__Group_3__0
+                    // InternalSignalDSL.g:13353:3: rule__XBasicForLoopExpression__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_3__0();
@@ -43229,16 +44510,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4"
-    // InternalSignalDSL.g:12962:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
+    // InternalSignalDSL.g:13361:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
     public final void rule__XBasicForLoopExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12966:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
-            // InternalSignalDSL.g:12967:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            // InternalSignalDSL.g:13365:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalSignalDSL.g:13366:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_93);
             rule__XBasicForLoopExpression__Group__4__Impl();
 
             state._fsp--;
@@ -43267,22 +44548,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4__Impl"
-    // InternalSignalDSL.g:12974:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    // InternalSignalDSL.g:13373:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12978:1: ( ( ';' ) )
-            // InternalSignalDSL.g:12979:1: ( ';' )
+            // InternalSignalDSL.g:13377:1: ( ( ';' ) )
+            // InternalSignalDSL.g:13378:1: ( ';' )
             {
-            // InternalSignalDSL.g:12979:1: ( ';' )
-            // InternalSignalDSL.g:12980:2: ';'
+            // InternalSignalDSL.g:13378:1: ( ';' )
+            // InternalSignalDSL.g:13379:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
-            match(input,78,FOLLOW_2); if (state.failed) return ;
+            match(input,76,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
@@ -43308,16 +44589,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5"
-    // InternalSignalDSL.g:12989:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
+    // InternalSignalDSL.g:13388:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
     public final void rule__XBasicForLoopExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12993:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
-            // InternalSignalDSL.g:12994:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            // InternalSignalDSL.g:13392:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalSignalDSL.g:13393:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
             {
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_93);
             rule__XBasicForLoopExpression__Group__5__Impl();
 
             state._fsp--;
@@ -43346,31 +44627,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5__Impl"
-    // InternalSignalDSL.g:13001:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    // InternalSignalDSL.g:13400:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13005:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
-            // InternalSignalDSL.g:13006:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalSignalDSL.g:13404:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalSignalDSL.g:13405:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
             {
-            // InternalSignalDSL.g:13006:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
-            // InternalSignalDSL.g:13007:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            // InternalSignalDSL.g:13405:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalSignalDSL.g:13406:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
             }
-            // InternalSignalDSL.g:13008:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
-            int alt103=2;
-            int LA103_0 = input.LA(1);
+            // InternalSignalDSL.g:13407:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            int alt106=2;
+            int LA106_0 = input.LA(1);
 
-            if ( ((LA103_0>=RULE_ID && LA103_0<=RULE_STRING)||LA103_0==27||(LA103_0>=34 && LA103_0<=35)||LA103_0==40||(LA103_0>=45 && LA103_0<=50)||LA103_0==63||LA103_0==80||(LA103_0>=84 && LA103_0<=85)||LA103_0==88||LA103_0==90||(LA103_0>=93 && LA103_0<=101)||LA103_0==103||LA103_0==112) ) {
-                alt103=1;
+            if ( ((LA106_0>=RULE_ID && LA106_0<=RULE_STRING)||LA106_0==27||(LA106_0>=34 && LA106_0<=35)||LA106_0==40||(LA106_0>=45 && LA106_0<=50)||LA106_0==62||LA106_0==78||(LA106_0>=82 && LA106_0<=83)||LA106_0==86||LA106_0==88||(LA106_0>=91 && LA106_0<=99)||LA106_0==101||LA106_0==111) ) {
+                alt106=1;
             }
-            switch (alt103) {
+            switch (alt106) {
                 case 1 :
-                    // InternalSignalDSL.g:13008:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
+                    // InternalSignalDSL.g:13407:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__ExpressionAssignment_5();
@@ -43408,16 +44689,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6"
-    // InternalSignalDSL.g:13016:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
+    // InternalSignalDSL.g:13415:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
     public final void rule__XBasicForLoopExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13020:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
-            // InternalSignalDSL.g:13021:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            // InternalSignalDSL.g:13419:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalSignalDSL.g:13420:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_35);
             rule__XBasicForLoopExpression__Group__6__Impl();
 
             state._fsp--;
@@ -43446,22 +44727,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6__Impl"
-    // InternalSignalDSL.g:13028:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    // InternalSignalDSL.g:13427:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13032:1: ( ( ';' ) )
-            // InternalSignalDSL.g:13033:1: ( ';' )
+            // InternalSignalDSL.g:13431:1: ( ( ';' ) )
+            // InternalSignalDSL.g:13432:1: ( ';' )
             {
-            // InternalSignalDSL.g:13033:1: ( ';' )
-            // InternalSignalDSL.g:13034:2: ';'
+            // InternalSignalDSL.g:13432:1: ( ';' )
+            // InternalSignalDSL.g:13433:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
-            match(input,78,FOLLOW_2); if (state.failed) return ;
+            match(input,76,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
@@ -43487,16 +44768,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7"
-    // InternalSignalDSL.g:13043:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
+    // InternalSignalDSL.g:13442:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
     public final void rule__XBasicForLoopExpression__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13047:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
-            // InternalSignalDSL.g:13048:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            // InternalSignalDSL.g:13446:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalSignalDSL.g:13447:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
             {
-            pushFollow(FOLLOW_32);
+            pushFollow(FOLLOW_35);
             rule__XBasicForLoopExpression__Group__7__Impl();
 
             state._fsp--;
@@ -43525,31 +44806,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7__Impl"
-    // InternalSignalDSL.g:13055:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
+    // InternalSignalDSL.g:13454:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13059:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
-            // InternalSignalDSL.g:13060:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalSignalDSL.g:13458:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalSignalDSL.g:13459:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
             {
-            // InternalSignalDSL.g:13060:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
-            // InternalSignalDSL.g:13061:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            // InternalSignalDSL.g:13459:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalSignalDSL.g:13460:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
             }
-            // InternalSignalDSL.g:13062:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
-            int alt104=2;
-            int LA104_0 = input.LA(1);
+            // InternalSignalDSL.g:13461:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            int alt107=2;
+            int LA107_0 = input.LA(1);
 
-            if ( ((LA104_0>=RULE_ID && LA104_0<=RULE_STRING)||LA104_0==27||(LA104_0>=34 && LA104_0<=35)||LA104_0==40||(LA104_0>=45 && LA104_0<=50)||LA104_0==63||LA104_0==80||(LA104_0>=84 && LA104_0<=85)||LA104_0==88||LA104_0==90||(LA104_0>=93 && LA104_0<=101)||LA104_0==103||LA104_0==112) ) {
-                alt104=1;
+            if ( ((LA107_0>=RULE_ID && LA107_0<=RULE_STRING)||LA107_0==27||(LA107_0>=34 && LA107_0<=35)||LA107_0==40||(LA107_0>=45 && LA107_0<=50)||LA107_0==62||LA107_0==78||(LA107_0>=82 && LA107_0<=83)||LA107_0==86||LA107_0==88||(LA107_0>=91 && LA107_0<=99)||LA107_0==101||LA107_0==111) ) {
+                alt107=1;
             }
-            switch (alt104) {
+            switch (alt107) {
                 case 1 :
-                    // InternalSignalDSL.g:13062:3: rule__XBasicForLoopExpression__Group_7__0
+                    // InternalSignalDSL.g:13461:3: rule__XBasicForLoopExpression__Group_7__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_7__0();
@@ -43587,16 +44868,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8"
-    // InternalSignalDSL.g:13070:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
+    // InternalSignalDSL.g:13469:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
     public final void rule__XBasicForLoopExpression__Group__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13074:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
-            // InternalSignalDSL.g:13075:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            // InternalSignalDSL.g:13473:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalSignalDSL.g:13474:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XBasicForLoopExpression__Group__8__Impl();
 
             state._fsp--;
@@ -43625,22 +44906,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8__Impl"
-    // InternalSignalDSL.g:13082:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:13481:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
     public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13086:1: ( ( ')' ) )
-            // InternalSignalDSL.g:13087:1: ( ')' )
+            // InternalSignalDSL.g:13485:1: ( ( ')' ) )
+            // InternalSignalDSL.g:13486:1: ( ')' )
             {
-            // InternalSignalDSL.g:13087:1: ( ')' )
-            // InternalSignalDSL.g:13088:2: ')'
+            // InternalSignalDSL.g:13486:1: ( ')' )
+            // InternalSignalDSL.g:13487:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
@@ -43666,14 +44947,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9"
-    // InternalSignalDSL.g:13097:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    // InternalSignalDSL.g:13496:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
     public final void rule__XBasicForLoopExpression__Group__9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13101:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
-            // InternalSignalDSL.g:13102:2: rule__XBasicForLoopExpression__Group__9__Impl
+            // InternalSignalDSL.g:13500:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalSignalDSL.g:13501:2: rule__XBasicForLoopExpression__Group__9__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__9__Impl();
@@ -43699,23 +44980,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9__Impl"
-    // InternalSignalDSL.g:13108:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    // InternalSignalDSL.g:13507:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
     public final void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13112:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
-            // InternalSignalDSL.g:13113:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalSignalDSL.g:13511:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalSignalDSL.g:13512:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
             {
-            // InternalSignalDSL.g:13113:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
-            // InternalSignalDSL.g:13114:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalSignalDSL.g:13512:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalSignalDSL.g:13513:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
             }
-            // InternalSignalDSL.g:13115:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
-            // InternalSignalDSL.g:13115:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
+            // InternalSignalDSL.g:13514:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalSignalDSL.g:13514:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__EachExpressionAssignment_9();
@@ -43750,16 +45031,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0"
-    // InternalSignalDSL.g:13124:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
+    // InternalSignalDSL.g:13523:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
     public final void rule__XBasicForLoopExpression__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13128:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
-            // InternalSignalDSL.g:13129:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            // InternalSignalDSL.g:13527:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalSignalDSL.g:13528:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XBasicForLoopExpression__Group_3__0__Impl();
 
             state._fsp--;
@@ -43788,23 +45069,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0__Impl"
-    // InternalSignalDSL.g:13136:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:13535:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13140:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:13141:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalSignalDSL.g:13539:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:13540:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:13141:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
-            // InternalSignalDSL.g:13142:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalSignalDSL.g:13540:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalSignalDSL.g:13541:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:13143:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
-            // InternalSignalDSL.g:13143:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
+            // InternalSignalDSL.g:13542:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalSignalDSL.g:13542:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0();
@@ -43839,14 +45120,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1"
-    // InternalSignalDSL.g:13151:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
+    // InternalSignalDSL.g:13550:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13155:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
-            // InternalSignalDSL.g:13156:2: rule__XBasicForLoopExpression__Group_3__1__Impl
+            // InternalSignalDSL.g:13554:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalSignalDSL.g:13555:2: rule__XBasicForLoopExpression__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3__1__Impl();
@@ -43872,37 +45153,37 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1__Impl"
-    // InternalSignalDSL.g:13162:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
+    // InternalSignalDSL.g:13561:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
     public final void rule__XBasicForLoopExpression__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13166:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
-            // InternalSignalDSL.g:13167:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalSignalDSL.g:13565:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalSignalDSL.g:13566:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
             {
-            // InternalSignalDSL.g:13167:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
-            // InternalSignalDSL.g:13168:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            // InternalSignalDSL.g:13566:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalSignalDSL.g:13567:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
             }
-            // InternalSignalDSL.g:13169:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
-            loop105:
+            // InternalSignalDSL.g:13568:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            loop108:
             do {
-                int alt105=2;
-                int LA105_0 = input.LA(1);
+                int alt108=2;
+                int LA108_0 = input.LA(1);
 
-                if ( (LA105_0==82) ) {
-                    alt105=1;
+                if ( (LA108_0==80) ) {
+                    alt108=1;
                 }
 
 
-                switch (alt105) {
+                switch (alt108) {
             	case 1 :
-            	    // InternalSignalDSL.g:13169:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    // InternalSignalDSL.g:13568:3: rule__XBasicForLoopExpression__Group_3_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XBasicForLoopExpression__Group_3_1__0();
 
             	    state._fsp--;
@@ -43912,7 +45193,7 @@
             	    break;
 
             	default :
-            	    break loop105;
+            	    break loop108;
                 }
             } while (true);
 
@@ -43941,16 +45222,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0"
-    // InternalSignalDSL.g:13178:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
+    // InternalSignalDSL.g:13577:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
     public final void rule__XBasicForLoopExpression__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13182:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
-            // InternalSignalDSL.g:13183:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            // InternalSignalDSL.g:13581:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalSignalDSL.g:13582:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
             {
-            pushFollow(FOLLOW_91);
+            pushFollow(FOLLOW_94);
             rule__XBasicForLoopExpression__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -43979,22 +45260,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:13190:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:13589:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13194:1: ( ( ',' ) )
-            // InternalSignalDSL.g:13195:1: ( ',' )
+            // InternalSignalDSL.g:13593:1: ( ( ',' ) )
+            // InternalSignalDSL.g:13594:1: ( ',' )
             {
-            // InternalSignalDSL.g:13195:1: ( ',' )
-            // InternalSignalDSL.g:13196:2: ','
+            // InternalSignalDSL.g:13594:1: ( ',' )
+            // InternalSignalDSL.g:13595:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
@@ -44020,14 +45301,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1"
-    // InternalSignalDSL.g:13205:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:13604:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13209:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:13210:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
+            // InternalSignalDSL.g:13608:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:13609:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3_1__1__Impl();
@@ -44053,23 +45334,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:13216:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:13615:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13220:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:13221:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:13619:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:13620:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:13221:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:13222:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalSignalDSL.g:13620:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:13621:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:13223:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
-            // InternalSignalDSL.g:13223:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
+            // InternalSignalDSL.g:13622:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalSignalDSL.g:13622:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1();
@@ -44104,16 +45385,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0"
-    // InternalSignalDSL.g:13232:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
+    // InternalSignalDSL.g:13631:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
     public final void rule__XBasicForLoopExpression__Group_7__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13236:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
-            // InternalSignalDSL.g:13237:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            // InternalSignalDSL.g:13635:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalSignalDSL.g:13636:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XBasicForLoopExpression__Group_7__0__Impl();
 
             state._fsp--;
@@ -44142,23 +45423,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0__Impl"
-    // InternalSignalDSL.g:13244:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
+    // InternalSignalDSL.g:13643:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_7__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13248:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
-            // InternalSignalDSL.g:13249:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalSignalDSL.g:13647:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalSignalDSL.g:13648:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
             {
-            // InternalSignalDSL.g:13249:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
-            // InternalSignalDSL.g:13250:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalSignalDSL.g:13648:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalSignalDSL.g:13649:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
             }
-            // InternalSignalDSL.g:13251:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
-            // InternalSignalDSL.g:13251:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
+            // InternalSignalDSL.g:13650:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalSignalDSL.g:13650:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0();
@@ -44193,14 +45474,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1"
-    // InternalSignalDSL.g:13259:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
+    // InternalSignalDSL.g:13658:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_7__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13263:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
-            // InternalSignalDSL.g:13264:2: rule__XBasicForLoopExpression__Group_7__1__Impl
+            // InternalSignalDSL.g:13662:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalSignalDSL.g:13663:2: rule__XBasicForLoopExpression__Group_7__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7__1__Impl();
@@ -44226,37 +45507,37 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1__Impl"
-    // InternalSignalDSL.g:13270:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
+    // InternalSignalDSL.g:13669:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
     public final void rule__XBasicForLoopExpression__Group_7__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13274:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
-            // InternalSignalDSL.g:13275:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalSignalDSL.g:13673:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalSignalDSL.g:13674:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
             {
-            // InternalSignalDSL.g:13275:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
-            // InternalSignalDSL.g:13276:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            // InternalSignalDSL.g:13674:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalSignalDSL.g:13675:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
             }
-            // InternalSignalDSL.g:13277:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
-            loop106:
+            // InternalSignalDSL.g:13676:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            loop109:
             do {
-                int alt106=2;
-                int LA106_0 = input.LA(1);
+                int alt109=2;
+                int LA109_0 = input.LA(1);
 
-                if ( (LA106_0==82) ) {
-                    alt106=1;
+                if ( (LA109_0==80) ) {
+                    alt109=1;
                 }
 
 
-                switch (alt106) {
+                switch (alt109) {
             	case 1 :
-            	    // InternalSignalDSL.g:13277:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    // InternalSignalDSL.g:13676:3: rule__XBasicForLoopExpression__Group_7_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XBasicForLoopExpression__Group_7_1__0();
 
             	    state._fsp--;
@@ -44266,7 +45547,7 @@
             	    break;
 
             	default :
-            	    break loop106;
+            	    break loop109;
                 }
             } while (true);
 
@@ -44295,16 +45576,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0"
-    // InternalSignalDSL.g:13286:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
+    // InternalSignalDSL.g:13685:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
     public final void rule__XBasicForLoopExpression__Group_7_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13290:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
-            // InternalSignalDSL.g:13291:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            // InternalSignalDSL.g:13689:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalSignalDSL.g:13690:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XBasicForLoopExpression__Group_7_1__0__Impl();
 
             state._fsp--;
@@ -44333,22 +45614,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0__Impl"
-    // InternalSignalDSL.g:13298:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:13697:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
     public final void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13302:1: ( ( ',' ) )
-            // InternalSignalDSL.g:13303:1: ( ',' )
+            // InternalSignalDSL.g:13701:1: ( ( ',' ) )
+            // InternalSignalDSL.g:13702:1: ( ',' )
             {
-            // InternalSignalDSL.g:13303:1: ( ',' )
-            // InternalSignalDSL.g:13304:2: ','
+            // InternalSignalDSL.g:13702:1: ( ',' )
+            // InternalSignalDSL.g:13703:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
@@ -44374,14 +45655,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1"
-    // InternalSignalDSL.g:13313:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
+    // InternalSignalDSL.g:13712:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_7_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13317:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
-            // InternalSignalDSL.g:13318:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
+            // InternalSignalDSL.g:13716:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalSignalDSL.g:13717:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7_1__1__Impl();
@@ -44407,23 +45688,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1__Impl"
-    // InternalSignalDSL.g:13324:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
+    // InternalSignalDSL.g:13723:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_7_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13328:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
-            // InternalSignalDSL.g:13329:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalSignalDSL.g:13727:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalSignalDSL.g:13728:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
             {
-            // InternalSignalDSL.g:13329:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
-            // InternalSignalDSL.g:13330:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalSignalDSL.g:13728:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalSignalDSL.g:13729:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
             }
-            // InternalSignalDSL.g:13331:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
-            // InternalSignalDSL.g:13331:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
+            // InternalSignalDSL.g:13730:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalSignalDSL.g:13730:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1();
@@ -44458,16 +45739,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0"
-    // InternalSignalDSL.g:13340:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
+    // InternalSignalDSL.g:13739:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
     public final void rule__XWhileExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13344:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
-            // InternalSignalDSL.g:13345:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            // InternalSignalDSL.g:13743:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalSignalDSL.g:13744:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
             {
-            pushFollow(FOLLOW_92);
+            pushFollow(FOLLOW_95);
             rule__XWhileExpression__Group__0__Impl();
 
             state._fsp--;
@@ -44496,23 +45777,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0__Impl"
-    // InternalSignalDSL.g:13352:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13751:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13356:1: ( ( () ) )
-            // InternalSignalDSL.g:13357:1: ( () )
+            // InternalSignalDSL.g:13755:1: ( ( () ) )
+            // InternalSignalDSL.g:13756:1: ( () )
             {
-            // InternalSignalDSL.g:13357:1: ( () )
-            // InternalSignalDSL.g:13358:2: ()
+            // InternalSignalDSL.g:13756:1: ( () )
+            // InternalSignalDSL.g:13757:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:13359:2: ()
-            // InternalSignalDSL.g:13359:3: 
+            // InternalSignalDSL.g:13758:2: ()
+            // InternalSignalDSL.g:13758:3: 
             {
             }
 
@@ -44537,16 +45818,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1"
-    // InternalSignalDSL.g:13367:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
+    // InternalSignalDSL.g:13766:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
     public final void rule__XWhileExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13371:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
-            // InternalSignalDSL.g:13372:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            // InternalSignalDSL.g:13770:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalSignalDSL.g:13771:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XWhileExpression__Group__1__Impl();
 
             state._fsp--;
@@ -44575,22 +45856,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1__Impl"
-    // InternalSignalDSL.g:13379:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    // InternalSignalDSL.g:13778:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
     public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13383:1: ( ( 'while' ) )
-            // InternalSignalDSL.g:13384:1: ( 'while' )
+            // InternalSignalDSL.g:13782:1: ( ( 'while' ) )
+            // InternalSignalDSL.g:13783:1: ( 'while' )
             {
-            // InternalSignalDSL.g:13384:1: ( 'while' )
-            // InternalSignalDSL.g:13385:2: 'while'
+            // InternalSignalDSL.g:13783:1: ( 'while' )
+            // InternalSignalDSL.g:13784:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
             }
@@ -44616,16 +45897,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2"
-    // InternalSignalDSL.g:13394:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
+    // InternalSignalDSL.g:13793:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
     public final void rule__XWhileExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13398:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
-            // InternalSignalDSL.g:13399:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            // InternalSignalDSL.g:13797:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalSignalDSL.g:13798:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XWhileExpression__Group__2__Impl();
 
             state._fsp--;
@@ -44654,22 +45935,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2__Impl"
-    // InternalSignalDSL.g:13406:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:13805:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13410:1: ( ( '(' ) )
-            // InternalSignalDSL.g:13411:1: ( '(' )
+            // InternalSignalDSL.g:13809:1: ( ( '(' ) )
+            // InternalSignalDSL.g:13810:1: ( '(' )
             {
-            // InternalSignalDSL.g:13411:1: ( '(' )
-            // InternalSignalDSL.g:13412:2: '('
+            // InternalSignalDSL.g:13810:1: ( '(' )
+            // InternalSignalDSL.g:13811:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -44695,16 +45976,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3"
-    // InternalSignalDSL.g:13421:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
+    // InternalSignalDSL.g:13820:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
     public final void rule__XWhileExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13425:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
-            // InternalSignalDSL.g:13426:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            // InternalSignalDSL.g:13824:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalSignalDSL.g:13825:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XWhileExpression__Group__3__Impl();
 
             state._fsp--;
@@ -44733,23 +46014,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3__Impl"
-    // InternalSignalDSL.g:13433:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    // InternalSignalDSL.g:13832:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
     public final void rule__XWhileExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13437:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
-            // InternalSignalDSL.g:13438:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalSignalDSL.g:13836:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalSignalDSL.g:13837:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
             {
-            // InternalSignalDSL.g:13438:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
-            // InternalSignalDSL.g:13439:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalSignalDSL.g:13837:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalSignalDSL.g:13838:2: ( rule__XWhileExpression__PredicateAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
             }
-            // InternalSignalDSL.g:13440:2: ( rule__XWhileExpression__PredicateAssignment_3 )
-            // InternalSignalDSL.g:13440:3: rule__XWhileExpression__PredicateAssignment_3
+            // InternalSignalDSL.g:13839:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalSignalDSL.g:13839:3: rule__XWhileExpression__PredicateAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__PredicateAssignment_3();
@@ -44784,16 +46065,16 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4"
-    // InternalSignalDSL.g:13448:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
+    // InternalSignalDSL.g:13847:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
     public final void rule__XWhileExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13452:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
-            // InternalSignalDSL.g:13453:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            // InternalSignalDSL.g:13851:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalSignalDSL.g:13852:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XWhileExpression__Group__4__Impl();
 
             state._fsp--;
@@ -44822,22 +46103,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4__Impl"
-    // InternalSignalDSL.g:13460:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:13859:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13464:1: ( ( ')' ) )
-            // InternalSignalDSL.g:13465:1: ( ')' )
+            // InternalSignalDSL.g:13863:1: ( ( ')' ) )
+            // InternalSignalDSL.g:13864:1: ( ')' )
             {
-            // InternalSignalDSL.g:13465:1: ( ')' )
-            // InternalSignalDSL.g:13466:2: ')'
+            // InternalSignalDSL.g:13864:1: ( ')' )
+            // InternalSignalDSL.g:13865:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -44863,14 +46144,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5"
-    // InternalSignalDSL.g:13475:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    // InternalSignalDSL.g:13874:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
     public final void rule__XWhileExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13479:1: ( rule__XWhileExpression__Group__5__Impl )
-            // InternalSignalDSL.g:13480:2: rule__XWhileExpression__Group__5__Impl
+            // InternalSignalDSL.g:13878:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalSignalDSL.g:13879:2: rule__XWhileExpression__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__5__Impl();
@@ -44896,23 +46177,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5__Impl"
-    // InternalSignalDSL.g:13486:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    // InternalSignalDSL.g:13885:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
     public final void rule__XWhileExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13490:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
-            // InternalSignalDSL.g:13491:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalSignalDSL.g:13889:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalSignalDSL.g:13890:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
             {
-            // InternalSignalDSL.g:13491:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
-            // InternalSignalDSL.g:13492:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalSignalDSL.g:13890:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalSignalDSL.g:13891:2: ( rule__XWhileExpression__BodyAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
             }
-            // InternalSignalDSL.g:13493:2: ( rule__XWhileExpression__BodyAssignment_5 )
-            // InternalSignalDSL.g:13493:3: rule__XWhileExpression__BodyAssignment_5
+            // InternalSignalDSL.g:13892:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalSignalDSL.g:13892:3: rule__XWhileExpression__BodyAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__BodyAssignment_5();
@@ -44947,16 +46228,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0"
-    // InternalSignalDSL.g:13502:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
+    // InternalSignalDSL.g:13901:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
     public final void rule__XDoWhileExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13506:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
-            // InternalSignalDSL.g:13507:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            // InternalSignalDSL.g:13905:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalSignalDSL.g:13906:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
             {
-            pushFollow(FOLLOW_93);
+            pushFollow(FOLLOW_96);
             rule__XDoWhileExpression__Group__0__Impl();
 
             state._fsp--;
@@ -44985,23 +46266,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0__Impl"
-    // InternalSignalDSL.g:13514:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13913:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13518:1: ( ( () ) )
-            // InternalSignalDSL.g:13519:1: ( () )
+            // InternalSignalDSL.g:13917:1: ( ( () ) )
+            // InternalSignalDSL.g:13918:1: ( () )
             {
-            // InternalSignalDSL.g:13519:1: ( () )
-            // InternalSignalDSL.g:13520:2: ()
+            // InternalSignalDSL.g:13918:1: ( () )
+            // InternalSignalDSL.g:13919:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:13521:2: ()
-            // InternalSignalDSL.g:13521:3: 
+            // InternalSignalDSL.g:13920:2: ()
+            // InternalSignalDSL.g:13920:3: 
             {
             }
 
@@ -45026,16 +46307,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1"
-    // InternalSignalDSL.g:13529:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
+    // InternalSignalDSL.g:13928:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
     public final void rule__XDoWhileExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13533:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
-            // InternalSignalDSL.g:13534:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            // InternalSignalDSL.g:13932:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalSignalDSL.g:13933:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XDoWhileExpression__Group__1__Impl();
 
             state._fsp--;
@@ -45064,22 +46345,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1__Impl"
-    // InternalSignalDSL.g:13541:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    // InternalSignalDSL.g:13940:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
     public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13545:1: ( ( 'do' ) )
-            // InternalSignalDSL.g:13546:1: ( 'do' )
+            // InternalSignalDSL.g:13944:1: ( ( 'do' ) )
+            // InternalSignalDSL.g:13945:1: ( 'do' )
             {
-            // InternalSignalDSL.g:13546:1: ( 'do' )
-            // InternalSignalDSL.g:13547:2: 'do'
+            // InternalSignalDSL.g:13945:1: ( 'do' )
+            // InternalSignalDSL.g:13946:2: 'do'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
-            match(input,95,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
@@ -45105,16 +46386,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2"
-    // InternalSignalDSL.g:13556:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
+    // InternalSignalDSL.g:13955:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
     public final void rule__XDoWhileExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13560:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
-            // InternalSignalDSL.g:13561:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            // InternalSignalDSL.g:13959:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalSignalDSL.g:13960:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
             {
-            pushFollow(FOLLOW_92);
+            pushFollow(FOLLOW_95);
             rule__XDoWhileExpression__Group__2__Impl();
 
             state._fsp--;
@@ -45143,23 +46424,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2__Impl"
-    // InternalSignalDSL.g:13568:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    // InternalSignalDSL.g:13967:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
     public final void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13572:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
-            // InternalSignalDSL.g:13573:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalSignalDSL.g:13971:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalSignalDSL.g:13972:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
             {
-            // InternalSignalDSL.g:13573:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
-            // InternalSignalDSL.g:13574:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalSignalDSL.g:13972:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalSignalDSL.g:13973:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
             }
-            // InternalSignalDSL.g:13575:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
-            // InternalSignalDSL.g:13575:3: rule__XDoWhileExpression__BodyAssignment_2
+            // InternalSignalDSL.g:13974:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalSignalDSL.g:13974:3: rule__XDoWhileExpression__BodyAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__BodyAssignment_2();
@@ -45194,16 +46475,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3"
-    // InternalSignalDSL.g:13583:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
+    // InternalSignalDSL.g:13982:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
     public final void rule__XDoWhileExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13587:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
-            // InternalSignalDSL.g:13588:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            // InternalSignalDSL.g:13986:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalSignalDSL.g:13987:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XDoWhileExpression__Group__3__Impl();
 
             state._fsp--;
@@ -45232,22 +46513,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3__Impl"
-    // InternalSignalDSL.g:13595:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    // InternalSignalDSL.g:13994:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
     public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13599:1: ( ( 'while' ) )
-            // InternalSignalDSL.g:13600:1: ( 'while' )
+            // InternalSignalDSL.g:13998:1: ( ( 'while' ) )
+            // InternalSignalDSL.g:13999:1: ( 'while' )
             {
-            // InternalSignalDSL.g:13600:1: ( 'while' )
-            // InternalSignalDSL.g:13601:2: 'while'
+            // InternalSignalDSL.g:13999:1: ( 'while' )
+            // InternalSignalDSL.g:14000:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
@@ -45273,16 +46554,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4"
-    // InternalSignalDSL.g:13610:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
+    // InternalSignalDSL.g:14009:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
     public final void rule__XDoWhileExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13614:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
-            // InternalSignalDSL.g:13615:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            // InternalSignalDSL.g:14013:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalSignalDSL.g:14014:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XDoWhileExpression__Group__4__Impl();
 
             state._fsp--;
@@ -45311,22 +46592,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4__Impl"
-    // InternalSignalDSL.g:13622:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:14021:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
     public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13626:1: ( ( '(' ) )
-            // InternalSignalDSL.g:13627:1: ( '(' )
+            // InternalSignalDSL.g:14025:1: ( ( '(' ) )
+            // InternalSignalDSL.g:14026:1: ( '(' )
             {
-            // InternalSignalDSL.g:13627:1: ( '(' )
-            // InternalSignalDSL.g:13628:2: '('
+            // InternalSignalDSL.g:14026:1: ( '(' )
+            // InternalSignalDSL.g:14027:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
@@ -45352,16 +46633,16 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5"
-    // InternalSignalDSL.g:13637:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
+    // InternalSignalDSL.g:14036:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
     public final void rule__XDoWhileExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13641:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
-            // InternalSignalDSL.g:13642:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            // InternalSignalDSL.g:14040:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalSignalDSL.g:14041:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XDoWhileExpression__Group__5__Impl();
 
             state._fsp--;
@@ -45390,23 +46671,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5__Impl"
-    // InternalSignalDSL.g:13649:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    // InternalSignalDSL.g:14048:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
     public final void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13653:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
-            // InternalSignalDSL.g:13654:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalSignalDSL.g:14052:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalSignalDSL.g:14053:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
             {
-            // InternalSignalDSL.g:13654:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
-            // InternalSignalDSL.g:13655:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalSignalDSL.g:14053:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalSignalDSL.g:14054:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
             }
-            // InternalSignalDSL.g:13656:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
-            // InternalSignalDSL.g:13656:3: rule__XDoWhileExpression__PredicateAssignment_5
+            // InternalSignalDSL.g:14055:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalSignalDSL.g:14055:3: rule__XDoWhileExpression__PredicateAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__PredicateAssignment_5();
@@ -45441,14 +46722,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6"
-    // InternalSignalDSL.g:13664:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    // InternalSignalDSL.g:14063:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
     public final void rule__XDoWhileExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13668:1: ( rule__XDoWhileExpression__Group__6__Impl )
-            // InternalSignalDSL.g:13669:2: rule__XDoWhileExpression__Group__6__Impl
+            // InternalSignalDSL.g:14067:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalSignalDSL.g:14068:2: rule__XDoWhileExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__6__Impl();
@@ -45474,22 +46755,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6__Impl"
-    // InternalSignalDSL.g:13675:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:14074:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
     public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13679:1: ( ( ')' ) )
-            // InternalSignalDSL.g:13680:1: ( ')' )
+            // InternalSignalDSL.g:14078:1: ( ( ')' ) )
+            // InternalSignalDSL.g:14079:1: ( ')' )
             {
-            // InternalSignalDSL.g:13680:1: ( ')' )
-            // InternalSignalDSL.g:13681:2: ')'
+            // InternalSignalDSL.g:14079:1: ( ')' )
+            // InternalSignalDSL.g:14080:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
@@ -45515,14 +46796,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0"
-    // InternalSignalDSL.g:13691:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
+    // InternalSignalDSL.g:14090:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
     public final void rule__XBlockExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13695:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
-            // InternalSignalDSL.g:13696:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
+            // InternalSignalDSL.g:14094:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalSignalDSL.g:14095:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
             {
             pushFollow(FOLLOW_7);
             rule__XBlockExpression__Group__0__Impl();
@@ -45553,23 +46834,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0__Impl"
-    // InternalSignalDSL.g:13703:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:14102:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13707:1: ( ( () ) )
-            // InternalSignalDSL.g:13708:1: ( () )
+            // InternalSignalDSL.g:14106:1: ( ( () ) )
+            // InternalSignalDSL.g:14107:1: ( () )
             {
-            // InternalSignalDSL.g:13708:1: ( () )
-            // InternalSignalDSL.g:13709:2: ()
+            // InternalSignalDSL.g:14107:1: ( () )
+            // InternalSignalDSL.g:14108:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:13710:2: ()
-            // InternalSignalDSL.g:13710:3: 
+            // InternalSignalDSL.g:14109:2: ()
+            // InternalSignalDSL.g:14109:3: 
             {
             }
 
@@ -45594,16 +46875,16 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1"
-    // InternalSignalDSL.g:13718:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
+    // InternalSignalDSL.g:14117:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
     public final void rule__XBlockExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13722:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
-            // InternalSignalDSL.g:13723:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            // InternalSignalDSL.g:14121:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalSignalDSL.g:14122:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
             {
-            pushFollow(FOLLOW_94);
+            pushFollow(FOLLOW_97);
             rule__XBlockExpression__Group__1__Impl();
 
             state._fsp--;
@@ -45632,22 +46913,22 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1__Impl"
-    // InternalSignalDSL.g:13730:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:14129:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
     public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13734:1: ( ( '{' ) )
-            // InternalSignalDSL.g:13735:1: ( '{' )
+            // InternalSignalDSL.g:14133:1: ( ( '{' ) )
+            // InternalSignalDSL.g:14134:1: ( '{' )
             {
-            // InternalSignalDSL.g:13735:1: ( '{' )
-            // InternalSignalDSL.g:13736:2: '{'
+            // InternalSignalDSL.g:14134:1: ( '{' )
+            // InternalSignalDSL.g:14135:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
             }
-            match(input,63,FOLLOW_2); if (state.failed) return ;
+            match(input,62,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
             }
@@ -45673,16 +46954,16 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2"
-    // InternalSignalDSL.g:13745:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
+    // InternalSignalDSL.g:14144:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
     public final void rule__XBlockExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13749:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
-            // InternalSignalDSL.g:13750:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            // InternalSignalDSL.g:14148:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalSignalDSL.g:14149:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
             {
-            pushFollow(FOLLOW_94);
+            pushFollow(FOLLOW_97);
             rule__XBlockExpression__Group__2__Impl();
 
             state._fsp--;
@@ -45711,37 +46992,37 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2__Impl"
-    // InternalSignalDSL.g:13757:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
+    // InternalSignalDSL.g:14156:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
     public final void rule__XBlockExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13761:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
-            // InternalSignalDSL.g:13762:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalSignalDSL.g:14160:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalSignalDSL.g:14161:1: ( ( rule__XBlockExpression__Group_2__0 )* )
             {
-            // InternalSignalDSL.g:13762:1: ( ( rule__XBlockExpression__Group_2__0 )* )
-            // InternalSignalDSL.g:13763:2: ( rule__XBlockExpression__Group_2__0 )*
+            // InternalSignalDSL.g:14161:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalSignalDSL.g:14162:2: ( rule__XBlockExpression__Group_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
             }
-            // InternalSignalDSL.g:13764:2: ( rule__XBlockExpression__Group_2__0 )*
-            loop107:
+            // InternalSignalDSL.g:14163:2: ( rule__XBlockExpression__Group_2__0 )*
+            loop110:
             do {
-                int alt107=2;
-                int LA107_0 = input.LA(1);
+                int alt110=2;
+                int LA110_0 = input.LA(1);
 
-                if ( ((LA107_0>=RULE_ID && LA107_0<=RULE_STRING)||LA107_0==27||(LA107_0>=34 && LA107_0<=35)||LA107_0==40||(LA107_0>=44 && LA107_0<=50)||LA107_0==63||LA107_0==80||(LA107_0>=84 && LA107_0<=85)||LA107_0==88||LA107_0==90||(LA107_0>=93 && LA107_0<=101)||LA107_0==103||(LA107_0>=111 && LA107_0<=112)) ) {
-                    alt107=1;
+                if ( ((LA110_0>=RULE_ID && LA110_0<=RULE_STRING)||LA110_0==27||(LA110_0>=34 && LA110_0<=35)||LA110_0==40||(LA110_0>=44 && LA110_0<=50)||LA110_0==62||LA110_0==78||(LA110_0>=82 && LA110_0<=83)||LA110_0==86||LA110_0==88||(LA110_0>=91 && LA110_0<=99)||LA110_0==101||(LA110_0>=110 && LA110_0<=111)) ) {
+                    alt110=1;
                 }
 
 
-                switch (alt107) {
+                switch (alt110) {
             	case 1 :
-            	    // InternalSignalDSL.g:13764:3: rule__XBlockExpression__Group_2__0
+            	    // InternalSignalDSL.g:14163:3: rule__XBlockExpression__Group_2__0
             	    {
-            	    pushFollow(FOLLOW_79);
+            	    pushFollow(FOLLOW_82);
             	    rule__XBlockExpression__Group_2__0();
 
             	    state._fsp--;
@@ -45751,7 +47032,7 @@
             	    break;
 
             	default :
-            	    break loop107;
+            	    break loop110;
                 }
             } while (true);
 
@@ -45780,14 +47061,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3"
-    // InternalSignalDSL.g:13772:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:14171:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
     public final void rule__XBlockExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13776:1: ( rule__XBlockExpression__Group__3__Impl )
-            // InternalSignalDSL.g:13777:2: rule__XBlockExpression__Group__3__Impl
+            // InternalSignalDSL.g:14175:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalSignalDSL.g:14176:2: rule__XBlockExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__3__Impl();
@@ -45813,22 +47094,22 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3__Impl"
-    // InternalSignalDSL.g:13783:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:14182:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
     public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13787:1: ( ( '}' ) )
-            // InternalSignalDSL.g:13788:1: ( '}' )
+            // InternalSignalDSL.g:14186:1: ( ( '}' ) )
+            // InternalSignalDSL.g:14187:1: ( '}' )
             {
-            // InternalSignalDSL.g:13788:1: ( '}' )
-            // InternalSignalDSL.g:13789:2: '}'
+            // InternalSignalDSL.g:14187:1: ( '}' )
+            // InternalSignalDSL.g:14188:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
             }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
             }
@@ -45854,16 +47135,16 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0"
-    // InternalSignalDSL.g:13799:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
+    // InternalSignalDSL.g:14198:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
     public final void rule__XBlockExpression__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13803:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
-            // InternalSignalDSL.g:13804:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            // InternalSignalDSL.g:14202:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalSignalDSL.g:14203:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
             {
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_30);
             rule__XBlockExpression__Group_2__0__Impl();
 
             state._fsp--;
@@ -45892,23 +47173,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0__Impl"
-    // InternalSignalDSL.g:13811:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
+    // InternalSignalDSL.g:14210:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
     public final void rule__XBlockExpression__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13815:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
-            // InternalSignalDSL.g:13816:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalSignalDSL.g:14214:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalSignalDSL.g:14215:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
             {
-            // InternalSignalDSL.g:13816:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
-            // InternalSignalDSL.g:13817:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalSignalDSL.g:14215:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalSignalDSL.g:14216:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
             }
-            // InternalSignalDSL.g:13818:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
-            // InternalSignalDSL.g:13818:3: rule__XBlockExpression__ExpressionsAssignment_2_0
+            // InternalSignalDSL.g:14217:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalSignalDSL.g:14217:3: rule__XBlockExpression__ExpressionsAssignment_2_0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__ExpressionsAssignment_2_0();
@@ -45943,14 +47224,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1"
-    // InternalSignalDSL.g:13826:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
+    // InternalSignalDSL.g:14225:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
     public final void rule__XBlockExpression__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13830:1: ( rule__XBlockExpression__Group_2__1__Impl )
-            // InternalSignalDSL.g:13831:2: rule__XBlockExpression__Group_2__1__Impl
+            // InternalSignalDSL.g:14229:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalSignalDSL.g:14230:2: rule__XBlockExpression__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group_2__1__Impl();
@@ -45976,33 +47257,33 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1__Impl"
-    // InternalSignalDSL.g:13837:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    // InternalSignalDSL.g:14236:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
     public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13841:1: ( ( ( ';' )? ) )
-            // InternalSignalDSL.g:13842:1: ( ( ';' )? )
+            // InternalSignalDSL.g:14240:1: ( ( ( ';' )? ) )
+            // InternalSignalDSL.g:14241:1: ( ( ';' )? )
             {
-            // InternalSignalDSL.g:13842:1: ( ( ';' )? )
-            // InternalSignalDSL.g:13843:2: ( ';' )?
+            // InternalSignalDSL.g:14241:1: ( ( ';' )? )
+            // InternalSignalDSL.g:14242:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
             }
-            // InternalSignalDSL.g:13844:2: ( ';' )?
-            int alt108=2;
-            int LA108_0 = input.LA(1);
+            // InternalSignalDSL.g:14243:2: ( ';' )?
+            int alt111=2;
+            int LA111_0 = input.LA(1);
 
-            if ( (LA108_0==78) ) {
-                alt108=1;
+            if ( (LA111_0==76) ) {
+                alt111=1;
             }
-            switch (alt108) {
+            switch (alt111) {
                 case 1 :
-                    // InternalSignalDSL.g:13844:3: ';'
+                    // InternalSignalDSL.g:14243:3: ';'
                     {
-                    match(input,78,FOLLOW_2); if (state.failed) return ;
+                    match(input,76,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -46034,16 +47315,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0"
-    // InternalSignalDSL.g:13853:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
+    // InternalSignalDSL.g:14252:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
     public final void rule__XVariableDeclaration__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13857:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
-            // InternalSignalDSL.g:13858:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            // InternalSignalDSL.g:14256:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalSignalDSL.g:14257:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
             {
-            pushFollow(FOLLOW_95);
+            pushFollow(FOLLOW_98);
             rule__XVariableDeclaration__Group__0__Impl();
 
             state._fsp--;
@@ -46072,23 +47353,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0__Impl"
-    // InternalSignalDSL.g:13865:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:14264:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13869:1: ( ( () ) )
-            // InternalSignalDSL.g:13870:1: ( () )
+            // InternalSignalDSL.g:14268:1: ( ( () ) )
+            // InternalSignalDSL.g:14269:1: ( () )
             {
-            // InternalSignalDSL.g:13870:1: ( () )
-            // InternalSignalDSL.g:13871:2: ()
+            // InternalSignalDSL.g:14269:1: ( () )
+            // InternalSignalDSL.g:14270:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
             }
-            // InternalSignalDSL.g:13872:2: ()
-            // InternalSignalDSL.g:13872:3: 
+            // InternalSignalDSL.g:14271:2: ()
+            // InternalSignalDSL.g:14271:3: 
             {
             }
 
@@ -46113,16 +47394,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1"
-    // InternalSignalDSL.g:13880:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
+    // InternalSignalDSL.g:14279:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
     public final void rule__XVariableDeclaration__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13884:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
-            // InternalSignalDSL.g:13885:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            // InternalSignalDSL.g:14283:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalSignalDSL.g:14284:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XVariableDeclaration__Group__1__Impl();
 
             state._fsp--;
@@ -46151,23 +47432,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1__Impl"
-    // InternalSignalDSL.g:13892:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    // InternalSignalDSL.g:14291:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
     public final void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13896:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
-            // InternalSignalDSL.g:13897:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalSignalDSL.g:14295:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalSignalDSL.g:14296:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
             {
-            // InternalSignalDSL.g:13897:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
-            // InternalSignalDSL.g:13898:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalSignalDSL.g:14296:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalSignalDSL.g:14297:2: ( rule__XVariableDeclaration__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:13899:2: ( rule__XVariableDeclaration__Alternatives_1 )
-            // InternalSignalDSL.g:13899:3: rule__XVariableDeclaration__Alternatives_1
+            // InternalSignalDSL.g:14298:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalSignalDSL.g:14298:3: rule__XVariableDeclaration__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_1();
@@ -46202,16 +47483,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2"
-    // InternalSignalDSL.g:13907:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
+    // InternalSignalDSL.g:14306:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
     public final void rule__XVariableDeclaration__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13911:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
-            // InternalSignalDSL.g:13912:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            // InternalSignalDSL.g:14310:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalSignalDSL.g:14311:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
             {
-            pushFollow(FOLLOW_36);
+            pushFollow(FOLLOW_39);
             rule__XVariableDeclaration__Group__2__Impl();
 
             state._fsp--;
@@ -46240,23 +47521,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2__Impl"
-    // InternalSignalDSL.g:13919:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    // InternalSignalDSL.g:14318:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
     public final void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13923:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
-            // InternalSignalDSL.g:13924:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:14322:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalSignalDSL.g:14323:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
             {
-            // InternalSignalDSL.g:13924:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
-            // InternalSignalDSL.g:13925:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:14323:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:14324:2: ( rule__XVariableDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:13926:2: ( rule__XVariableDeclaration__Alternatives_2 )
-            // InternalSignalDSL.g:13926:3: rule__XVariableDeclaration__Alternatives_2
+            // InternalSignalDSL.g:14325:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:14325:3: rule__XVariableDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_2();
@@ -46291,14 +47572,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3"
-    // InternalSignalDSL.g:13934:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    // InternalSignalDSL.g:14333:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
     public final void rule__XVariableDeclaration__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13938:1: ( rule__XVariableDeclaration__Group__3__Impl )
-            // InternalSignalDSL.g:13939:2: rule__XVariableDeclaration__Group__3__Impl
+            // InternalSignalDSL.g:14337:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalSignalDSL.g:14338:2: rule__XVariableDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__3__Impl();
@@ -46324,31 +47605,31 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3__Impl"
-    // InternalSignalDSL.g:13945:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:14344:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
     public final void rule__XVariableDeclaration__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13949:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
-            // InternalSignalDSL.g:13950:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalSignalDSL.g:14348:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalSignalDSL.g:14349:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:13950:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
-            // InternalSignalDSL.g:13951:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            // InternalSignalDSL.g:14349:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalSignalDSL.g:14350:2: ( rule__XVariableDeclaration__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:13952:2: ( rule__XVariableDeclaration__Group_3__0 )?
-            int alt109=2;
-            int LA109_0 = input.LA(1);
+            // InternalSignalDSL.g:14351:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
 
-            if ( (LA109_0==13) ) {
-                alt109=1;
+            if ( (LA112_0==13) ) {
+                alt112=1;
             }
-            switch (alt109) {
+            switch (alt112) {
                 case 1 :
-                    // InternalSignalDSL.g:13952:3: rule__XVariableDeclaration__Group_3__0
+                    // InternalSignalDSL.g:14351:3: rule__XVariableDeclaration__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_3__0();
@@ -46386,14 +47667,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0"
-    // InternalSignalDSL.g:13961:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
+    // InternalSignalDSL.g:14360:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
     public final void rule__XVariableDeclaration__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13965:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
-            // InternalSignalDSL.g:13966:2: rule__XVariableDeclaration__Group_2_0__0__Impl
+            // InternalSignalDSL.g:14364:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalSignalDSL.g:14365:2: rule__XVariableDeclaration__Group_2_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0__0__Impl();
@@ -46419,23 +47700,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:13972:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
+    // InternalSignalDSL.g:14371:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13976:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
-            // InternalSignalDSL.g:13977:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:14375:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalSignalDSL.g:14376:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
             {
-            // InternalSignalDSL.g:13977:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
-            // InternalSignalDSL.g:13978:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalSignalDSL.g:14376:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:14377:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
             }
-            // InternalSignalDSL.g:13979:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
-            // InternalSignalDSL.g:13979:3: rule__XVariableDeclaration__Group_2_0_0__0
+            // InternalSignalDSL.g:14378:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalSignalDSL.g:14378:3: rule__XVariableDeclaration__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__0();
@@ -46470,14 +47751,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0"
-    // InternalSignalDSL.g:13988:1: rule__XVariableDeclaration__Group_2_0_0__0 : rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 ;
+    // InternalSignalDSL.g:14387:1: rule__XVariableDeclaration__Group_2_0_0__0 : rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 ;
     public final void rule__XVariableDeclaration__Group_2_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13992:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
-            // InternalSignalDSL.g:13993:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
+            // InternalSignalDSL.g:14391:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalSignalDSL.g:14392:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
             {
             pushFollow(FOLLOW_6);
             rule__XVariableDeclaration__Group_2_0_0__0__Impl();
@@ -46508,23 +47789,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0__Impl"
-    // InternalSignalDSL.g:14000:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
+    // InternalSignalDSL.g:14399:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14004:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
-            // InternalSignalDSL.g:14005:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalSignalDSL.g:14403:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalSignalDSL.g:14404:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
             {
-            // InternalSignalDSL.g:14005:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
-            // InternalSignalDSL.g:14006:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalSignalDSL.g:14404:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalSignalDSL.g:14405:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
             }
-            // InternalSignalDSL.g:14007:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
-            // InternalSignalDSL.g:14007:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
+            // InternalSignalDSL.g:14406:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalSignalDSL.g:14406:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__TypeAssignment_2_0_0_0();
@@ -46559,14 +47840,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1"
-    // InternalSignalDSL.g:14015:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
+    // InternalSignalDSL.g:14414:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
     public final void rule__XVariableDeclaration__Group_2_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14019:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
-            // InternalSignalDSL.g:14020:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
+            // InternalSignalDSL.g:14418:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalSignalDSL.g:14419:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__1__Impl();
@@ -46592,23 +47873,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1__Impl"
-    // InternalSignalDSL.g:14026:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
+    // InternalSignalDSL.g:14425:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14030:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
-            // InternalSignalDSL.g:14031:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalSignalDSL.g:14429:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalSignalDSL.g:14430:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
             {
-            // InternalSignalDSL.g:14031:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
-            // InternalSignalDSL.g:14032:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalSignalDSL.g:14430:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalSignalDSL.g:14431:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
             }
-            // InternalSignalDSL.g:14033:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
-            // InternalSignalDSL.g:14033:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
+            // InternalSignalDSL.g:14432:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalSignalDSL.g:14432:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__NameAssignment_2_0_0_1();
@@ -46643,16 +47924,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0"
-    // InternalSignalDSL.g:14042:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
+    // InternalSignalDSL.g:14441:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
     public final void rule__XVariableDeclaration__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14046:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
-            // InternalSignalDSL.g:14047:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            // InternalSignalDSL.g:14445:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalSignalDSL.g:14446:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XVariableDeclaration__Group_3__0__Impl();
 
             state._fsp--;
@@ -46681,17 +47962,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0__Impl"
-    // InternalSignalDSL.g:14054:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:14453:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
     public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14058:1: ( ( '=' ) )
-            // InternalSignalDSL.g:14059:1: ( '=' )
+            // InternalSignalDSL.g:14457:1: ( ( '=' ) )
+            // InternalSignalDSL.g:14458:1: ( '=' )
             {
-            // InternalSignalDSL.g:14059:1: ( '=' )
-            // InternalSignalDSL.g:14060:2: '='
+            // InternalSignalDSL.g:14458:1: ( '=' )
+            // InternalSignalDSL.g:14459:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); 
@@ -46722,14 +48003,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1"
-    // InternalSignalDSL.g:14069:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
+    // InternalSignalDSL.g:14468:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
     public final void rule__XVariableDeclaration__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14073:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
-            // InternalSignalDSL.g:14074:2: rule__XVariableDeclaration__Group_3__1__Impl
+            // InternalSignalDSL.g:14472:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalSignalDSL.g:14473:2: rule__XVariableDeclaration__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_3__1__Impl();
@@ -46755,23 +48036,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1__Impl"
-    // InternalSignalDSL.g:14080:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
+    // InternalSignalDSL.g:14479:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
     public final void rule__XVariableDeclaration__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14084:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
-            // InternalSignalDSL.g:14085:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalSignalDSL.g:14483:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalSignalDSL.g:14484:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
             {
-            // InternalSignalDSL.g:14085:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
-            // InternalSignalDSL.g:14086:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalSignalDSL.g:14484:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalSignalDSL.g:14485:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
             }
-            // InternalSignalDSL.g:14087:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
-            // InternalSignalDSL.g:14087:3: rule__XVariableDeclaration__RightAssignment_3_1
+            // InternalSignalDSL.g:14486:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalSignalDSL.g:14486:3: rule__XVariableDeclaration__RightAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__RightAssignment_3_1();
@@ -46806,16 +48087,16 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0"
-    // InternalSignalDSL.g:14096:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
+    // InternalSignalDSL.g:14495:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
     public final void rule__JvmFormalParameter__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14100:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
-            // InternalSignalDSL.g:14101:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            // InternalSignalDSL.g:14499:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalSignalDSL.g:14500:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__JvmFormalParameter__Group__0__Impl();
 
             state._fsp--;
@@ -46844,38 +48125,38 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0__Impl"
-    // InternalSignalDSL.g:14108:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    // InternalSignalDSL.g:14507:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
     public final void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14112:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
-            // InternalSignalDSL.g:14113:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalSignalDSL.g:14511:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalSignalDSL.g:14512:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
             {
-            // InternalSignalDSL.g:14113:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
-            // InternalSignalDSL.g:14114:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            // InternalSignalDSL.g:14512:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalSignalDSL.g:14513:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalSignalDSL.g:14115:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
-            int alt110=2;
-            int LA110_0 = input.LA(1);
+            // InternalSignalDSL.g:14514:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            int alt113=2;
+            int LA113_0 = input.LA(1);
 
-            if ( (LA110_0==RULE_ID) ) {
-                int LA110_1 = input.LA(2);
+            if ( (LA113_0==RULE_ID) ) {
+                int LA113_1 = input.LA(2);
 
-                if ( (LA110_1==RULE_ID||LA110_1==27||LA110_1==43||LA110_1==85) ) {
-                    alt110=1;
+                if ( (LA113_1==RULE_ID||LA113_1==27||LA113_1==43||LA113_1==83) ) {
+                    alt113=1;
                 }
             }
-            else if ( (LA110_0==31||LA110_0==80) ) {
-                alt110=1;
+            else if ( (LA113_0==31||LA113_0==78) ) {
+                alt113=1;
             }
-            switch (alt110) {
+            switch (alt113) {
                 case 1 :
-                    // InternalSignalDSL.g:14115:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
+                    // InternalSignalDSL.g:14514:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmFormalParameter__ParameterTypeAssignment_0();
@@ -46913,14 +48194,14 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1"
-    // InternalSignalDSL.g:14123:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    // InternalSignalDSL.g:14522:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
     public final void rule__JvmFormalParameter__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14127:1: ( rule__JvmFormalParameter__Group__1__Impl )
-            // InternalSignalDSL.g:14128:2: rule__JvmFormalParameter__Group__1__Impl
+            // InternalSignalDSL.g:14526:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalSignalDSL.g:14527:2: rule__JvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__1__Impl();
@@ -46946,23 +48227,23 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1__Impl"
-    // InternalSignalDSL.g:14134:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalSignalDSL.g:14533:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
     public final void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14138:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalSignalDSL.g:14139:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14537:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalSignalDSL.g:14538:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalSignalDSL.g:14139:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
-            // InternalSignalDSL.g:14140:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14538:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14539:2: ( rule__JvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalSignalDSL.g:14141:2: ( rule__JvmFormalParameter__NameAssignment_1 )
-            // InternalSignalDSL.g:14141:3: rule__JvmFormalParameter__NameAssignment_1
+            // InternalSignalDSL.g:14540:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14540:3: rule__JvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__NameAssignment_1();
@@ -46997,14 +48278,14 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0"
-    // InternalSignalDSL.g:14150:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
+    // InternalSignalDSL.g:14549:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
     public final void rule__FullJvmFormalParameter__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14154:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
-            // InternalSignalDSL.g:14155:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
+            // InternalSignalDSL.g:14553:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalSignalDSL.g:14554:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
             {
             pushFollow(FOLLOW_6);
             rule__FullJvmFormalParameter__Group__0__Impl();
@@ -47035,23 +48316,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0__Impl"
-    // InternalSignalDSL.g:14162:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    // InternalSignalDSL.g:14561:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
     public final void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14166:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
-            // InternalSignalDSL.g:14167:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalSignalDSL.g:14565:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalSignalDSL.g:14566:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
             {
-            // InternalSignalDSL.g:14167:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
-            // InternalSignalDSL.g:14168:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalSignalDSL.g:14566:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalSignalDSL.g:14567:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalSignalDSL.g:14169:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
-            // InternalSignalDSL.g:14169:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
+            // InternalSignalDSL.g:14568:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalSignalDSL.g:14568:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__ParameterTypeAssignment_0();
@@ -47086,14 +48367,14 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1"
-    // InternalSignalDSL.g:14177:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    // InternalSignalDSL.g:14576:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
     public final void rule__FullJvmFormalParameter__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14181:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
-            // InternalSignalDSL.g:14182:2: rule__FullJvmFormalParameter__Group__1__Impl
+            // InternalSignalDSL.g:14580:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalSignalDSL.g:14581:2: rule__FullJvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__1__Impl();
@@ -47119,23 +48400,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1__Impl"
-    // InternalSignalDSL.g:14188:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalSignalDSL.g:14587:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
     public final void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14192:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalSignalDSL.g:14193:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14591:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalSignalDSL.g:14592:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalSignalDSL.g:14193:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
-            // InternalSignalDSL.g:14194:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14592:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14593:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalSignalDSL.g:14195:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
-            // InternalSignalDSL.g:14195:3: rule__FullJvmFormalParameter__NameAssignment_1
+            // InternalSignalDSL.g:14594:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14594:3: rule__FullJvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__NameAssignment_1();
@@ -47170,16 +48451,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0"
-    // InternalSignalDSL.g:14204:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
+    // InternalSignalDSL.g:14603:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
     public final void rule__XFeatureCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14208:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
-            // InternalSignalDSL.g:14209:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            // InternalSignalDSL.g:14607:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalSignalDSL.g:14608:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
             {
-            pushFollow(FOLLOW_70);
+            pushFollow(FOLLOW_73);
             rule__XFeatureCall__Group__0__Impl();
 
             state._fsp--;
@@ -47208,23 +48489,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0__Impl"
-    // InternalSignalDSL.g:14216:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:14615:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
     public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14220:1: ( ( () ) )
-            // InternalSignalDSL.g:14221:1: ( () )
+            // InternalSignalDSL.g:14619:1: ( ( () ) )
+            // InternalSignalDSL.g:14620:1: ( () )
             {
-            // InternalSignalDSL.g:14221:1: ( () )
-            // InternalSignalDSL.g:14222:2: ()
+            // InternalSignalDSL.g:14620:1: ( () )
+            // InternalSignalDSL.g:14621:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
             }
-            // InternalSignalDSL.g:14223:2: ()
-            // InternalSignalDSL.g:14223:3: 
+            // InternalSignalDSL.g:14622:2: ()
+            // InternalSignalDSL.g:14622:3: 
             {
             }
 
@@ -47249,16 +48530,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1"
-    // InternalSignalDSL.g:14231:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
+    // InternalSignalDSL.g:14630:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
     public final void rule__XFeatureCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14235:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
-            // InternalSignalDSL.g:14236:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            // InternalSignalDSL.g:14634:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalSignalDSL.g:14635:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
             {
-            pushFollow(FOLLOW_70);
+            pushFollow(FOLLOW_73);
             rule__XFeatureCall__Group__1__Impl();
 
             state._fsp--;
@@ -47287,31 +48568,31 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1__Impl"
-    // InternalSignalDSL.g:14243:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:14642:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
     public final void rule__XFeatureCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14247:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
-            // InternalSignalDSL.g:14248:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalSignalDSL.g:14646:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalSignalDSL.g:14647:1: ( ( rule__XFeatureCall__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:14248:1: ( ( rule__XFeatureCall__Group_1__0 )? )
-            // InternalSignalDSL.g:14249:2: ( rule__XFeatureCall__Group_1__0 )?
+            // InternalSignalDSL.g:14647:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalSignalDSL.g:14648:2: ( rule__XFeatureCall__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:14250:2: ( rule__XFeatureCall__Group_1__0 )?
-            int alt111=2;
-            int LA111_0 = input.LA(1);
+            // InternalSignalDSL.g:14649:2: ( rule__XFeatureCall__Group_1__0 )?
+            int alt114=2;
+            int LA114_0 = input.LA(1);
 
-            if ( (LA111_0==27) ) {
-                alt111=1;
+            if ( (LA114_0==27) ) {
+                alt114=1;
             }
-            switch (alt111) {
+            switch (alt114) {
                 case 1 :
-                    // InternalSignalDSL.g:14250:3: rule__XFeatureCall__Group_1__0
+                    // InternalSignalDSL.g:14649:3: rule__XFeatureCall__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_1__0();
@@ -47349,16 +48630,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2"
-    // InternalSignalDSL.g:14258:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
+    // InternalSignalDSL.g:14657:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
     public final void rule__XFeatureCall__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14262:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
-            // InternalSignalDSL.g:14263:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            // InternalSignalDSL.g:14661:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalSignalDSL.g:14662:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
             {
-            pushFollow(FOLLOW_71);
+            pushFollow(FOLLOW_74);
             rule__XFeatureCall__Group__2__Impl();
 
             state._fsp--;
@@ -47387,23 +48668,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2__Impl"
-    // InternalSignalDSL.g:14270:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    // InternalSignalDSL.g:14669:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
     public final void rule__XFeatureCall__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14274:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
-            // InternalSignalDSL.g:14275:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalSignalDSL.g:14673:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalSignalDSL.g:14674:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
             {
-            // InternalSignalDSL.g:14275:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
-            // InternalSignalDSL.g:14276:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalSignalDSL.g:14674:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalSignalDSL.g:14675:2: ( rule__XFeatureCall__FeatureAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
             }
-            // InternalSignalDSL.g:14277:2: ( rule__XFeatureCall__FeatureAssignment_2 )
-            // InternalSignalDSL.g:14277:3: rule__XFeatureCall__FeatureAssignment_2
+            // InternalSignalDSL.g:14676:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalSignalDSL.g:14676:3: rule__XFeatureCall__FeatureAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureAssignment_2();
@@ -47438,16 +48719,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3"
-    // InternalSignalDSL.g:14285:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
+    // InternalSignalDSL.g:14684:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
     public final void rule__XFeatureCall__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14289:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
-            // InternalSignalDSL.g:14290:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            // InternalSignalDSL.g:14688:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalSignalDSL.g:14689:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
             {
-            pushFollow(FOLLOW_71);
+            pushFollow(FOLLOW_74);
             rule__XFeatureCall__Group__3__Impl();
 
             state._fsp--;
@@ -47476,27 +48757,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3__Impl"
-    // InternalSignalDSL.g:14297:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:14696:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
     public final void rule__XFeatureCall__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14301:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
-            // InternalSignalDSL.g:14302:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalSignalDSL.g:14700:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalSignalDSL.g:14701:1: ( ( rule__XFeatureCall__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:14302:1: ( ( rule__XFeatureCall__Group_3__0 )? )
-            // InternalSignalDSL.g:14303:2: ( rule__XFeatureCall__Group_3__0 )?
+            // InternalSignalDSL.g:14701:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalSignalDSL.g:14702:2: ( rule__XFeatureCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:14304:2: ( rule__XFeatureCall__Group_3__0 )?
-            int alt112=2;
-            alt112 = dfa112.predict(input);
-            switch (alt112) {
+            // InternalSignalDSL.g:14703:2: ( rule__XFeatureCall__Group_3__0 )?
+            int alt115=2;
+            alt115 = dfa115.predict(input);
+            switch (alt115) {
                 case 1 :
-                    // InternalSignalDSL.g:14304:3: rule__XFeatureCall__Group_3__0
+                    // InternalSignalDSL.g:14703:3: rule__XFeatureCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3__0();
@@ -47534,14 +48815,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4"
-    // InternalSignalDSL.g:14312:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    // InternalSignalDSL.g:14711:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
     public final void rule__XFeatureCall__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14316:1: ( rule__XFeatureCall__Group__4__Impl )
-            // InternalSignalDSL.g:14317:2: rule__XFeatureCall__Group__4__Impl
+            // InternalSignalDSL.g:14715:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalSignalDSL.g:14716:2: rule__XFeatureCall__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__4__Impl();
@@ -47567,27 +48848,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4__Impl"
-    // InternalSignalDSL.g:14323:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    // InternalSignalDSL.g:14722:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
     public final void rule__XFeatureCall__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14327:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
-            // InternalSignalDSL.g:14328:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalSignalDSL.g:14726:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalSignalDSL.g:14727:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
             {
-            // InternalSignalDSL.g:14328:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
-            // InternalSignalDSL.g:14329:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            // InternalSignalDSL.g:14727:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalSignalDSL.g:14728:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
             }
-            // InternalSignalDSL.g:14330:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
-            int alt113=2;
-            alt113 = dfa113.predict(input);
-            switch (alt113) {
+            // InternalSignalDSL.g:14729:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            int alt116=2;
+            alt116 = dfa116.predict(input);
+            switch (alt116) {
                 case 1 :
-                    // InternalSignalDSL.g:14330:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+                    // InternalSignalDSL.g:14729:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
@@ -47625,16 +48906,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0"
-    // InternalSignalDSL.g:14339:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
+    // InternalSignalDSL.g:14738:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
     public final void rule__XFeatureCall__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14343:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
-            // InternalSignalDSL.g:14344:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            // InternalSignalDSL.g:14742:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalSignalDSL.g:14743:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__XFeatureCall__Group_1__0__Impl();
 
             state._fsp--;
@@ -47663,17 +48944,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0__Impl"
-    // InternalSignalDSL.g:14351:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:14750:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
     public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14355:1: ( ( '<' ) )
-            // InternalSignalDSL.g:14356:1: ( '<' )
+            // InternalSignalDSL.g:14754:1: ( ( '<' ) )
+            // InternalSignalDSL.g:14755:1: ( '<' )
             {
-            // InternalSignalDSL.g:14356:1: ( '<' )
-            // InternalSignalDSL.g:14357:2: '<'
+            // InternalSignalDSL.g:14755:1: ( '<' )
+            // InternalSignalDSL.g:14756:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); 
@@ -47704,16 +48985,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1"
-    // InternalSignalDSL.g:14366:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
+    // InternalSignalDSL.g:14765:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
     public final void rule__XFeatureCall__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14370:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
-            // InternalSignalDSL.g:14371:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            // InternalSignalDSL.g:14769:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalSignalDSL.g:14770:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__XFeatureCall__Group_1__1__Impl();
 
             state._fsp--;
@@ -47742,23 +49023,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1__Impl"
-    // InternalSignalDSL.g:14378:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:14777:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
     public final void rule__XFeatureCall__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14382:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:14383:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:14781:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:14782:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:14383:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
-            // InternalSignalDSL.g:14384:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:14782:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:14783:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:14385:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
-            // InternalSignalDSL.g:14385:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
+            // InternalSignalDSL.g:14784:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:14784:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_1();
@@ -47793,16 +49074,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2"
-    // InternalSignalDSL.g:14393:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
+    // InternalSignalDSL.g:14792:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
     public final void rule__XFeatureCall__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14397:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
-            // InternalSignalDSL.g:14398:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            // InternalSignalDSL.g:14796:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalSignalDSL.g:14797:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__XFeatureCall__Group_1__2__Impl();
 
             state._fsp--;
@@ -47831,37 +49112,37 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2__Impl"
-    // InternalSignalDSL.g:14405:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
+    // InternalSignalDSL.g:14804:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
     public final void rule__XFeatureCall__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14409:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
-            // InternalSignalDSL.g:14410:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalSignalDSL.g:14808:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalSignalDSL.g:14809:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
             {
-            // InternalSignalDSL.g:14410:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
-            // InternalSignalDSL.g:14411:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            // InternalSignalDSL.g:14809:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalSignalDSL.g:14810:2: ( rule__XFeatureCall__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
             }
-            // InternalSignalDSL.g:14412:2: ( rule__XFeatureCall__Group_1_2__0 )*
-            loop114:
+            // InternalSignalDSL.g:14811:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            loop117:
             do {
-                int alt114=2;
-                int LA114_0 = input.LA(1);
+                int alt117=2;
+                int LA117_0 = input.LA(1);
 
-                if ( (LA114_0==82) ) {
-                    alt114=1;
+                if ( (LA117_0==80) ) {
+                    alt117=1;
                 }
 
 
-                switch (alt114) {
+                switch (alt117) {
             	case 1 :
-            	    // InternalSignalDSL.g:14412:3: rule__XFeatureCall__Group_1_2__0
+            	    // InternalSignalDSL.g:14811:3: rule__XFeatureCall__Group_1_2__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XFeatureCall__Group_1_2__0();
 
             	    state._fsp--;
@@ -47871,7 +49152,7 @@
             	    break;
 
             	default :
-            	    break loop114;
+            	    break loop117;
                 }
             } while (true);
 
@@ -47900,14 +49181,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3"
-    // InternalSignalDSL.g:14420:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
+    // InternalSignalDSL.g:14819:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
     public final void rule__XFeatureCall__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14424:1: ( rule__XFeatureCall__Group_1__3__Impl )
-            // InternalSignalDSL.g:14425:2: rule__XFeatureCall__Group_1__3__Impl
+            // InternalSignalDSL.g:14823:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalSignalDSL.g:14824:2: rule__XFeatureCall__Group_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1__3__Impl();
@@ -47933,17 +49214,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3__Impl"
-    // InternalSignalDSL.g:14431:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:14830:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
     public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14435:1: ( ( '>' ) )
-            // InternalSignalDSL.g:14436:1: ( '>' )
+            // InternalSignalDSL.g:14834:1: ( ( '>' ) )
+            // InternalSignalDSL.g:14835:1: ( '>' )
             {
-            // InternalSignalDSL.g:14436:1: ( '>' )
-            // InternalSignalDSL.g:14437:2: '>'
+            // InternalSignalDSL.g:14835:1: ( '>' )
+            // InternalSignalDSL.g:14836:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); 
@@ -47974,16 +49255,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0"
-    // InternalSignalDSL.g:14447:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
+    // InternalSignalDSL.g:14846:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
     public final void rule__XFeatureCall__Group_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14451:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
-            // InternalSignalDSL.g:14452:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            // InternalSignalDSL.g:14850:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalSignalDSL.g:14851:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__XFeatureCall__Group_1_2__0__Impl();
 
             state._fsp--;
@@ -48012,22 +49293,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0__Impl"
-    // InternalSignalDSL.g:14459:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:14858:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
     public final void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14463:1: ( ( ',' ) )
-            // InternalSignalDSL.g:14464:1: ( ',' )
+            // InternalSignalDSL.g:14862:1: ( ( ',' ) )
+            // InternalSignalDSL.g:14863:1: ( ',' )
             {
-            // InternalSignalDSL.g:14464:1: ( ',' )
-            // InternalSignalDSL.g:14465:2: ','
+            // InternalSignalDSL.g:14863:1: ( ',' )
+            // InternalSignalDSL.g:14864:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
@@ -48053,14 +49334,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1"
-    // InternalSignalDSL.g:14474:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
+    // InternalSignalDSL.g:14873:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
     public final void rule__XFeatureCall__Group_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14478:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
-            // InternalSignalDSL.g:14479:2: rule__XFeatureCall__Group_1_2__1__Impl
+            // InternalSignalDSL.g:14877:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalSignalDSL.g:14878:2: rule__XFeatureCall__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1_2__1__Impl();
@@ -48086,23 +49367,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1__Impl"
-    // InternalSignalDSL.g:14485:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
+    // InternalSignalDSL.g:14884:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
     public final void rule__XFeatureCall__Group_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14489:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
-            // InternalSignalDSL.g:14490:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:14888:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalSignalDSL.g:14889:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
             {
-            // InternalSignalDSL.g:14490:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
-            // InternalSignalDSL.g:14491:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:14889:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:14890:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
             }
-            // InternalSignalDSL.g:14492:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
-            // InternalSignalDSL.g:14492:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
+            // InternalSignalDSL.g:14891:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:14891:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_2_1();
@@ -48137,16 +49418,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0"
-    // InternalSignalDSL.g:14501:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
+    // InternalSignalDSL.g:14900:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
     public final void rule__XFeatureCall__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14505:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
-            // InternalSignalDSL.g:14506:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            // InternalSignalDSL.g:14904:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalSignalDSL.g:14905:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_77);
             rule__XFeatureCall__Group_3__0__Impl();
 
             state._fsp--;
@@ -48175,23 +49456,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0__Impl"
-    // InternalSignalDSL.g:14513:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:14912:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
     public final void rule__XFeatureCall__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14517:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:14518:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalSignalDSL.g:14916:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:14917:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:14518:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
-            // InternalSignalDSL.g:14519:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalSignalDSL.g:14917:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalSignalDSL.g:14918:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:14520:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
-            // InternalSignalDSL.g:14520:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
+            // InternalSignalDSL.g:14919:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalSignalDSL.g:14919:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__ExplicitOperationCallAssignment_3_0();
@@ -48226,16 +49507,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1"
-    // InternalSignalDSL.g:14528:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
+    // InternalSignalDSL.g:14927:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
     public final void rule__XFeatureCall__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14532:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
-            // InternalSignalDSL.g:14533:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            // InternalSignalDSL.g:14931:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalSignalDSL.g:14932:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_77);
             rule__XFeatureCall__Group_3__1__Impl();
 
             state._fsp--;
@@ -48264,31 +49545,31 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1__Impl"
-    // InternalSignalDSL.g:14540:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
+    // InternalSignalDSL.g:14939:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
     public final void rule__XFeatureCall__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14544:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
-            // InternalSignalDSL.g:14545:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:14943:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalSignalDSL.g:14944:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
             {
-            // InternalSignalDSL.g:14545:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
-            // InternalSignalDSL.g:14546:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            // InternalSignalDSL.g:14944:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:14945:2: ( rule__XFeatureCall__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
             }
-            // InternalSignalDSL.g:14547:2: ( rule__XFeatureCall__Alternatives_3_1 )?
-            int alt115=2;
-            int LA115_0 = input.LA(1);
+            // InternalSignalDSL.g:14946:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            int alt118=2;
+            int LA118_0 = input.LA(1);
 
-            if ( ((LA115_0>=RULE_ID && LA115_0<=RULE_STRING)||LA115_0==27||LA115_0==31||(LA115_0>=34 && LA115_0<=35)||LA115_0==40||(LA115_0>=45 && LA115_0<=50)||LA115_0==63||LA115_0==80||(LA115_0>=84 && LA115_0<=85)||LA115_0==88||LA115_0==90||(LA115_0>=93 && LA115_0<=101)||LA115_0==103||LA115_0==110||LA115_0==112) ) {
-                alt115=1;
+            if ( ((LA118_0>=RULE_ID && LA118_0<=RULE_STRING)||LA118_0==27||LA118_0==31||(LA118_0>=34 && LA118_0<=35)||LA118_0==40||(LA118_0>=45 && LA118_0<=50)||LA118_0==62||LA118_0==78||(LA118_0>=82 && LA118_0<=83)||LA118_0==86||LA118_0==88||(LA118_0>=91 && LA118_0<=99)||LA118_0==101||LA118_0==109||LA118_0==111) ) {
+                alt118=1;
             }
-            switch (alt115) {
+            switch (alt118) {
                 case 1 :
-                    // InternalSignalDSL.g:14547:3: rule__XFeatureCall__Alternatives_3_1
+                    // InternalSignalDSL.g:14946:3: rule__XFeatureCall__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Alternatives_3_1();
@@ -48326,14 +49607,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2"
-    // InternalSignalDSL.g:14555:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
+    // InternalSignalDSL.g:14954:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
     public final void rule__XFeatureCall__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14559:1: ( rule__XFeatureCall__Group_3__2__Impl )
-            // InternalSignalDSL.g:14560:2: rule__XFeatureCall__Group_3__2__Impl
+            // InternalSignalDSL.g:14958:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalSignalDSL.g:14959:2: rule__XFeatureCall__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3__2__Impl();
@@ -48359,22 +49640,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2__Impl"
-    // InternalSignalDSL.g:14566:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:14965:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14570:1: ( ( ')' ) )
-            // InternalSignalDSL.g:14571:1: ( ')' )
+            // InternalSignalDSL.g:14969:1: ( ( ')' ) )
+            // InternalSignalDSL.g:14970:1: ( ')' )
             {
-            // InternalSignalDSL.g:14571:1: ( ')' )
-            // InternalSignalDSL.g:14572:2: ')'
+            // InternalSignalDSL.g:14970:1: ( ')' )
+            // InternalSignalDSL.g:14971:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -48400,16 +49681,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0"
-    // InternalSignalDSL.g:14582:1: rule__XFeatureCall__Group_3_1_1__0 : rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 ;
+    // InternalSignalDSL.g:14981:1: rule__XFeatureCall__Group_3_1_1__0 : rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 ;
     public final void rule__XFeatureCall__Group_3_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14586:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
-            // InternalSignalDSL.g:14587:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            // InternalSignalDSL.g:14985:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalSignalDSL.g:14986:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XFeatureCall__Group_3_1_1__0__Impl();
 
             state._fsp--;
@@ -48438,23 +49719,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0__Impl"
-    // InternalSignalDSL.g:14594:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
+    // InternalSignalDSL.g:14993:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
     public final void rule__XFeatureCall__Group_3_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14598:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
-            // InternalSignalDSL.g:14599:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalSignalDSL.g:14997:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalSignalDSL.g:14998:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
             {
-            // InternalSignalDSL.g:14599:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
-            // InternalSignalDSL.g:14600:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalSignalDSL.g:14998:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalSignalDSL.g:14999:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
             }
-            // InternalSignalDSL.g:14601:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
-            // InternalSignalDSL.g:14601:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
+            // InternalSignalDSL.g:15000:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalSignalDSL.g:15000:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0();
@@ -48489,14 +49770,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1"
-    // InternalSignalDSL.g:14609:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
+    // InternalSignalDSL.g:15008:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
     public final void rule__XFeatureCall__Group_3_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14613:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
-            // InternalSignalDSL.g:14614:2: rule__XFeatureCall__Group_3_1_1__1__Impl
+            // InternalSignalDSL.g:15012:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalSignalDSL.g:15013:2: rule__XFeatureCall__Group_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1__1__Impl();
@@ -48522,37 +49803,37 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1__Impl"
-    // InternalSignalDSL.g:14620:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
+    // InternalSignalDSL.g:15019:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
     public final void rule__XFeatureCall__Group_3_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14624:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:14625:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:15023:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:15024:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:14625:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
-            // InternalSignalDSL.g:14626:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            // InternalSignalDSL.g:15024:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:15025:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
             }
-            // InternalSignalDSL.g:14627:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
-            loop116:
+            // InternalSignalDSL.g:15026:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            loop119:
             do {
-                int alt116=2;
-                int LA116_0 = input.LA(1);
+                int alt119=2;
+                int LA119_0 = input.LA(1);
 
-                if ( (LA116_0==82) ) {
-                    alt116=1;
+                if ( (LA119_0==80) ) {
+                    alt119=1;
                 }
 
 
-                switch (alt116) {
+                switch (alt119) {
             	case 1 :
-            	    // InternalSignalDSL.g:14627:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    // InternalSignalDSL.g:15026:3: rule__XFeatureCall__Group_3_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XFeatureCall__Group_3_1_1_1__0();
 
             	    state._fsp--;
@@ -48562,7 +49843,7 @@
             	    break;
 
             	default :
-            	    break loop116;
+            	    break loop119;
                 }
             } while (true);
 
@@ -48591,16 +49872,16 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0"
-    // InternalSignalDSL.g:14636:1: rule__XFeatureCall__Group_3_1_1_1__0 : rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 ;
+    // InternalSignalDSL.g:15035:1: rule__XFeatureCall__Group_3_1_1_1__0 : rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 ;
     public final void rule__XFeatureCall__Group_3_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14640:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
-            // InternalSignalDSL.g:14641:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            // InternalSignalDSL.g:15039:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalSignalDSL.g:15040:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XFeatureCall__Group_3_1_1_1__0__Impl();
 
             state._fsp--;
@@ -48629,22 +49910,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0__Impl"
-    // InternalSignalDSL.g:14648:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:15047:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XFeatureCall__Group_3_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14652:1: ( ( ',' ) )
-            // InternalSignalDSL.g:14653:1: ( ',' )
+            // InternalSignalDSL.g:15051:1: ( ( ',' ) )
+            // InternalSignalDSL.g:15052:1: ( ',' )
             {
-            // InternalSignalDSL.g:14653:1: ( ',' )
-            // InternalSignalDSL.g:14654:2: ','
+            // InternalSignalDSL.g:15052:1: ( ',' )
+            // InternalSignalDSL.g:15053:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
@@ -48670,14 +49951,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1"
-    // InternalSignalDSL.g:14663:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:15062:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
     public final void rule__XFeatureCall__Group_3_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14667:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
-            // InternalSignalDSL.g:14668:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
+            // InternalSignalDSL.g:15066:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalSignalDSL.g:15067:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1_1__1__Impl();
@@ -48703,23 +49984,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1__Impl"
-    // InternalSignalDSL.g:14674:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:15073:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
     public final void rule__XFeatureCall__Group_3_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14678:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:14679:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:15077:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:15078:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:14679:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
-            // InternalSignalDSL.g:14680:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalSignalDSL.g:15078:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:15079:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:14681:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
-            // InternalSignalDSL.g:14681:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
+            // InternalSignalDSL.g:15080:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalSignalDSL.g:15080:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1();
@@ -48754,16 +50035,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0"
-    // InternalSignalDSL.g:14690:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
+    // InternalSignalDSL.g:15089:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
     public final void rule__XConstructorCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14694:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
-            // InternalSignalDSL.g:14695:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            // InternalSignalDSL.g:15093:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalSignalDSL.g:15094:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
             {
-            pushFollow(FOLLOW_96);
+            pushFollow(FOLLOW_99);
             rule__XConstructorCall__Group__0__Impl();
 
             state._fsp--;
@@ -48792,23 +50073,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0__Impl"
-    // InternalSignalDSL.g:14702:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15101:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
     public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14706:1: ( ( () ) )
-            // InternalSignalDSL.g:14707:1: ( () )
+            // InternalSignalDSL.g:15105:1: ( ( () ) )
+            // InternalSignalDSL.g:15106:1: ( () )
             {
-            // InternalSignalDSL.g:14707:1: ( () )
-            // InternalSignalDSL.g:14708:2: ()
+            // InternalSignalDSL.g:15106:1: ( () )
+            // InternalSignalDSL.g:15107:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
             }
-            // InternalSignalDSL.g:14709:2: ()
-            // InternalSignalDSL.g:14709:3: 
+            // InternalSignalDSL.g:15108:2: ()
+            // InternalSignalDSL.g:15108:3: 
             {
             }
 
@@ -48833,14 +50114,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1"
-    // InternalSignalDSL.g:14717:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
+    // InternalSignalDSL.g:15116:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
     public final void rule__XConstructorCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14721:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
-            // InternalSignalDSL.g:14722:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
+            // InternalSignalDSL.g:15120:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalSignalDSL.g:15121:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
             {
             pushFollow(FOLLOW_6);
             rule__XConstructorCall__Group__1__Impl();
@@ -48871,22 +50152,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1__Impl"
-    // InternalSignalDSL.g:14729:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    // InternalSignalDSL.g:15128:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
     public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14733:1: ( ( 'new' ) )
-            // InternalSignalDSL.g:14734:1: ( 'new' )
+            // InternalSignalDSL.g:15132:1: ( ( 'new' ) )
+            // InternalSignalDSL.g:15133:1: ( 'new' )
             {
-            // InternalSignalDSL.g:14734:1: ( 'new' )
-            // InternalSignalDSL.g:14735:2: 'new'
+            // InternalSignalDSL.g:15133:1: ( 'new' )
+            // InternalSignalDSL.g:15134:2: 'new'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
             }
@@ -48912,16 +50193,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2"
-    // InternalSignalDSL.g:14744:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
+    // InternalSignalDSL.g:15143:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
     public final void rule__XConstructorCall__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14748:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
-            // InternalSignalDSL.g:14749:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            // InternalSignalDSL.g:15147:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalSignalDSL.g:15148:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_100);
             rule__XConstructorCall__Group__2__Impl();
 
             state._fsp--;
@@ -48950,23 +50231,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2__Impl"
-    // InternalSignalDSL.g:14756:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    // InternalSignalDSL.g:15155:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
     public final void rule__XConstructorCall__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14760:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
-            // InternalSignalDSL.g:14761:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalSignalDSL.g:15159:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalSignalDSL.g:15160:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
             {
-            // InternalSignalDSL.g:14761:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
-            // InternalSignalDSL.g:14762:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalSignalDSL.g:15160:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalSignalDSL.g:15161:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
             }
-            // InternalSignalDSL.g:14763:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
-            // InternalSignalDSL.g:14763:3: rule__XConstructorCall__ConstructorAssignment_2
+            // InternalSignalDSL.g:15162:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalSignalDSL.g:15162:3: rule__XConstructorCall__ConstructorAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ConstructorAssignment_2();
@@ -49001,16 +50282,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3"
-    // InternalSignalDSL.g:14771:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
+    // InternalSignalDSL.g:15170:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
     public final void rule__XConstructorCall__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14775:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
-            // InternalSignalDSL.g:14776:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            // InternalSignalDSL.g:15174:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalSignalDSL.g:15175:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_100);
             rule__XConstructorCall__Group__3__Impl();
 
             state._fsp--;
@@ -49039,27 +50320,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3__Impl"
-    // InternalSignalDSL.g:14783:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:15182:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
     public final void rule__XConstructorCall__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14787:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
-            // InternalSignalDSL.g:14788:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalSignalDSL.g:15186:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalSignalDSL.g:15187:1: ( ( rule__XConstructorCall__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:14788:1: ( ( rule__XConstructorCall__Group_3__0 )? )
-            // InternalSignalDSL.g:14789:2: ( rule__XConstructorCall__Group_3__0 )?
+            // InternalSignalDSL.g:15187:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalSignalDSL.g:15188:2: ( rule__XConstructorCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:14790:2: ( rule__XConstructorCall__Group_3__0 )?
-            int alt117=2;
-            alt117 = dfa117.predict(input);
-            switch (alt117) {
+            // InternalSignalDSL.g:15189:2: ( rule__XConstructorCall__Group_3__0 )?
+            int alt120=2;
+            alt120 = dfa120.predict(input);
+            switch (alt120) {
                 case 1 :
-                    // InternalSignalDSL.g:14790:3: rule__XConstructorCall__Group_3__0
+                    // InternalSignalDSL.g:15189:3: rule__XConstructorCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_3__0();
@@ -49097,16 +50378,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4"
-    // InternalSignalDSL.g:14798:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
+    // InternalSignalDSL.g:15197:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
     public final void rule__XConstructorCall__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14802:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
-            // InternalSignalDSL.g:14803:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            // InternalSignalDSL.g:15201:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalSignalDSL.g:15202:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
             {
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_100);
             rule__XConstructorCall__Group__4__Impl();
 
             state._fsp--;
@@ -49135,27 +50416,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4__Impl"
-    // InternalSignalDSL.g:14810:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
+    // InternalSignalDSL.g:15209:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
     public final void rule__XConstructorCall__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14814:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
-            // InternalSignalDSL.g:14815:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalSignalDSL.g:15213:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalSignalDSL.g:15214:1: ( ( rule__XConstructorCall__Group_4__0 )? )
             {
-            // InternalSignalDSL.g:14815:1: ( ( rule__XConstructorCall__Group_4__0 )? )
-            // InternalSignalDSL.g:14816:2: ( rule__XConstructorCall__Group_4__0 )?
+            // InternalSignalDSL.g:15214:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalSignalDSL.g:15215:2: ( rule__XConstructorCall__Group_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
             }
-            // InternalSignalDSL.g:14817:2: ( rule__XConstructorCall__Group_4__0 )?
-            int alt118=2;
-            alt118 = dfa118.predict(input);
-            switch (alt118) {
+            // InternalSignalDSL.g:15216:2: ( rule__XConstructorCall__Group_4__0 )?
+            int alt121=2;
+            alt121 = dfa121.predict(input);
+            switch (alt121) {
                 case 1 :
-                    // InternalSignalDSL.g:14817:3: rule__XConstructorCall__Group_4__0
+                    // InternalSignalDSL.g:15216:3: rule__XConstructorCall__Group_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4__0();
@@ -49193,14 +50474,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5"
-    // InternalSignalDSL.g:14825:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    // InternalSignalDSL.g:15224:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
     public final void rule__XConstructorCall__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14829:1: ( rule__XConstructorCall__Group__5__Impl )
-            // InternalSignalDSL.g:14830:2: rule__XConstructorCall__Group__5__Impl
+            // InternalSignalDSL.g:15228:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalSignalDSL.g:15229:2: rule__XConstructorCall__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__5__Impl();
@@ -49226,27 +50507,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5__Impl"
-    // InternalSignalDSL.g:14836:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    // InternalSignalDSL.g:15235:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
     public final void rule__XConstructorCall__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14840:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
-            // InternalSignalDSL.g:14841:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalSignalDSL.g:15239:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalSignalDSL.g:15240:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
             {
-            // InternalSignalDSL.g:14841:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
-            // InternalSignalDSL.g:14842:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            // InternalSignalDSL.g:15240:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalSignalDSL.g:15241:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
             }
-            // InternalSignalDSL.g:14843:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
-            int alt119=2;
-            alt119 = dfa119.predict(input);
-            switch (alt119) {
+            // InternalSignalDSL.g:15242:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            int alt122=2;
+            alt122 = dfa122.predict(input);
+            switch (alt122) {
                 case 1 :
-                    // InternalSignalDSL.g:14843:3: rule__XConstructorCall__ArgumentsAssignment_5
+                    // InternalSignalDSL.g:15242:3: rule__XConstructorCall__ArgumentsAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_5();
@@ -49284,16 +50565,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0"
-    // InternalSignalDSL.g:14852:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
+    // InternalSignalDSL.g:15251:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
     public final void rule__XConstructorCall__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14856:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
-            // InternalSignalDSL.g:14857:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            // InternalSignalDSL.g:15255:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalSignalDSL.g:15256:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__XConstructorCall__Group_3__0__Impl();
 
             state._fsp--;
@@ -49322,23 +50603,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0__Impl"
-    // InternalSignalDSL.g:14864:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    // InternalSignalDSL.g:15263:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
     public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14868:1: ( ( ( '<' ) ) )
-            // InternalSignalDSL.g:14869:1: ( ( '<' ) )
+            // InternalSignalDSL.g:15267:1: ( ( ( '<' ) ) )
+            // InternalSignalDSL.g:15268:1: ( ( '<' ) )
             {
-            // InternalSignalDSL.g:14869:1: ( ( '<' ) )
-            // InternalSignalDSL.g:14870:2: ( '<' )
+            // InternalSignalDSL.g:15268:1: ( ( '<' ) )
+            // InternalSignalDSL.g:15269:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
             }
-            // InternalSignalDSL.g:14871:2: ( '<' )
-            // InternalSignalDSL.g:14871:3: '<'
+            // InternalSignalDSL.g:15270:2: ( '<' )
+            // InternalSignalDSL.g:15270:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -49369,16 +50650,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1"
-    // InternalSignalDSL.g:14879:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
+    // InternalSignalDSL.g:15278:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
     public final void rule__XConstructorCall__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14883:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
-            // InternalSignalDSL.g:14884:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            // InternalSignalDSL.g:15282:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalSignalDSL.g:15283:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__XConstructorCall__Group_3__1__Impl();
 
             state._fsp--;
@@ -49407,23 +50688,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1__Impl"
-    // InternalSignalDSL.g:14891:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
+    // InternalSignalDSL.g:15290:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
     public final void rule__XConstructorCall__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14895:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
-            // InternalSignalDSL.g:14896:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalSignalDSL.g:15294:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalSignalDSL.g:15295:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
             {
-            // InternalSignalDSL.g:14896:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
-            // InternalSignalDSL.g:14897:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalSignalDSL.g:15295:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalSignalDSL.g:15296:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
             }
-            // InternalSignalDSL.g:14898:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
-            // InternalSignalDSL.g:14898:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
+            // InternalSignalDSL.g:15297:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalSignalDSL.g:15297:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_1();
@@ -49458,16 +50739,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2"
-    // InternalSignalDSL.g:14906:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
+    // InternalSignalDSL.g:15305:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
     public final void rule__XConstructorCall__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14910:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
-            // InternalSignalDSL.g:14911:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            // InternalSignalDSL.g:15309:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalSignalDSL.g:15310:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__XConstructorCall__Group_3__2__Impl();
 
             state._fsp--;
@@ -49496,37 +50777,37 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2__Impl"
-    // InternalSignalDSL.g:14918:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
+    // InternalSignalDSL.g:15317:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
     public final void rule__XConstructorCall__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14922:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
-            // InternalSignalDSL.g:14923:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalSignalDSL.g:15321:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalSignalDSL.g:15322:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
             {
-            // InternalSignalDSL.g:14923:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
-            // InternalSignalDSL.g:14924:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            // InternalSignalDSL.g:15322:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalSignalDSL.g:15323:2: ( rule__XConstructorCall__Group_3_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
             }
-            // InternalSignalDSL.g:14925:2: ( rule__XConstructorCall__Group_3_2__0 )*
-            loop120:
+            // InternalSignalDSL.g:15324:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            loop123:
             do {
-                int alt120=2;
-                int LA120_0 = input.LA(1);
+                int alt123=2;
+                int LA123_0 = input.LA(1);
 
-                if ( (LA120_0==82) ) {
-                    alt120=1;
+                if ( (LA123_0==80) ) {
+                    alt123=1;
                 }
 
 
-                switch (alt120) {
+                switch (alt123) {
             	case 1 :
-            	    // InternalSignalDSL.g:14925:3: rule__XConstructorCall__Group_3_2__0
+            	    // InternalSignalDSL.g:15324:3: rule__XConstructorCall__Group_3_2__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XConstructorCall__Group_3_2__0();
 
             	    state._fsp--;
@@ -49536,7 +50817,7 @@
             	    break;
 
             	default :
-            	    break loop120;
+            	    break loop123;
                 }
             } while (true);
 
@@ -49565,14 +50846,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3"
-    // InternalSignalDSL.g:14933:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
+    // InternalSignalDSL.g:15332:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
     public final void rule__XConstructorCall__Group_3__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14937:1: ( rule__XConstructorCall__Group_3__3__Impl )
-            // InternalSignalDSL.g:14938:2: rule__XConstructorCall__Group_3__3__Impl
+            // InternalSignalDSL.g:15336:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalSignalDSL.g:15337:2: rule__XConstructorCall__Group_3__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3__3__Impl();
@@ -49598,17 +50879,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3__Impl"
-    // InternalSignalDSL.g:14944:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:15343:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
     public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14948:1: ( ( '>' ) )
-            // InternalSignalDSL.g:14949:1: ( '>' )
+            // InternalSignalDSL.g:15347:1: ( ( '>' ) )
+            // InternalSignalDSL.g:15348:1: ( '>' )
             {
-            // InternalSignalDSL.g:14949:1: ( '>' )
-            // InternalSignalDSL.g:14950:2: '>'
+            // InternalSignalDSL.g:15348:1: ( '>' )
+            // InternalSignalDSL.g:15349:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); 
@@ -49639,16 +50920,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0"
-    // InternalSignalDSL.g:14960:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
+    // InternalSignalDSL.g:15359:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
     public final void rule__XConstructorCall__Group_3_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14964:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
-            // InternalSignalDSL.g:14965:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            // InternalSignalDSL.g:15363:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalSignalDSL.g:15364:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__XConstructorCall__Group_3_2__0__Impl();
 
             state._fsp--;
@@ -49677,22 +50958,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0__Impl"
-    // InternalSignalDSL.g:14972:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:15371:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
     public final void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14976:1: ( ( ',' ) )
-            // InternalSignalDSL.g:14977:1: ( ',' )
+            // InternalSignalDSL.g:15375:1: ( ( ',' ) )
+            // InternalSignalDSL.g:15376:1: ( ',' )
             {
-            // InternalSignalDSL.g:14977:1: ( ',' )
-            // InternalSignalDSL.g:14978:2: ','
+            // InternalSignalDSL.g:15376:1: ( ',' )
+            // InternalSignalDSL.g:15377:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
@@ -49718,14 +50999,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1"
-    // InternalSignalDSL.g:14987:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
+    // InternalSignalDSL.g:15386:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
     public final void rule__XConstructorCall__Group_3_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14991:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
-            // InternalSignalDSL.g:14992:2: rule__XConstructorCall__Group_3_2__1__Impl
+            // InternalSignalDSL.g:15390:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalSignalDSL.g:15391:2: rule__XConstructorCall__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3_2__1__Impl();
@@ -49751,23 +51032,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1__Impl"
-    // InternalSignalDSL.g:14998:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
+    // InternalSignalDSL.g:15397:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
     public final void rule__XConstructorCall__Group_3_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15002:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
-            // InternalSignalDSL.g:15003:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalSignalDSL.g:15401:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalSignalDSL.g:15402:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
             {
-            // InternalSignalDSL.g:15003:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
-            // InternalSignalDSL.g:15004:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalSignalDSL.g:15402:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalSignalDSL.g:15403:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
             }
-            // InternalSignalDSL.g:15005:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
-            // InternalSignalDSL.g:15005:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
+            // InternalSignalDSL.g:15404:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalSignalDSL.g:15404:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_2_1();
@@ -49802,16 +51083,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0"
-    // InternalSignalDSL.g:15014:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
+    // InternalSignalDSL.g:15413:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
     public final void rule__XConstructorCall__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15018:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
-            // InternalSignalDSL.g:15019:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            // InternalSignalDSL.g:15417:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalSignalDSL.g:15418:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_77);
             rule__XConstructorCall__Group_4__0__Impl();
 
             state._fsp--;
@@ -49840,23 +51121,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0__Impl"
-    // InternalSignalDSL.g:15026:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
+    // InternalSignalDSL.g:15425:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
     public final void rule__XConstructorCall__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15030:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
-            // InternalSignalDSL.g:15031:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalSignalDSL.g:15429:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalSignalDSL.g:15430:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
             {
-            // InternalSignalDSL.g:15031:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
-            // InternalSignalDSL.g:15032:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalSignalDSL.g:15430:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalSignalDSL.g:15431:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
             }
-            // InternalSignalDSL.g:15033:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
-            // InternalSignalDSL.g:15033:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
+            // InternalSignalDSL.g:15432:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalSignalDSL.g:15432:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0();
@@ -49891,16 +51172,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1"
-    // InternalSignalDSL.g:15041:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
+    // InternalSignalDSL.g:15440:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
     public final void rule__XConstructorCall__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15045:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
-            // InternalSignalDSL.g:15046:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            // InternalSignalDSL.g:15444:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalSignalDSL.g:15445:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
             {
-            pushFollow(FOLLOW_74);
+            pushFollow(FOLLOW_77);
             rule__XConstructorCall__Group_4__1__Impl();
 
             state._fsp--;
@@ -49929,31 +51210,31 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1__Impl"
-    // InternalSignalDSL.g:15053:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
+    // InternalSignalDSL.g:15452:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
     public final void rule__XConstructorCall__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15057:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
-            // InternalSignalDSL.g:15058:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalSignalDSL.g:15456:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalSignalDSL.g:15457:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
             {
-            // InternalSignalDSL.g:15058:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
-            // InternalSignalDSL.g:15059:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            // InternalSignalDSL.g:15457:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalSignalDSL.g:15458:2: ( rule__XConstructorCall__Alternatives_4_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
             }
-            // InternalSignalDSL.g:15060:2: ( rule__XConstructorCall__Alternatives_4_1 )?
-            int alt121=2;
-            int LA121_0 = input.LA(1);
+            // InternalSignalDSL.g:15459:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            int alt124=2;
+            int LA124_0 = input.LA(1);
 
-            if ( ((LA121_0>=RULE_ID && LA121_0<=RULE_STRING)||LA121_0==27||LA121_0==31||(LA121_0>=34 && LA121_0<=35)||LA121_0==40||(LA121_0>=45 && LA121_0<=50)||LA121_0==63||LA121_0==80||(LA121_0>=84 && LA121_0<=85)||LA121_0==88||LA121_0==90||(LA121_0>=93 && LA121_0<=101)||LA121_0==103||LA121_0==110||LA121_0==112) ) {
-                alt121=1;
+            if ( ((LA124_0>=RULE_ID && LA124_0<=RULE_STRING)||LA124_0==27||LA124_0==31||(LA124_0>=34 && LA124_0<=35)||LA124_0==40||(LA124_0>=45 && LA124_0<=50)||LA124_0==62||LA124_0==78||(LA124_0>=82 && LA124_0<=83)||LA124_0==86||LA124_0==88||(LA124_0>=91 && LA124_0<=99)||LA124_0==101||LA124_0==109||LA124_0==111) ) {
+                alt124=1;
             }
-            switch (alt121) {
+            switch (alt124) {
                 case 1 :
-                    // InternalSignalDSL.g:15060:3: rule__XConstructorCall__Alternatives_4_1
+                    // InternalSignalDSL.g:15459:3: rule__XConstructorCall__Alternatives_4_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Alternatives_4_1();
@@ -49991,14 +51272,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2"
-    // InternalSignalDSL.g:15068:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
+    // InternalSignalDSL.g:15467:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
     public final void rule__XConstructorCall__Group_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15072:1: ( rule__XConstructorCall__Group_4__2__Impl )
-            // InternalSignalDSL.g:15073:2: rule__XConstructorCall__Group_4__2__Impl
+            // InternalSignalDSL.g:15471:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalSignalDSL.g:15472:2: rule__XConstructorCall__Group_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4__2__Impl();
@@ -50024,22 +51305,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2__Impl"
-    // InternalSignalDSL.g:15079:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:15478:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
     public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15083:1: ( ( ')' ) )
-            // InternalSignalDSL.g:15084:1: ( ')' )
+            // InternalSignalDSL.g:15482:1: ( ( ')' ) )
+            // InternalSignalDSL.g:15483:1: ( ')' )
             {
-            // InternalSignalDSL.g:15084:1: ( ')' )
-            // InternalSignalDSL.g:15085:2: ')'
+            // InternalSignalDSL.g:15483:1: ( ')' )
+            // InternalSignalDSL.g:15484:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
@@ -50065,16 +51346,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0"
-    // InternalSignalDSL.g:15095:1: rule__XConstructorCall__Group_4_1_1__0 : rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 ;
+    // InternalSignalDSL.g:15494:1: rule__XConstructorCall__Group_4_1_1__0 : rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 ;
     public final void rule__XConstructorCall__Group_4_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15099:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
-            // InternalSignalDSL.g:15100:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            // InternalSignalDSL.g:15498:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalSignalDSL.g:15499:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XConstructorCall__Group_4_1_1__0__Impl();
 
             state._fsp--;
@@ -50103,23 +51384,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0__Impl"
-    // InternalSignalDSL.g:15107:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
+    // InternalSignalDSL.g:15506:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
     public final void rule__XConstructorCall__Group_4_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15111:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
-            // InternalSignalDSL.g:15112:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalSignalDSL.g:15510:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalSignalDSL.g:15511:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
             {
-            // InternalSignalDSL.g:15112:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
-            // InternalSignalDSL.g:15113:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalSignalDSL.g:15511:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalSignalDSL.g:15512:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
             }
-            // InternalSignalDSL.g:15114:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
-            // InternalSignalDSL.g:15114:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
+            // InternalSignalDSL.g:15513:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalSignalDSL.g:15513:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_0();
@@ -50154,14 +51435,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1"
-    // InternalSignalDSL.g:15122:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
+    // InternalSignalDSL.g:15521:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
     public final void rule__XConstructorCall__Group_4_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15126:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
-            // InternalSignalDSL.g:15127:2: rule__XConstructorCall__Group_4_1_1__1__Impl
+            // InternalSignalDSL.g:15525:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalSignalDSL.g:15526:2: rule__XConstructorCall__Group_4_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1__1__Impl();
@@ -50187,37 +51468,37 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1__Impl"
-    // InternalSignalDSL.g:15133:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
+    // InternalSignalDSL.g:15532:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
     public final void rule__XConstructorCall__Group_4_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15137:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:15138:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalSignalDSL.g:15536:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:15537:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:15138:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
-            // InternalSignalDSL.g:15139:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            // InternalSignalDSL.g:15537:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalSignalDSL.g:15538:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
             }
-            // InternalSignalDSL.g:15140:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
-            loop122:
+            // InternalSignalDSL.g:15539:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            loop125:
             do {
-                int alt122=2;
-                int LA122_0 = input.LA(1);
+                int alt125=2;
+                int LA125_0 = input.LA(1);
 
-                if ( (LA122_0==82) ) {
-                    alt122=1;
+                if ( (LA125_0==80) ) {
+                    alt125=1;
                 }
 
 
-                switch (alt122) {
+                switch (alt125) {
             	case 1 :
-            	    // InternalSignalDSL.g:15140:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    // InternalSignalDSL.g:15539:3: rule__XConstructorCall__Group_4_1_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XConstructorCall__Group_4_1_1_1__0();
 
             	    state._fsp--;
@@ -50227,7 +51508,7 @@
             	    break;
 
             	default :
-            	    break loop122;
+            	    break loop125;
                 }
             } while (true);
 
@@ -50256,16 +51537,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0"
-    // InternalSignalDSL.g:15149:1: rule__XConstructorCall__Group_4_1_1_1__0 : rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 ;
+    // InternalSignalDSL.g:15548:1: rule__XConstructorCall__Group_4_1_1_1__0 : rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 ;
     public final void rule__XConstructorCall__Group_4_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15153:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
-            // InternalSignalDSL.g:15154:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            // InternalSignalDSL.g:15552:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalSignalDSL.g:15553:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XConstructorCall__Group_4_1_1_1__0__Impl();
 
             state._fsp--;
@@ -50294,22 +51575,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0__Impl"
-    // InternalSignalDSL.g:15161:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:15560:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XConstructorCall__Group_4_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15165:1: ( ( ',' ) )
-            // InternalSignalDSL.g:15166:1: ( ',' )
+            // InternalSignalDSL.g:15564:1: ( ( ',' ) )
+            // InternalSignalDSL.g:15565:1: ( ',' )
             {
-            // InternalSignalDSL.g:15166:1: ( ',' )
-            // InternalSignalDSL.g:15167:2: ','
+            // InternalSignalDSL.g:15565:1: ( ',' )
+            // InternalSignalDSL.g:15566:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
@@ -50335,14 +51616,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1"
-    // InternalSignalDSL.g:15176:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:15575:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
     public final void rule__XConstructorCall__Group_4_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15180:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
-            // InternalSignalDSL.g:15181:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
+            // InternalSignalDSL.g:15579:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalSignalDSL.g:15580:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1_1__1__Impl();
@@ -50368,23 +51649,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1__Impl"
-    // InternalSignalDSL.g:15187:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:15586:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
     public final void rule__XConstructorCall__Group_4_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15191:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:15192:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalSignalDSL.g:15590:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:15591:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:15192:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
-            // InternalSignalDSL.g:15193:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalSignalDSL.g:15591:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalSignalDSL.g:15592:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:15194:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
-            // InternalSignalDSL.g:15194:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
+            // InternalSignalDSL.g:15593:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalSignalDSL.g:15593:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1();
@@ -50419,16 +51700,16 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0"
-    // InternalSignalDSL.g:15203:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
+    // InternalSignalDSL.g:15602:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
     public final void rule__XBooleanLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15207:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
-            // InternalSignalDSL.g:15208:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            // InternalSignalDSL.g:15606:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalSignalDSL.g:15607:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
             {
-            pushFollow(FOLLOW_98);
+            pushFollow(FOLLOW_101);
             rule__XBooleanLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -50457,23 +51738,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:15215:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15614:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15219:1: ( ( () ) )
-            // InternalSignalDSL.g:15220:1: ( () )
+            // InternalSignalDSL.g:15618:1: ( ( () ) )
+            // InternalSignalDSL.g:15619:1: ( () )
             {
-            // InternalSignalDSL.g:15220:1: ( () )
-            // InternalSignalDSL.g:15221:2: ()
+            // InternalSignalDSL.g:15619:1: ( () )
+            // InternalSignalDSL.g:15620:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:15222:2: ()
-            // InternalSignalDSL.g:15222:3: 
+            // InternalSignalDSL.g:15621:2: ()
+            // InternalSignalDSL.g:15621:3: 
             {
             }
 
@@ -50498,14 +51779,14 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1"
-    // InternalSignalDSL.g:15230:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15629:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
     public final void rule__XBooleanLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15234:1: ( rule__XBooleanLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:15235:2: rule__XBooleanLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15633:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15634:2: rule__XBooleanLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__1__Impl();
@@ -50531,23 +51812,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:15241:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    // InternalSignalDSL.g:15640:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
     public final void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15245:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
-            // InternalSignalDSL.g:15246:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalSignalDSL.g:15644:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalSignalDSL.g:15645:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
             {
-            // InternalSignalDSL.g:15246:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
-            // InternalSignalDSL.g:15247:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalSignalDSL.g:15645:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalSignalDSL.g:15646:2: ( rule__XBooleanLiteral__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:15248:2: ( rule__XBooleanLiteral__Alternatives_1 )
-            // InternalSignalDSL.g:15248:3: rule__XBooleanLiteral__Alternatives_1
+            // InternalSignalDSL.g:15647:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalSignalDSL.g:15647:3: rule__XBooleanLiteral__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Alternatives_1();
@@ -50582,16 +51863,16 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0"
-    // InternalSignalDSL.g:15257:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
+    // InternalSignalDSL.g:15656:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
     public final void rule__XNullLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15261:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
-            // InternalSignalDSL.g:15262:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            // InternalSignalDSL.g:15660:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalSignalDSL.g:15661:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
             {
-            pushFollow(FOLLOW_99);
+            pushFollow(FOLLOW_102);
             rule__XNullLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -50620,23 +51901,23 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:15269:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15668:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15273:1: ( ( () ) )
-            // InternalSignalDSL.g:15274:1: ( () )
+            // InternalSignalDSL.g:15672:1: ( ( () ) )
+            // InternalSignalDSL.g:15673:1: ( () )
             {
-            // InternalSignalDSL.g:15274:1: ( () )
-            // InternalSignalDSL.g:15275:2: ()
+            // InternalSignalDSL.g:15673:1: ( () )
+            // InternalSignalDSL.g:15674:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:15276:2: ()
-            // InternalSignalDSL.g:15276:3: 
+            // InternalSignalDSL.g:15675:2: ()
+            // InternalSignalDSL.g:15675:3: 
             {
             }
 
@@ -50661,14 +51942,14 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1"
-    // InternalSignalDSL.g:15284:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15683:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
     public final void rule__XNullLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15288:1: ( rule__XNullLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:15289:2: rule__XNullLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15687:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15688:2: rule__XNullLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__1__Impl();
@@ -50694,22 +51975,22 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:15295:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    // InternalSignalDSL.g:15694:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
     public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15299:1: ( ( 'null' ) )
-            // InternalSignalDSL.g:15300:1: ( 'null' )
+            // InternalSignalDSL.g:15698:1: ( ( 'null' ) )
+            // InternalSignalDSL.g:15699:1: ( 'null' )
             {
-            // InternalSignalDSL.g:15300:1: ( 'null' )
-            // InternalSignalDSL.g:15301:2: 'null'
+            // InternalSignalDSL.g:15699:1: ( 'null' )
+            // InternalSignalDSL.g:15700:2: 'null'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
             }
@@ -50735,16 +52016,16 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0"
-    // InternalSignalDSL.g:15311:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
+    // InternalSignalDSL.g:15710:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
     public final void rule__XNumberLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15315:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
-            // InternalSignalDSL.g:15316:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            // InternalSignalDSL.g:15714:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalSignalDSL.g:15715:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
             {
-            pushFollow(FOLLOW_100);
+            pushFollow(FOLLOW_103);
             rule__XNumberLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -50773,23 +52054,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:15323:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15722:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15327:1: ( ( () ) )
-            // InternalSignalDSL.g:15328:1: ( () )
+            // InternalSignalDSL.g:15726:1: ( ( () ) )
+            // InternalSignalDSL.g:15727:1: ( () )
             {
-            // InternalSignalDSL.g:15328:1: ( () )
-            // InternalSignalDSL.g:15329:2: ()
+            // InternalSignalDSL.g:15727:1: ( () )
+            // InternalSignalDSL.g:15728:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:15330:2: ()
-            // InternalSignalDSL.g:15330:3: 
+            // InternalSignalDSL.g:15729:2: ()
+            // InternalSignalDSL.g:15729:3: 
             {
             }
 
@@ -50814,14 +52095,14 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1"
-    // InternalSignalDSL.g:15338:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15737:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
     public final void rule__XNumberLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15342:1: ( rule__XNumberLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:15343:2: rule__XNumberLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15741:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15742:2: rule__XNumberLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__1__Impl();
@@ -50847,23 +52128,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:15349:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    // InternalSignalDSL.g:15748:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
     public final void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15353:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
-            // InternalSignalDSL.g:15354:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15752:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalSignalDSL.g:15753:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
             {
-            // InternalSignalDSL.g:15354:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
-            // InternalSignalDSL.g:15355:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15753:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15754:2: ( rule__XNumberLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalSignalDSL.g:15356:2: ( rule__XNumberLiteral__ValueAssignment_1 )
-            // InternalSignalDSL.g:15356:3: rule__XNumberLiteral__ValueAssignment_1
+            // InternalSignalDSL.g:15755:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15755:3: rule__XNumberLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__ValueAssignment_1();
@@ -50898,16 +52179,16 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0"
-    // InternalSignalDSL.g:15365:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
+    // InternalSignalDSL.g:15764:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
     public final void rule__XStringLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15369:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
-            // InternalSignalDSL.g:15370:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
+            // InternalSignalDSL.g:15768:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalSignalDSL.g:15769:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
             {
-            pushFollow(FOLLOW_12);
+            pushFollow(FOLLOW_13);
             rule__XStringLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -50936,23 +52217,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:15377:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15776:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15381:1: ( ( () ) )
-            // InternalSignalDSL.g:15382:1: ( () )
+            // InternalSignalDSL.g:15780:1: ( ( () ) )
+            // InternalSignalDSL.g:15781:1: ( () )
             {
-            // InternalSignalDSL.g:15382:1: ( () )
-            // InternalSignalDSL.g:15383:2: ()
+            // InternalSignalDSL.g:15781:1: ( () )
+            // InternalSignalDSL.g:15782:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:15384:2: ()
-            // InternalSignalDSL.g:15384:3: 
+            // InternalSignalDSL.g:15783:2: ()
+            // InternalSignalDSL.g:15783:3: 
             {
             }
 
@@ -50977,14 +52258,14 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1"
-    // InternalSignalDSL.g:15392:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15791:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
     public final void rule__XStringLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15396:1: ( rule__XStringLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:15397:2: rule__XStringLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15795:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15796:2: rule__XStringLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__1__Impl();
@@ -51010,23 +52291,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:15403:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    // InternalSignalDSL.g:15802:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
     public final void rule__XStringLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15407:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
-            // InternalSignalDSL.g:15408:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15806:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalSignalDSL.g:15807:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
             {
-            // InternalSignalDSL.g:15408:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
-            // InternalSignalDSL.g:15409:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15807:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15808:2: ( rule__XStringLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalSignalDSL.g:15410:2: ( rule__XStringLiteral__ValueAssignment_1 )
-            // InternalSignalDSL.g:15410:3: rule__XStringLiteral__ValueAssignment_1
+            // InternalSignalDSL.g:15809:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15809:3: rule__XStringLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__ValueAssignment_1();
@@ -51061,16 +52342,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0"
-    // InternalSignalDSL.g:15419:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
+    // InternalSignalDSL.g:15818:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
     public final void rule__XTypeLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15423:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
-            // InternalSignalDSL.g:15424:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            // InternalSignalDSL.g:15822:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalSignalDSL.g:15823:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
             {
-            pushFollow(FOLLOW_101);
+            pushFollow(FOLLOW_104);
             rule__XTypeLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -51099,23 +52380,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:15431:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15830:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15435:1: ( ( () ) )
-            // InternalSignalDSL.g:15436:1: ( () )
+            // InternalSignalDSL.g:15834:1: ( ( () ) )
+            // InternalSignalDSL.g:15835:1: ( () )
             {
-            // InternalSignalDSL.g:15436:1: ( () )
-            // InternalSignalDSL.g:15437:2: ()
+            // InternalSignalDSL.g:15835:1: ( () )
+            // InternalSignalDSL.g:15836:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:15438:2: ()
-            // InternalSignalDSL.g:15438:3: 
+            // InternalSignalDSL.g:15837:2: ()
+            // InternalSignalDSL.g:15837:3: 
             {
             }
 
@@ -51140,16 +52421,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1"
-    // InternalSignalDSL.g:15446:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
+    // InternalSignalDSL.g:15845:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
     public final void rule__XTypeLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15450:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
-            // InternalSignalDSL.g:15451:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            // InternalSignalDSL.g:15849:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalSignalDSL.g:15850:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XTypeLiteral__Group__1__Impl();
 
             state._fsp--;
@@ -51178,22 +52459,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:15458:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    // InternalSignalDSL.g:15857:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
     public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15462:1: ( ( 'typeof' ) )
-            // InternalSignalDSL.g:15463:1: ( 'typeof' )
+            // InternalSignalDSL.g:15861:1: ( ( 'typeof' ) )
+            // InternalSignalDSL.g:15862:1: ( 'typeof' )
             {
-            // InternalSignalDSL.g:15463:1: ( 'typeof' )
-            // InternalSignalDSL.g:15464:2: 'typeof'
+            // InternalSignalDSL.g:15862:1: ( 'typeof' )
+            // InternalSignalDSL.g:15863:2: 'typeof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
@@ -51219,14 +52500,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2"
-    // InternalSignalDSL.g:15473:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
+    // InternalSignalDSL.g:15872:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
     public final void rule__XTypeLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15477:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
-            // InternalSignalDSL.g:15478:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
+            // InternalSignalDSL.g:15876:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalSignalDSL.g:15877:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
             {
             pushFollow(FOLLOW_6);
             rule__XTypeLiteral__Group__2__Impl();
@@ -51257,22 +52538,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2__Impl"
-    // InternalSignalDSL.g:15485:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:15884:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
     public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15489:1: ( ( '(' ) )
-            // InternalSignalDSL.g:15490:1: ( '(' )
+            // InternalSignalDSL.g:15888:1: ( ( '(' ) )
+            // InternalSignalDSL.g:15889:1: ( '(' )
             {
-            // InternalSignalDSL.g:15490:1: ( '(' )
-            // InternalSignalDSL.g:15491:2: '('
+            // InternalSignalDSL.g:15889:1: ( '(' )
+            // InternalSignalDSL.g:15890:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -51298,16 +52579,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3"
-    // InternalSignalDSL.g:15500:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
+    // InternalSignalDSL.g:15899:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
     public final void rule__XTypeLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15504:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
-            // InternalSignalDSL.g:15505:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            // InternalSignalDSL.g:15903:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalSignalDSL.g:15904:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
             {
-            pushFollow(FOLLOW_102);
+            pushFollow(FOLLOW_105);
             rule__XTypeLiteral__Group__3__Impl();
 
             state._fsp--;
@@ -51336,23 +52617,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3__Impl"
-    // InternalSignalDSL.g:15512:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    // InternalSignalDSL.g:15911:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
     public final void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15516:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
-            // InternalSignalDSL.g:15517:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalSignalDSL.g:15915:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalSignalDSL.g:15916:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
             {
-            // InternalSignalDSL.g:15517:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
-            // InternalSignalDSL.g:15518:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalSignalDSL.g:15916:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalSignalDSL.g:15917:2: ( rule__XTypeLiteral__TypeAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
             }
-            // InternalSignalDSL.g:15519:2: ( rule__XTypeLiteral__TypeAssignment_3 )
-            // InternalSignalDSL.g:15519:3: rule__XTypeLiteral__TypeAssignment_3
+            // InternalSignalDSL.g:15918:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalSignalDSL.g:15918:3: rule__XTypeLiteral__TypeAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__TypeAssignment_3();
@@ -51387,16 +52668,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4"
-    // InternalSignalDSL.g:15527:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
+    // InternalSignalDSL.g:15926:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
     public final void rule__XTypeLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15531:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
-            // InternalSignalDSL.g:15532:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            // InternalSignalDSL.g:15930:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalSignalDSL.g:15931:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
             {
-            pushFollow(FOLLOW_102);
+            pushFollow(FOLLOW_105);
             rule__XTypeLiteral__Group__4__Impl();
 
             state._fsp--;
@@ -51425,37 +52706,37 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4__Impl"
-    // InternalSignalDSL.g:15539:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    // InternalSignalDSL.g:15938:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
     public final void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15543:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
-            // InternalSignalDSL.g:15544:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalSignalDSL.g:15942:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalSignalDSL.g:15943:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
             {
-            // InternalSignalDSL.g:15544:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
-            // InternalSignalDSL.g:15545:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            // InternalSignalDSL.g:15943:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalSignalDSL.g:15944:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
             }
-            // InternalSignalDSL.g:15546:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
-            loop123:
+            // InternalSignalDSL.g:15945:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            loop126:
             do {
-                int alt123=2;
-                int LA123_0 = input.LA(1);
+                int alt126=2;
+                int LA126_0 = input.LA(1);
 
-                if ( (LA123_0==85) ) {
-                    alt123=1;
+                if ( (LA126_0==83) ) {
+                    alt126=1;
                 }
 
 
-                switch (alt123) {
+                switch (alt126) {
             	case 1 :
-            	    // InternalSignalDSL.g:15546:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    // InternalSignalDSL.g:15945:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
             	    {
-            	    pushFollow(FOLLOW_103);
+            	    pushFollow(FOLLOW_106);
             	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
 
             	    state._fsp--;
@@ -51465,7 +52746,7 @@
             	    break;
 
             	default :
-            	    break loop123;
+            	    break loop126;
                 }
             } while (true);
 
@@ -51494,14 +52775,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5"
-    // InternalSignalDSL.g:15554:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    // InternalSignalDSL.g:15953:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
     public final void rule__XTypeLiteral__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15558:1: ( rule__XTypeLiteral__Group__5__Impl )
-            // InternalSignalDSL.g:15559:2: rule__XTypeLiteral__Group__5__Impl
+            // InternalSignalDSL.g:15957:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalSignalDSL.g:15958:2: rule__XTypeLiteral__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__5__Impl();
@@ -51527,22 +52808,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5__Impl"
-    // InternalSignalDSL.g:15565:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:15964:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
     public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15569:1: ( ( ')' ) )
-            // InternalSignalDSL.g:15570:1: ( ')' )
+            // InternalSignalDSL.g:15968:1: ( ( ')' ) )
+            // InternalSignalDSL.g:15969:1: ( ')' )
             {
-            // InternalSignalDSL.g:15570:1: ( ')' )
-            // InternalSignalDSL.g:15571:2: ')'
+            // InternalSignalDSL.g:15969:1: ( ')' )
+            // InternalSignalDSL.g:15970:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
@@ -51568,16 +52849,16 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0"
-    // InternalSignalDSL.g:15581:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
+    // InternalSignalDSL.g:15980:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
     public final void rule__XThrowExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15585:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
-            // InternalSignalDSL.g:15586:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            // InternalSignalDSL.g:15984:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalSignalDSL.g:15985:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
             {
-            pushFollow(FOLLOW_104);
+            pushFollow(FOLLOW_107);
             rule__XThrowExpression__Group__0__Impl();
 
             state._fsp--;
@@ -51606,23 +52887,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0__Impl"
-    // InternalSignalDSL.g:15593:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15992:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
     public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15597:1: ( ( () ) )
-            // InternalSignalDSL.g:15598:1: ( () )
+            // InternalSignalDSL.g:15996:1: ( ( () ) )
+            // InternalSignalDSL.g:15997:1: ( () )
             {
-            // InternalSignalDSL.g:15598:1: ( () )
-            // InternalSignalDSL.g:15599:2: ()
+            // InternalSignalDSL.g:15997:1: ( () )
+            // InternalSignalDSL.g:15998:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:15600:2: ()
-            // InternalSignalDSL.g:15600:3: 
+            // InternalSignalDSL.g:15999:2: ()
+            // InternalSignalDSL.g:15999:3: 
             {
             }
 
@@ -51647,16 +52928,16 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1"
-    // InternalSignalDSL.g:15608:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
+    // InternalSignalDSL.g:16007:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
     public final void rule__XThrowExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15612:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
-            // InternalSignalDSL.g:15613:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            // InternalSignalDSL.g:16011:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalSignalDSL.g:16012:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XThrowExpression__Group__1__Impl();
 
             state._fsp--;
@@ -51685,22 +52966,22 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1__Impl"
-    // InternalSignalDSL.g:15620:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    // InternalSignalDSL.g:16019:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
     public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15624:1: ( ( 'throw' ) )
-            // InternalSignalDSL.g:15625:1: ( 'throw' )
+            // InternalSignalDSL.g:16023:1: ( ( 'throw' ) )
+            // InternalSignalDSL.g:16024:1: ( 'throw' )
             {
-            // InternalSignalDSL.g:15625:1: ( 'throw' )
-            // InternalSignalDSL.g:15626:2: 'throw'
+            // InternalSignalDSL.g:16024:1: ( 'throw' )
+            // InternalSignalDSL.g:16025:2: 'throw'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,97,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
@@ -51726,14 +53007,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2"
-    // InternalSignalDSL.g:15635:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    // InternalSignalDSL.g:16034:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
     public final void rule__XThrowExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15639:1: ( rule__XThrowExpression__Group__2__Impl )
-            // InternalSignalDSL.g:15640:2: rule__XThrowExpression__Group__2__Impl
+            // InternalSignalDSL.g:16038:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalSignalDSL.g:16039:2: rule__XThrowExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__2__Impl();
@@ -51759,23 +53040,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2__Impl"
-    // InternalSignalDSL.g:15646:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    // InternalSignalDSL.g:16045:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
     public final void rule__XThrowExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15650:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
-            // InternalSignalDSL.g:15651:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:16049:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalSignalDSL.g:16050:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
             {
-            // InternalSignalDSL.g:15651:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
-            // InternalSignalDSL.g:15652:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:16050:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:16051:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:15653:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
-            // InternalSignalDSL.g:15653:3: rule__XThrowExpression__ExpressionAssignment_2
+            // InternalSignalDSL.g:16052:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:16052:3: rule__XThrowExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__ExpressionAssignment_2();
@@ -51810,16 +53091,16 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0"
-    // InternalSignalDSL.g:15662:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
+    // InternalSignalDSL.g:16061:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
     public final void rule__XReturnExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15666:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
-            // InternalSignalDSL.g:15667:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            // InternalSignalDSL.g:16065:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalSignalDSL.g:16066:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
             {
-            pushFollow(FOLLOW_105);
+            pushFollow(FOLLOW_108);
             rule__XReturnExpression__Group__0__Impl();
 
             state._fsp--;
@@ -51848,23 +53129,23 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0__Impl"
-    // InternalSignalDSL.g:15674:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:16073:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
     public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15678:1: ( ( () ) )
-            // InternalSignalDSL.g:15679:1: ( () )
+            // InternalSignalDSL.g:16077:1: ( ( () ) )
+            // InternalSignalDSL.g:16078:1: ( () )
             {
-            // InternalSignalDSL.g:15679:1: ( () )
-            // InternalSignalDSL.g:15680:2: ()
+            // InternalSignalDSL.g:16078:1: ( () )
+            // InternalSignalDSL.g:16079:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:15681:2: ()
-            // InternalSignalDSL.g:15681:3: 
+            // InternalSignalDSL.g:16080:2: ()
+            // InternalSignalDSL.g:16080:3: 
             {
             }
 
@@ -51889,16 +53170,16 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1"
-    // InternalSignalDSL.g:15689:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
+    // InternalSignalDSL.g:16088:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
     public final void rule__XReturnExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15693:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
-            // InternalSignalDSL.g:15694:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            // InternalSignalDSL.g:16092:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalSignalDSL.g:16093:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XReturnExpression__Group__1__Impl();
 
             state._fsp--;
@@ -51927,22 +53208,22 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1__Impl"
-    // InternalSignalDSL.g:15701:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    // InternalSignalDSL.g:16100:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
     public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15705:1: ( ( 'return' ) )
-            // InternalSignalDSL.g:15706:1: ( 'return' )
+            // InternalSignalDSL.g:16104:1: ( ( 'return' ) )
+            // InternalSignalDSL.g:16105:1: ( 'return' )
             {
-            // InternalSignalDSL.g:15706:1: ( 'return' )
-            // InternalSignalDSL.g:15707:2: 'return'
+            // InternalSignalDSL.g:16105:1: ( 'return' )
+            // InternalSignalDSL.g:16106:2: 'return'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
             }
@@ -51968,14 +53249,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2"
-    // InternalSignalDSL.g:15716:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    // InternalSignalDSL.g:16115:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
     public final void rule__XReturnExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15720:1: ( rule__XReturnExpression__Group__2__Impl )
-            // InternalSignalDSL.g:15721:2: rule__XReturnExpression__Group__2__Impl
+            // InternalSignalDSL.g:16119:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalSignalDSL.g:16120:2: rule__XReturnExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__2__Impl();
@@ -52001,27 +53282,27 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2__Impl"
-    // InternalSignalDSL.g:15727:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    // InternalSignalDSL.g:16126:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
     public final void rule__XReturnExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15731:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
-            // InternalSignalDSL.g:15732:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalSignalDSL.g:16130:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalSignalDSL.g:16131:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
             {
-            // InternalSignalDSL.g:15732:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
-            // InternalSignalDSL.g:15733:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            // InternalSignalDSL.g:16131:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalSignalDSL.g:16132:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:15734:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
-            int alt124=2;
-            alt124 = dfa124.predict(input);
-            switch (alt124) {
+            // InternalSignalDSL.g:16133:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            int alt127=2;
+            alt127 = dfa127.predict(input);
+            switch (alt127) {
                 case 1 :
-                    // InternalSignalDSL.g:15734:3: rule__XReturnExpression__ExpressionAssignment_2
+                    // InternalSignalDSL.g:16133:3: rule__XReturnExpression__ExpressionAssignment_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XReturnExpression__ExpressionAssignment_2();
@@ -52059,16 +53340,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0"
-    // InternalSignalDSL.g:15743:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
+    // InternalSignalDSL.g:16142:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
     public final void rule__XTryCatchFinallyExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15747:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
-            // InternalSignalDSL.g:15748:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            // InternalSignalDSL.g:16146:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalSignalDSL.g:16147:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
             {
-            pushFollow(FOLLOW_106);
+            pushFollow(FOLLOW_109);
             rule__XTryCatchFinallyExpression__Group__0__Impl();
 
             state._fsp--;
@@ -52097,23 +53378,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0__Impl"
-    // InternalSignalDSL.g:15755:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:16154:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
     public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15759:1: ( ( () ) )
-            // InternalSignalDSL.g:15760:1: ( () )
+            // InternalSignalDSL.g:16158:1: ( ( () ) )
+            // InternalSignalDSL.g:16159:1: ( () )
             {
-            // InternalSignalDSL.g:15760:1: ( () )
-            // InternalSignalDSL.g:15761:2: ()
+            // InternalSignalDSL.g:16159:1: ( () )
+            // InternalSignalDSL.g:16160:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:15762:2: ()
-            // InternalSignalDSL.g:15762:3: 
+            // InternalSignalDSL.g:16161:2: ()
+            // InternalSignalDSL.g:16161:3: 
             {
             }
 
@@ -52138,16 +53419,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1"
-    // InternalSignalDSL.g:15770:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
+    // InternalSignalDSL.g:16169:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
     public final void rule__XTryCatchFinallyExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15774:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
-            // InternalSignalDSL.g:15775:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            // InternalSignalDSL.g:16173:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalSignalDSL.g:16174:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XTryCatchFinallyExpression__Group__1__Impl();
 
             state._fsp--;
@@ -52176,22 +53457,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1__Impl"
-    // InternalSignalDSL.g:15782:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    // InternalSignalDSL.g:16181:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
     public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15786:1: ( ( 'try' ) )
-            // InternalSignalDSL.g:15787:1: ( 'try' )
+            // InternalSignalDSL.g:16185:1: ( ( 'try' ) )
+            // InternalSignalDSL.g:16186:1: ( 'try' )
             {
-            // InternalSignalDSL.g:15787:1: ( 'try' )
-            // InternalSignalDSL.g:15788:2: 'try'
+            // InternalSignalDSL.g:16186:1: ( 'try' )
+            // InternalSignalDSL.g:16187:2: 'try'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
             }
@@ -52217,16 +53498,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2"
-    // InternalSignalDSL.g:15797:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
+    // InternalSignalDSL.g:16196:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
     public final void rule__XTryCatchFinallyExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15801:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
-            // InternalSignalDSL.g:15802:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            // InternalSignalDSL.g:16200:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalSignalDSL.g:16201:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
             {
-            pushFollow(FOLLOW_107);
+            pushFollow(FOLLOW_110);
             rule__XTryCatchFinallyExpression__Group__2__Impl();
 
             state._fsp--;
@@ -52255,23 +53536,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2__Impl"
-    // InternalSignalDSL.g:15809:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    // InternalSignalDSL.g:16208:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15813:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
-            // InternalSignalDSL.g:15814:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:16212:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalSignalDSL.g:16213:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
             {
-            // InternalSignalDSL.g:15814:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
-            // InternalSignalDSL.g:15815:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:16213:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:16214:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:15816:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
-            // InternalSignalDSL.g:15816:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
+            // InternalSignalDSL.g:16215:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:16215:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__ExpressionAssignment_2();
@@ -52306,14 +53587,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3"
-    // InternalSignalDSL.g:15824:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:16223:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15828:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
-            // InternalSignalDSL.g:15829:2: rule__XTryCatchFinallyExpression__Group__3__Impl
+            // InternalSignalDSL.g:16227:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalSignalDSL.g:16228:2: rule__XTryCatchFinallyExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__3__Impl();
@@ -52339,23 +53620,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3__Impl"
-    // InternalSignalDSL.g:15835:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    // InternalSignalDSL.g:16234:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15839:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
-            // InternalSignalDSL.g:15840:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalSignalDSL.g:16238:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalSignalDSL.g:16239:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
             {
-            // InternalSignalDSL.g:15840:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
-            // InternalSignalDSL.g:15841:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalSignalDSL.g:16239:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalSignalDSL.g:16240:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
             }
-            // InternalSignalDSL.g:15842:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
-            // InternalSignalDSL.g:15842:3: rule__XTryCatchFinallyExpression__Alternatives_3
+            // InternalSignalDSL.g:16241:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalSignalDSL.g:16241:3: rule__XTryCatchFinallyExpression__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Alternatives_3();
@@ -52390,16 +53671,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0"
-    // InternalSignalDSL.g:15851:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
+    // InternalSignalDSL.g:16250:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15855:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
-            // InternalSignalDSL.g:15856:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            // InternalSignalDSL.g:16254:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalSignalDSL.g:16255:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
             {
-            pushFollow(FOLLOW_108);
+            pushFollow(FOLLOW_111);
             rule__XTryCatchFinallyExpression__Group_3_0__0__Impl();
 
             state._fsp--;
@@ -52428,28 +53709,28 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0__Impl"
-    // InternalSignalDSL.g:15863:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
+    // InternalSignalDSL.g:16262:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15867:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
-            // InternalSignalDSL.g:15868:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalSignalDSL.g:16266:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalSignalDSL.g:16267:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
             {
-            // InternalSignalDSL.g:15868:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
-            // InternalSignalDSL.g:15869:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalSignalDSL.g:16267:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalSignalDSL.g:16268:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
             {
-            // InternalSignalDSL.g:15869:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
-            // InternalSignalDSL.g:15870:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalSignalDSL.g:16268:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalSignalDSL.g:16269:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalSignalDSL.g:15871:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-            // InternalSignalDSL.g:15871:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            // InternalSignalDSL.g:16270:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalSignalDSL.g:16270:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             {
-            pushFollow(FOLLOW_109);
+            pushFollow(FOLLOW_112);
             rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
 
             state._fsp--;
@@ -52463,34 +53744,34 @@
 
             }
 
-            // InternalSignalDSL.g:15874:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
-            // InternalSignalDSL.g:15875:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            // InternalSignalDSL.g:16273:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalSignalDSL.g:16274:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalSignalDSL.g:15876:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
-            loop125:
+            // InternalSignalDSL.g:16275:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            loop128:
             do {
-                int alt125=2;
-                int LA125_0 = input.LA(1);
+                int alt128=2;
+                int LA128_0 = input.LA(1);
 
-                if ( (LA125_0==104) ) {
-                    int LA125_2 = input.LA(2);
+                if ( (LA128_0==102) ) {
+                    int LA128_2 = input.LA(2);
 
-                    if ( (synpred177_InternalSignalDSL()) ) {
-                        alt125=1;
+                    if ( (synpred180_InternalSignalDSL()) ) {
+                        alt128=1;
                     }
 
 
                 }
 
 
-                switch (alt125) {
+                switch (alt128) {
             	case 1 :
-            	    // InternalSignalDSL.g:15876:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    // InternalSignalDSL.g:16275:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             	    {
-            	    pushFollow(FOLLOW_109);
+            	    pushFollow(FOLLOW_112);
             	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
 
             	    state._fsp--;
@@ -52500,7 +53781,7 @@
             	    break;
 
             	default :
-            	    break loop125;
+            	    break loop128;
                 }
             } while (true);
 
@@ -52532,14 +53813,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1"
-    // InternalSignalDSL.g:15885:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
+    // InternalSignalDSL.g:16284:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15889:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
-            // InternalSignalDSL.g:15890:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
+            // InternalSignalDSL.g:16288:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalSignalDSL.g:16289:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0__1__Impl();
@@ -52565,35 +53846,35 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1__Impl"
-    // InternalSignalDSL.g:15896:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
+    // InternalSignalDSL.g:16295:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15900:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
-            // InternalSignalDSL.g:15901:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalSignalDSL.g:16299:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalSignalDSL.g:16300:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
             {
-            // InternalSignalDSL.g:15901:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
-            // InternalSignalDSL.g:15902:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            // InternalSignalDSL.g:16300:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalSignalDSL.g:16301:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
             }
-            // InternalSignalDSL.g:15903:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
-            int alt126=2;
-            int LA126_0 = input.LA(1);
+            // InternalSignalDSL.g:16302:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            int alt129=2;
+            int LA129_0 = input.LA(1);
 
-            if ( (LA126_0==102) ) {
-                int LA126_1 = input.LA(2);
+            if ( (LA129_0==100) ) {
+                int LA129_1 = input.LA(2);
 
-                if ( (synpred178_InternalSignalDSL()) ) {
-                    alt126=1;
+                if ( (synpred181_InternalSignalDSL()) ) {
+                    alt129=1;
                 }
             }
-            switch (alt126) {
+            switch (alt129) {
                 case 1 :
-                    // InternalSignalDSL.g:15903:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+                    // InternalSignalDSL.g:16302:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0_1__0();
@@ -52631,16 +53912,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0"
-    // InternalSignalDSL.g:15912:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0 : rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 ;
+    // InternalSignalDSL.g:16311:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0 : rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15916:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
-            // InternalSignalDSL.g:15917:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            // InternalSignalDSL.g:16315:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalSignalDSL.g:16316:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl();
 
             state._fsp--;
@@ -52669,25 +53950,25 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl"
-    // InternalSignalDSL.g:15924:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
+    // InternalSignalDSL.g:16323:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15928:1: ( ( ( 'finally' ) ) )
-            // InternalSignalDSL.g:15929:1: ( ( 'finally' ) )
+            // InternalSignalDSL.g:16327:1: ( ( ( 'finally' ) ) )
+            // InternalSignalDSL.g:16328:1: ( ( 'finally' ) )
             {
-            // InternalSignalDSL.g:15929:1: ( ( 'finally' ) )
-            // InternalSignalDSL.g:15930:2: ( 'finally' )
+            // InternalSignalDSL.g:16328:1: ( ( 'finally' ) )
+            // InternalSignalDSL.g:16329:2: ( 'finally' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
             }
-            // InternalSignalDSL.g:15931:2: ( 'finally' )
-            // InternalSignalDSL.g:15931:3: 'finally'
+            // InternalSignalDSL.g:16330:2: ( 'finally' )
+            // InternalSignalDSL.g:16330:3: 'finally'
             {
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -52716,14 +53997,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1"
-    // InternalSignalDSL.g:15939:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
+    // InternalSignalDSL.g:16338:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15943:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
-            // InternalSignalDSL.g:15944:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
+            // InternalSignalDSL.g:16342:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalSignalDSL.g:16343:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl();
@@ -52749,23 +54030,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl"
-    // InternalSignalDSL.g:15950:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
+    // InternalSignalDSL.g:16349:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15954:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
-            // InternalSignalDSL.g:15955:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalSignalDSL.g:16353:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalSignalDSL.g:16354:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
             {
-            // InternalSignalDSL.g:15955:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
-            // InternalSignalDSL.g:15956:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalSignalDSL.g:16354:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalSignalDSL.g:16355:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
             }
-            // InternalSignalDSL.g:15957:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
-            // InternalSignalDSL.g:15957:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
+            // InternalSignalDSL.g:16356:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalSignalDSL.g:16356:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1();
@@ -52800,16 +54081,16 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0"
-    // InternalSignalDSL.g:15966:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
+    // InternalSignalDSL.g:16365:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15970:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
-            // InternalSignalDSL.g:15971:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            // InternalSignalDSL.g:16369:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalSignalDSL.g:16370:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XTryCatchFinallyExpression__Group_3_1__0__Impl();
 
             state._fsp--;
@@ -52838,22 +54119,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:15978:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
+    // InternalSignalDSL.g:16377:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15982:1: ( ( 'finally' ) )
-            // InternalSignalDSL.g:15983:1: ( 'finally' )
+            // InternalSignalDSL.g:16381:1: ( ( 'finally' ) )
+            // InternalSignalDSL.g:16382:1: ( 'finally' )
             {
-            // InternalSignalDSL.g:15983:1: ( 'finally' )
-            // InternalSignalDSL.g:15984:2: 'finally'
+            // InternalSignalDSL.g:16382:1: ( 'finally' )
+            // InternalSignalDSL.g:16383:2: 'finally'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
@@ -52879,14 +54160,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1"
-    // InternalSignalDSL.g:15993:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:16392:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15997:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:15998:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
+            // InternalSignalDSL.g:16396:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:16397:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_1__1__Impl();
@@ -52912,23 +54193,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:16004:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:16403:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16008:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:16009:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:16407:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:16408:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:16009:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:16010:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalSignalDSL.g:16408:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:16409:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:16011:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
-            // InternalSignalDSL.g:16011:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
+            // InternalSignalDSL.g:16410:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalSignalDSL.g:16410:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1();
@@ -52963,16 +54244,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0"
-    // InternalSignalDSL.g:16020:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
+    // InternalSignalDSL.g:16419:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
     public final void rule__XSynchronizedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16024:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
-            // InternalSignalDSL.g:16025:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            // InternalSignalDSL.g:16423:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalSignalDSL.g:16424:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XSynchronizedExpression__Group__0__Impl();
 
             state._fsp--;
@@ -53001,23 +54282,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0__Impl"
-    // InternalSignalDSL.g:16032:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:16431:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
     public final void rule__XSynchronizedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16036:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
-            // InternalSignalDSL.g:16037:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:16435:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalSignalDSL.g:16436:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:16037:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
-            // InternalSignalDSL.g:16038:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalSignalDSL.g:16436:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:16437:2: ( rule__XSynchronizedExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:16039:2: ( rule__XSynchronizedExpression__Group_0__0 )
-            // InternalSignalDSL.g:16039:3: rule__XSynchronizedExpression__Group_0__0
+            // InternalSignalDSL.g:16438:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalSignalDSL.g:16438:3: rule__XSynchronizedExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0();
@@ -53052,16 +54333,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1"
-    // InternalSignalDSL.g:16047:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
+    // InternalSignalDSL.g:16446:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
     public final void rule__XSynchronizedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16051:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
-            // InternalSignalDSL.g:16052:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            // InternalSignalDSL.g:16450:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalSignalDSL.g:16451:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XSynchronizedExpression__Group__1__Impl();
 
             state._fsp--;
@@ -53090,23 +54371,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1__Impl"
-    // InternalSignalDSL.g:16059:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    // InternalSignalDSL.g:16458:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
     public final void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16063:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
-            // InternalSignalDSL.g:16064:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalSignalDSL.g:16462:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalSignalDSL.g:16463:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
             {
-            // InternalSignalDSL.g:16064:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
-            // InternalSignalDSL.g:16065:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalSignalDSL.g:16463:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalSignalDSL.g:16464:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
             }
-            // InternalSignalDSL.g:16066:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
-            // InternalSignalDSL.g:16066:3: rule__XSynchronizedExpression__ParamAssignment_1
+            // InternalSignalDSL.g:16465:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalSignalDSL.g:16465:3: rule__XSynchronizedExpression__ParamAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ParamAssignment_1();
@@ -53141,16 +54422,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2"
-    // InternalSignalDSL.g:16074:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
+    // InternalSignalDSL.g:16473:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
     public final void rule__XSynchronizedExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16078:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
-            // InternalSignalDSL.g:16079:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            // InternalSignalDSL.g:16477:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalSignalDSL.g:16478:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XSynchronizedExpression__Group__2__Impl();
 
             state._fsp--;
@@ -53179,22 +54460,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2__Impl"
-    // InternalSignalDSL.g:16086:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:16485:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16090:1: ( ( ')' ) )
-            // InternalSignalDSL.g:16091:1: ( ')' )
+            // InternalSignalDSL.g:16489:1: ( ( ')' ) )
+            // InternalSignalDSL.g:16490:1: ( ')' )
             {
-            // InternalSignalDSL.g:16091:1: ( ')' )
-            // InternalSignalDSL.g:16092:2: ')'
+            // InternalSignalDSL.g:16490:1: ( ')' )
+            // InternalSignalDSL.g:16491:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -53220,14 +54501,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3"
-    // InternalSignalDSL.g:16101:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:16500:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
     public final void rule__XSynchronizedExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16105:1: ( rule__XSynchronizedExpression__Group__3__Impl )
-            // InternalSignalDSL.g:16106:2: rule__XSynchronizedExpression__Group__3__Impl
+            // InternalSignalDSL.g:16504:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalSignalDSL.g:16505:2: rule__XSynchronizedExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__3__Impl();
@@ -53253,23 +54534,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3__Impl"
-    // InternalSignalDSL.g:16112:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    // InternalSignalDSL.g:16511:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
     public final void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16116:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
-            // InternalSignalDSL.g:16117:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:16515:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalSignalDSL.g:16516:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
             {
-            // InternalSignalDSL.g:16117:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
-            // InternalSignalDSL.g:16118:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalSignalDSL.g:16516:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:16517:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
             }
-            // InternalSignalDSL.g:16119:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
-            // InternalSignalDSL.g:16119:3: rule__XSynchronizedExpression__ExpressionAssignment_3
+            // InternalSignalDSL.g:16518:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalSignalDSL.g:16518:3: rule__XSynchronizedExpression__ExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ExpressionAssignment_3();
@@ -53304,14 +54585,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0"
-    // InternalSignalDSL.g:16128:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
+    // InternalSignalDSL.g:16527:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
     public final void rule__XSynchronizedExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16132:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
-            // InternalSignalDSL.g:16133:2: rule__XSynchronizedExpression__Group_0__0__Impl
+            // InternalSignalDSL.g:16531:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalSignalDSL.g:16532:2: rule__XSynchronizedExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0__Impl();
@@ -53337,23 +54618,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0__Impl"
-    // InternalSignalDSL.g:16139:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:16538:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
     public final void rule__XSynchronizedExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16143:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:16144:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:16542:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:16543:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:16144:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
-            // InternalSignalDSL.g:16145:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:16543:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:16544:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:16146:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
-            // InternalSignalDSL.g:16146:3: rule__XSynchronizedExpression__Group_0_0__0
+            // InternalSignalDSL.g:16545:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:16545:3: rule__XSynchronizedExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__0();
@@ -53388,16 +54669,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0"
-    // InternalSignalDSL.g:16155:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
+    // InternalSignalDSL.g:16554:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
     public final void rule__XSynchronizedExpression__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16159:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
-            // InternalSignalDSL.g:16160:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            // InternalSignalDSL.g:16558:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalSignalDSL.g:16559:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
             {
-            pushFollow(FOLLOW_110);
+            pushFollow(FOLLOW_113);
             rule__XSynchronizedExpression__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -53426,23 +54707,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:16167:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:16566:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16171:1: ( ( () ) )
-            // InternalSignalDSL.g:16172:1: ( () )
+            // InternalSignalDSL.g:16570:1: ( ( () ) )
+            // InternalSignalDSL.g:16571:1: ( () )
             {
-            // InternalSignalDSL.g:16172:1: ( () )
-            // InternalSignalDSL.g:16173:2: ()
+            // InternalSignalDSL.g:16571:1: ( () )
+            // InternalSignalDSL.g:16572:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:16174:2: ()
-            // InternalSignalDSL.g:16174:3: 
+            // InternalSignalDSL.g:16573:2: ()
+            // InternalSignalDSL.g:16573:3: 
             {
             }
 
@@ -53467,16 +54748,16 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1"
-    // InternalSignalDSL.g:16182:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
+    // InternalSignalDSL.g:16581:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
     public final void rule__XSynchronizedExpression__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16186:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
-            // InternalSignalDSL.g:16187:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            // InternalSignalDSL.g:16585:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalSignalDSL.g:16586:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XSynchronizedExpression__Group_0_0__1__Impl();
 
             state._fsp--;
@@ -53505,22 +54786,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:16194:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
+    // InternalSignalDSL.g:16593:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16198:1: ( ( 'synchronized' ) )
-            // InternalSignalDSL.g:16199:1: ( 'synchronized' )
+            // InternalSignalDSL.g:16597:1: ( ( 'synchronized' ) )
+            // InternalSignalDSL.g:16598:1: ( 'synchronized' )
             {
-            // InternalSignalDSL.g:16199:1: ( 'synchronized' )
-            // InternalSignalDSL.g:16200:2: 'synchronized'
+            // InternalSignalDSL.g:16598:1: ( 'synchronized' )
+            // InternalSignalDSL.g:16599:2: 'synchronized'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
             }
-            match(input,103,FOLLOW_2); if (state.failed) return ;
+            match(input,101,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
             }
@@ -53546,14 +54827,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2"
-    // InternalSignalDSL.g:16209:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
+    // InternalSignalDSL.g:16608:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
     public final void rule__XSynchronizedExpression__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16213:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
-            // InternalSignalDSL.g:16214:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
+            // InternalSignalDSL.g:16612:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalSignalDSL.g:16613:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__2__Impl();
@@ -53579,22 +54860,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2__Impl"
-    // InternalSignalDSL.g:16220:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:16619:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16224:1: ( ( '(' ) )
-            // InternalSignalDSL.g:16225:1: ( '(' )
+            // InternalSignalDSL.g:16623:1: ( ( '(' ) )
+            // InternalSignalDSL.g:16624:1: ( '(' )
             {
-            // InternalSignalDSL.g:16225:1: ( '(' )
-            // InternalSignalDSL.g:16226:2: '('
+            // InternalSignalDSL.g:16624:1: ( '(' )
+            // InternalSignalDSL.g:16625:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -53620,16 +54901,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0"
-    // InternalSignalDSL.g:16236:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
+    // InternalSignalDSL.g:16635:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
     public final void rule__XCatchClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16240:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
-            // InternalSignalDSL.g:16241:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            // InternalSignalDSL.g:16639:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalSignalDSL.g:16640:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
             {
-            pushFollow(FOLLOW_31);
+            pushFollow(FOLLOW_34);
             rule__XCatchClause__Group__0__Impl();
 
             state._fsp--;
@@ -53658,25 +54939,25 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0__Impl"
-    // InternalSignalDSL.g:16248:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    // InternalSignalDSL.g:16647:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
     public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16252:1: ( ( ( 'catch' ) ) )
-            // InternalSignalDSL.g:16253:1: ( ( 'catch' ) )
+            // InternalSignalDSL.g:16651:1: ( ( ( 'catch' ) ) )
+            // InternalSignalDSL.g:16652:1: ( ( 'catch' ) )
             {
-            // InternalSignalDSL.g:16253:1: ( ( 'catch' ) )
-            // InternalSignalDSL.g:16254:2: ( 'catch' )
+            // InternalSignalDSL.g:16652:1: ( ( 'catch' ) )
+            // InternalSignalDSL.g:16653:2: ( 'catch' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
             }
-            // InternalSignalDSL.g:16255:2: ( 'catch' )
-            // InternalSignalDSL.g:16255:3: 'catch'
+            // InternalSignalDSL.g:16654:2: ( 'catch' )
+            // InternalSignalDSL.g:16654:3: 'catch'
             {
-            match(input,104,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -53705,16 +54986,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1"
-    // InternalSignalDSL.g:16263:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
+    // InternalSignalDSL.g:16662:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
     public final void rule__XCatchClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16267:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
-            // InternalSignalDSL.g:16268:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            // InternalSignalDSL.g:16666:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalSignalDSL.g:16667:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XCatchClause__Group__1__Impl();
 
             state._fsp--;
@@ -53743,22 +55024,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1__Impl"
-    // InternalSignalDSL.g:16275:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:16674:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
     public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16279:1: ( ( '(' ) )
-            // InternalSignalDSL.g:16280:1: ( '(' )
+            // InternalSignalDSL.g:16678:1: ( ( '(' ) )
+            // InternalSignalDSL.g:16679:1: ( '(' )
             {
-            // InternalSignalDSL.g:16280:1: ( '(' )
-            // InternalSignalDSL.g:16281:2: '('
+            // InternalSignalDSL.g:16679:1: ( '(' )
+            // InternalSignalDSL.g:16680:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
             }
@@ -53784,16 +55065,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2"
-    // InternalSignalDSL.g:16290:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
+    // InternalSignalDSL.g:16689:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
     public final void rule__XCatchClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16294:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
-            // InternalSignalDSL.g:16295:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            // InternalSignalDSL.g:16693:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalSignalDSL.g:16694:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
             {
-            pushFollow(FOLLOW_80);
+            pushFollow(FOLLOW_83);
             rule__XCatchClause__Group__2__Impl();
 
             state._fsp--;
@@ -53822,23 +55103,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2__Impl"
-    // InternalSignalDSL.g:16302:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    // InternalSignalDSL.g:16701:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
     public final void rule__XCatchClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16306:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
-            // InternalSignalDSL.g:16307:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalSignalDSL.g:16705:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalSignalDSL.g:16706:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
             {
-            // InternalSignalDSL.g:16307:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
-            // InternalSignalDSL.g:16308:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalSignalDSL.g:16706:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalSignalDSL.g:16707:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
             }
-            // InternalSignalDSL.g:16309:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
-            // InternalSignalDSL.g:16309:3: rule__XCatchClause__DeclaredParamAssignment_2
+            // InternalSignalDSL.g:16708:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalSignalDSL.g:16708:3: rule__XCatchClause__DeclaredParamAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__DeclaredParamAssignment_2();
@@ -53873,16 +55154,16 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3"
-    // InternalSignalDSL.g:16317:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
+    // InternalSignalDSL.g:16716:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
     public final void rule__XCatchClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16321:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
-            // InternalSignalDSL.g:16322:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            // InternalSignalDSL.g:16720:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalSignalDSL.g:16721:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
             {
-            pushFollow(FOLLOW_35);
+            pushFollow(FOLLOW_38);
             rule__XCatchClause__Group__3__Impl();
 
             state._fsp--;
@@ -53911,22 +55192,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3__Impl"
-    // InternalSignalDSL.g:16329:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:16728:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
     public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16333:1: ( ( ')' ) )
-            // InternalSignalDSL.g:16334:1: ( ')' )
+            // InternalSignalDSL.g:16732:1: ( ( ')' ) )
+            // InternalSignalDSL.g:16733:1: ( ')' )
             {
-            // InternalSignalDSL.g:16334:1: ( ')' )
-            // InternalSignalDSL.g:16335:2: ')'
+            // InternalSignalDSL.g:16733:1: ( ')' )
+            // InternalSignalDSL.g:16734:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
@@ -53952,14 +55233,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4"
-    // InternalSignalDSL.g:16344:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    // InternalSignalDSL.g:16743:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
     public final void rule__XCatchClause__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16348:1: ( rule__XCatchClause__Group__4__Impl )
-            // InternalSignalDSL.g:16349:2: rule__XCatchClause__Group__4__Impl
+            // InternalSignalDSL.g:16747:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalSignalDSL.g:16748:2: rule__XCatchClause__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__4__Impl();
@@ -53985,23 +55266,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4__Impl"
-    // InternalSignalDSL.g:16355:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    // InternalSignalDSL.g:16754:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
     public final void rule__XCatchClause__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16359:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
-            // InternalSignalDSL.g:16360:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalSignalDSL.g:16758:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalSignalDSL.g:16759:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
             {
-            // InternalSignalDSL.g:16360:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
-            // InternalSignalDSL.g:16361:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalSignalDSL.g:16759:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalSignalDSL.g:16760:2: ( rule__XCatchClause__ExpressionAssignment_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
             }
-            // InternalSignalDSL.g:16362:2: ( rule__XCatchClause__ExpressionAssignment_4 )
-            // InternalSignalDSL.g:16362:3: rule__XCatchClause__ExpressionAssignment_4
+            // InternalSignalDSL.g:16761:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalSignalDSL.g:16761:3: rule__XCatchClause__ExpressionAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__ExpressionAssignment_4();
@@ -54036,16 +55317,16 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0"
-    // InternalSignalDSL.g:16371:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
+    // InternalSignalDSL.g:16770:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
     public final void rule__QualifiedName__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16375:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
-            // InternalSignalDSL.g:16376:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            // InternalSignalDSL.g:16774:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalSignalDSL.g:16775:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
             {
-            pushFollow(FOLLOW_111);
+            pushFollow(FOLLOW_114);
             rule__QualifiedName__Group__0__Impl();
 
             state._fsp--;
@@ -54074,17 +55355,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0__Impl"
-    // InternalSignalDSL.g:16383:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    // InternalSignalDSL.g:16782:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16387:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:16388:1: ( ruleValidID )
+            // InternalSignalDSL.g:16786:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:16787:1: ( ruleValidID )
             {
-            // InternalSignalDSL.g:16388:1: ( ruleValidID )
-            // InternalSignalDSL.g:16389:2: ruleValidID
+            // InternalSignalDSL.g:16787:1: ( ruleValidID )
+            // InternalSignalDSL.g:16788:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
@@ -54119,14 +55400,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1"
-    // InternalSignalDSL.g:16398:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    // InternalSignalDSL.g:16797:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
     public final void rule__QualifiedName__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16402:1: ( rule__QualifiedName__Group__1__Impl )
-            // InternalSignalDSL.g:16403:2: rule__QualifiedName__Group__1__Impl
+            // InternalSignalDSL.g:16801:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalSignalDSL.g:16802:2: rule__QualifiedName__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__1__Impl();
@@ -54152,35 +55433,35 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1__Impl"
-    // InternalSignalDSL.g:16409:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:16808:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
     public final void rule__QualifiedName__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16413:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
-            // InternalSignalDSL.g:16414:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalSignalDSL.g:16812:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalSignalDSL.g:16813:1: ( ( rule__QualifiedName__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:16414:1: ( ( rule__QualifiedName__Group_1__0 )* )
-            // InternalSignalDSL.g:16415:2: ( rule__QualifiedName__Group_1__0 )*
+            // InternalSignalDSL.g:16813:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalSignalDSL.g:16814:2: ( rule__QualifiedName__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:16416:2: ( rule__QualifiedName__Group_1__0 )*
-            loop127:
+            // InternalSignalDSL.g:16815:2: ( rule__QualifiedName__Group_1__0 )*
+            loop130:
             do {
-                int alt127=2;
-                int LA127_0 = input.LA(1);
+                int alt130=2;
+                int LA130_0 = input.LA(1);
 
-                if ( (LA127_0==43) ) {
-                    int LA127_2 = input.LA(2);
+                if ( (LA130_0==43) ) {
+                    int LA130_2 = input.LA(2);
 
-                    if ( (LA127_2==RULE_ID) ) {
-                        int LA127_3 = input.LA(3);
+                    if ( (LA130_2==RULE_ID) ) {
+                        int LA130_3 = input.LA(3);
 
-                        if ( (synpred179_InternalSignalDSL()) ) {
-                            alt127=1;
+                        if ( (synpred182_InternalSignalDSL()) ) {
+                            alt130=1;
                         }
 
 
@@ -54190,11 +55471,11 @@
                 }
 
 
-                switch (alt127) {
+                switch (alt130) {
             	case 1 :
-            	    // InternalSignalDSL.g:16416:3: rule__QualifiedName__Group_1__0
+            	    // InternalSignalDSL.g:16815:3: rule__QualifiedName__Group_1__0
             	    {
-            	    pushFollow(FOLLOW_112);
+            	    pushFollow(FOLLOW_115);
             	    rule__QualifiedName__Group_1__0();
 
             	    state._fsp--;
@@ -54204,7 +55485,7 @@
             	    break;
 
             	default :
-            	    break loop127;
+            	    break loop130;
                 }
             } while (true);
 
@@ -54233,14 +55514,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0"
-    // InternalSignalDSL.g:16425:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
+    // InternalSignalDSL.g:16824:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
     public final void rule__QualifiedName__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16429:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
-            // InternalSignalDSL.g:16430:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
+            // InternalSignalDSL.g:16828:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalSignalDSL.g:16829:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
             {
             pushFollow(FOLLOW_6);
             rule__QualifiedName__Group_1__0__Impl();
@@ -54271,23 +55552,23 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0__Impl"
-    // InternalSignalDSL.g:16437:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    // InternalSignalDSL.g:16836:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
     public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16441:1: ( ( ( '.' ) ) )
-            // InternalSignalDSL.g:16442:1: ( ( '.' ) )
+            // InternalSignalDSL.g:16840:1: ( ( ( '.' ) ) )
+            // InternalSignalDSL.g:16841:1: ( ( '.' ) )
             {
-            // InternalSignalDSL.g:16442:1: ( ( '.' ) )
-            // InternalSignalDSL.g:16443:2: ( '.' )
+            // InternalSignalDSL.g:16841:1: ( ( '.' ) )
+            // InternalSignalDSL.g:16842:2: ( '.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
             }
-            // InternalSignalDSL.g:16444:2: ( '.' )
-            // InternalSignalDSL.g:16444:3: '.'
+            // InternalSignalDSL.g:16843:2: ( '.' )
+            // InternalSignalDSL.g:16843:3: '.'
             {
             match(input,43,FOLLOW_2); if (state.failed) return ;
 
@@ -54318,14 +55599,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1"
-    // InternalSignalDSL.g:16452:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
+    // InternalSignalDSL.g:16851:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
     public final void rule__QualifiedName__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16456:1: ( rule__QualifiedName__Group_1__1__Impl )
-            // InternalSignalDSL.g:16457:2: rule__QualifiedName__Group_1__1__Impl
+            // InternalSignalDSL.g:16855:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalSignalDSL.g:16856:2: rule__QualifiedName__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group_1__1__Impl();
@@ -54351,17 +55632,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1__Impl"
-    // InternalSignalDSL.g:16463:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    // InternalSignalDSL.g:16862:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16467:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:16468:1: ( ruleValidID )
+            // InternalSignalDSL.g:16866:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:16867:1: ( ruleValidID )
             {
-            // InternalSignalDSL.g:16468:1: ( ruleValidID )
-            // InternalSignalDSL.g:16469:2: ruleValidID
+            // InternalSignalDSL.g:16867:1: ( ruleValidID )
+            // InternalSignalDSL.g:16868:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
@@ -54396,16 +55677,16 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0"
-    // InternalSignalDSL.g:16479:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
+    // InternalSignalDSL.g:16878:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
     public final void rule__Number__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16483:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
-            // InternalSignalDSL.g:16484:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            // InternalSignalDSL.g:16882:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalSignalDSL.g:16883:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
             {
-            pushFollow(FOLLOW_111);
+            pushFollow(FOLLOW_114);
             rule__Number__Group_1__0__Impl();
 
             state._fsp--;
@@ -54434,23 +55715,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0__Impl"
-    // InternalSignalDSL.g:16491:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
+    // InternalSignalDSL.g:16890:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
     public final void rule__Number__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16495:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
-            // InternalSignalDSL.g:16496:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalSignalDSL.g:16894:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalSignalDSL.g:16895:1: ( ( rule__Number__Alternatives_1_0 ) )
             {
-            // InternalSignalDSL.g:16496:1: ( ( rule__Number__Alternatives_1_0 ) )
-            // InternalSignalDSL.g:16497:2: ( rule__Number__Alternatives_1_0 )
+            // InternalSignalDSL.g:16895:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalSignalDSL.g:16896:2: ( rule__Number__Alternatives_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
             }
-            // InternalSignalDSL.g:16498:2: ( rule__Number__Alternatives_1_0 )
-            // InternalSignalDSL.g:16498:3: rule__Number__Alternatives_1_0
+            // InternalSignalDSL.g:16897:2: ( rule__Number__Alternatives_1_0 )
+            // InternalSignalDSL.g:16897:3: rule__Number__Alternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_0();
@@ -54485,14 +55766,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1"
-    // InternalSignalDSL.g:16506:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
+    // InternalSignalDSL.g:16905:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
     public final void rule__Number__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16510:1: ( rule__Number__Group_1__1__Impl )
-            // InternalSignalDSL.g:16511:2: rule__Number__Group_1__1__Impl
+            // InternalSignalDSL.g:16909:1: ( rule__Number__Group_1__1__Impl )
+            // InternalSignalDSL.g:16910:2: rule__Number__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1__1__Impl();
@@ -54518,35 +55799,35 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1__Impl"
-    // InternalSignalDSL.g:16517:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
+    // InternalSignalDSL.g:16916:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
     public final void rule__Number__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16521:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
-            // InternalSignalDSL.g:16522:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalSignalDSL.g:16920:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalSignalDSL.g:16921:1: ( ( rule__Number__Group_1_1__0 )? )
             {
-            // InternalSignalDSL.g:16522:1: ( ( rule__Number__Group_1_1__0 )? )
-            // InternalSignalDSL.g:16523:2: ( rule__Number__Group_1_1__0 )?
+            // InternalSignalDSL.g:16921:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalSignalDSL.g:16922:2: ( rule__Number__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getGroup_1_1()); 
             }
-            // InternalSignalDSL.g:16524:2: ( rule__Number__Group_1_1__0 )?
-            int alt128=2;
-            int LA128_0 = input.LA(1);
+            // InternalSignalDSL.g:16923:2: ( rule__Number__Group_1_1__0 )?
+            int alt131=2;
+            int LA131_0 = input.LA(1);
 
-            if ( (LA128_0==43) ) {
-                int LA128_1 = input.LA(2);
+            if ( (LA131_0==43) ) {
+                int LA131_1 = input.LA(2);
 
-                if ( ((LA128_1>=RULE_INT && LA128_1<=RULE_DECIMAL)) ) {
-                    alt128=1;
+                if ( ((LA131_1>=RULE_INT && LA131_1<=RULE_DECIMAL)) ) {
+                    alt131=1;
                 }
             }
-            switch (alt128) {
+            switch (alt131) {
                 case 1 :
-                    // InternalSignalDSL.g:16524:3: rule__Number__Group_1_1__0
+                    // InternalSignalDSL.g:16923:3: rule__Number__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1_1__0();
@@ -54584,16 +55865,16 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0"
-    // InternalSignalDSL.g:16533:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
+    // InternalSignalDSL.g:16932:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
     public final void rule__Number__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16537:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
-            // InternalSignalDSL.g:16538:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            // InternalSignalDSL.g:16936:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalSignalDSL.g:16937:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
             {
-            pushFollow(FOLLOW_113);
+            pushFollow(FOLLOW_116);
             rule__Number__Group_1_1__0__Impl();
 
             state._fsp--;
@@ -54622,17 +55903,17 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:16545:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:16944:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
     public final void rule__Number__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16549:1: ( ( '.' ) )
-            // InternalSignalDSL.g:16550:1: ( '.' )
+            // InternalSignalDSL.g:16948:1: ( ( '.' ) )
+            // InternalSignalDSL.g:16949:1: ( '.' )
             {
-            // InternalSignalDSL.g:16550:1: ( '.' )
-            // InternalSignalDSL.g:16551:2: '.'
+            // InternalSignalDSL.g:16949:1: ( '.' )
+            // InternalSignalDSL.g:16950:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
@@ -54663,14 +55944,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1"
-    // InternalSignalDSL.g:16560:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:16959:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
     public final void rule__Number__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16564:1: ( rule__Number__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:16565:2: rule__Number__Group_1_1__1__Impl
+            // InternalSignalDSL.g:16963:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:16964:2: rule__Number__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1_1__1__Impl();
@@ -54696,23 +55977,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:16571:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
+    // InternalSignalDSL.g:16970:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
     public final void rule__Number__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16575:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
-            // InternalSignalDSL.g:16576:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalSignalDSL.g:16974:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalSignalDSL.g:16975:1: ( ( rule__Number__Alternatives_1_1_1 ) )
             {
-            // InternalSignalDSL.g:16576:1: ( ( rule__Number__Alternatives_1_1_1 ) )
-            // InternalSignalDSL.g:16577:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalSignalDSL.g:16975:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalSignalDSL.g:16976:2: ( rule__Number__Alternatives_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
             }
-            // InternalSignalDSL.g:16578:2: ( rule__Number__Alternatives_1_1_1 )
-            // InternalSignalDSL.g:16578:3: rule__Number__Alternatives_1_1_1
+            // InternalSignalDSL.g:16977:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalSignalDSL.g:16977:3: rule__Number__Alternatives_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_1_1();
@@ -54747,16 +56028,16 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0"
-    // InternalSignalDSL.g:16587:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
+    // InternalSignalDSL.g:16986:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
     public final void rule__JvmTypeReference__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16591:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
-            // InternalSignalDSL.g:16592:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            // InternalSignalDSL.g:16990:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalSignalDSL.g:16991:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_42);
             rule__JvmTypeReference__Group_0__0__Impl();
 
             state._fsp--;
@@ -54785,17 +56066,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0__Impl"
-    // InternalSignalDSL.g:16599:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    // InternalSignalDSL.g:16998:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
     public final void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16603:1: ( ( ruleJvmParameterizedTypeReference ) )
-            // InternalSignalDSL.g:16604:1: ( ruleJvmParameterizedTypeReference )
+            // InternalSignalDSL.g:17002:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalSignalDSL.g:17003:1: ( ruleJvmParameterizedTypeReference )
             {
-            // InternalSignalDSL.g:16604:1: ( ruleJvmParameterizedTypeReference )
-            // InternalSignalDSL.g:16605:2: ruleJvmParameterizedTypeReference
+            // InternalSignalDSL.g:17003:1: ( ruleJvmParameterizedTypeReference )
+            // InternalSignalDSL.g:17004:2: ruleJvmParameterizedTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
@@ -54830,14 +56111,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1"
-    // InternalSignalDSL.g:16614:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
+    // InternalSignalDSL.g:17013:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
     public final void rule__JvmTypeReference__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16618:1: ( rule__JvmTypeReference__Group_0__1__Impl )
-            // InternalSignalDSL.g:16619:2: rule__JvmTypeReference__Group_0__1__Impl
+            // InternalSignalDSL.g:17017:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalSignalDSL.g:17018:2: rule__JvmTypeReference__Group_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0__1__Impl();
@@ -54863,35 +56144,35 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1__Impl"
-    // InternalSignalDSL.g:16625:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
+    // InternalSignalDSL.g:17024:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
     public final void rule__JvmTypeReference__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16629:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
-            // InternalSignalDSL.g:16630:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalSignalDSL.g:17028:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalSignalDSL.g:17029:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
             {
-            // InternalSignalDSL.g:16630:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
-            // InternalSignalDSL.g:16631:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            // InternalSignalDSL.g:17029:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalSignalDSL.g:17030:2: ( rule__JvmTypeReference__Group_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:16632:2: ( rule__JvmTypeReference__Group_0_1__0 )*
-            loop129:
+            // InternalSignalDSL.g:17031:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            loop132:
             do {
-                int alt129=2;
-                int LA129_0 = input.LA(1);
+                int alt132=2;
+                int LA132_0 = input.LA(1);
 
-                if ( (LA129_0==85) ) {
-                    int LA129_2 = input.LA(2);
+                if ( (LA132_0==83) ) {
+                    int LA132_2 = input.LA(2);
 
-                    if ( (LA129_2==83) ) {
-                        int LA129_3 = input.LA(3);
+                    if ( (LA132_2==81) ) {
+                        int LA132_3 = input.LA(3);
 
-                        if ( (synpred181_InternalSignalDSL()) ) {
-                            alt129=1;
+                        if ( (synpred184_InternalSignalDSL()) ) {
+                            alt132=1;
                         }
 
 
@@ -54901,11 +56182,11 @@
                 }
 
 
-                switch (alt129) {
+                switch (alt132) {
             	case 1 :
-            	    // InternalSignalDSL.g:16632:3: rule__JvmTypeReference__Group_0_1__0
+            	    // InternalSignalDSL.g:17031:3: rule__JvmTypeReference__Group_0_1__0
             	    {
-            	    pushFollow(FOLLOW_103);
+            	    pushFollow(FOLLOW_106);
             	    rule__JvmTypeReference__Group_0_1__0();
 
             	    state._fsp--;
@@ -54915,7 +56196,7 @@
             	    break;
 
             	default :
-            	    break loop129;
+            	    break loop132;
                 }
             } while (true);
 
@@ -54944,14 +56225,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0"
-    // InternalSignalDSL.g:16641:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
+    // InternalSignalDSL.g:17040:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
     public final void rule__JvmTypeReference__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16645:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
-            // InternalSignalDSL.g:16646:2: rule__JvmTypeReference__Group_0_1__0__Impl
+            // InternalSignalDSL.g:17044:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalSignalDSL.g:17045:2: rule__JvmTypeReference__Group_0_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1__0__Impl();
@@ -54977,23 +56258,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:16652:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
+    // InternalSignalDSL.g:17051:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
     public final void rule__JvmTypeReference__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16656:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
-            // InternalSignalDSL.g:16657:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalSignalDSL.g:17055:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalSignalDSL.g:17056:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
             {
-            // InternalSignalDSL.g:16657:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
-            // InternalSignalDSL.g:16658:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalSignalDSL.g:17056:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalSignalDSL.g:17057:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
             }
-            // InternalSignalDSL.g:16659:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
-            // InternalSignalDSL.g:16659:3: rule__JvmTypeReference__Group_0_1_0__0
+            // InternalSignalDSL.g:17058:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalSignalDSL.g:17058:3: rule__JvmTypeReference__Group_0_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__0();
@@ -55028,16 +56309,16 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0"
-    // InternalSignalDSL.g:16668:1: rule__JvmTypeReference__Group_0_1_0__0 : rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 ;
+    // InternalSignalDSL.g:17067:1: rule__JvmTypeReference__Group_0_1_0__0 : rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 ;
     public final void rule__JvmTypeReference__Group_0_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16672:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
-            // InternalSignalDSL.g:16673:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            // InternalSignalDSL.g:17071:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalSignalDSL.g:17072:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
             {
-            pushFollow(FOLLOW_39);
+            pushFollow(FOLLOW_42);
             rule__JvmTypeReference__Group_0_1_0__0__Impl();
 
             state._fsp--;
@@ -55066,23 +56347,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0__Impl"
-    // InternalSignalDSL.g:16680:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:17079:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
     public final void rule__JvmTypeReference__Group_0_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16684:1: ( ( () ) )
-            // InternalSignalDSL.g:16685:1: ( () )
+            // InternalSignalDSL.g:17083:1: ( ( () ) )
+            // InternalSignalDSL.g:17084:1: ( () )
             {
-            // InternalSignalDSL.g:16685:1: ( () )
-            // InternalSignalDSL.g:16686:2: ()
+            // InternalSignalDSL.g:17084:1: ( () )
+            // InternalSignalDSL.g:17085:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
             }
-            // InternalSignalDSL.g:16687:2: ()
-            // InternalSignalDSL.g:16687:3: 
+            // InternalSignalDSL.g:17086:2: ()
+            // InternalSignalDSL.g:17086:3: 
             {
             }
 
@@ -55107,14 +56388,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1"
-    // InternalSignalDSL.g:16695:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
+    // InternalSignalDSL.g:17094:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
     public final void rule__JvmTypeReference__Group_0_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16699:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
-            // InternalSignalDSL.g:16700:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
+            // InternalSignalDSL.g:17098:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalSignalDSL.g:17099:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__1__Impl();
@@ -55140,17 +56421,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1__Impl"
-    // InternalSignalDSL.g:16706:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
+    // InternalSignalDSL.g:17105:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
     public final void rule__JvmTypeReference__Group_0_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16710:1: ( ( ruleArrayBrackets ) )
-            // InternalSignalDSL.g:16711:1: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:17109:1: ( ( ruleArrayBrackets ) )
+            // InternalSignalDSL.g:17110:1: ( ruleArrayBrackets )
             {
-            // InternalSignalDSL.g:16711:1: ( ruleArrayBrackets )
-            // InternalSignalDSL.g:16712:2: ruleArrayBrackets
+            // InternalSignalDSL.g:17110:1: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:17111:2: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
@@ -55185,16 +56466,16 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0"
-    // InternalSignalDSL.g:16722:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
+    // InternalSignalDSL.g:17121:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
     public final void rule__ArrayBrackets__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16726:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
-            // InternalSignalDSL.g:16727:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            // InternalSignalDSL.g:17125:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalSignalDSL.g:17126:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
             {
-            pushFollow(FOLLOW_77);
+            pushFollow(FOLLOW_80);
             rule__ArrayBrackets__Group__0__Impl();
 
             state._fsp--;
@@ -55223,22 +56504,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0__Impl"
-    // InternalSignalDSL.g:16734:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:17133:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
     public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16738:1: ( ( '[' ) )
-            // InternalSignalDSL.g:16739:1: ( '[' )
+            // InternalSignalDSL.g:17137:1: ( ( '[' ) )
+            // InternalSignalDSL.g:17138:1: ( '[' )
             {
-            // InternalSignalDSL.g:16739:1: ( '[' )
-            // InternalSignalDSL.g:16740:2: '['
+            // InternalSignalDSL.g:17138:1: ( '[' )
+            // InternalSignalDSL.g:17139:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
@@ -55264,14 +56545,14 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1"
-    // InternalSignalDSL.g:16749:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    // InternalSignalDSL.g:17148:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
     public final void rule__ArrayBrackets__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16753:1: ( rule__ArrayBrackets__Group__1__Impl )
-            // InternalSignalDSL.g:16754:2: rule__ArrayBrackets__Group__1__Impl
+            // InternalSignalDSL.g:17152:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalSignalDSL.g:17153:2: rule__ArrayBrackets__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__1__Impl();
@@ -55297,22 +56578,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1__Impl"
-    // InternalSignalDSL.g:16760:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:17159:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
     public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16764:1: ( ( ']' ) )
-            // InternalSignalDSL.g:16765:1: ( ']' )
+            // InternalSignalDSL.g:17163:1: ( ( ']' ) )
+            // InternalSignalDSL.g:17164:1: ( ']' )
             {
-            // InternalSignalDSL.g:16765:1: ( ']' )
-            // InternalSignalDSL.g:16766:2: ']'
+            // InternalSignalDSL.g:17164:1: ( ']' )
+            // InternalSignalDSL.g:17165:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
             }
-            match(input,83,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
             }
@@ -55338,16 +56619,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0"
-    // InternalSignalDSL.g:16776:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
+    // InternalSignalDSL.g:17175:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
     public final void rule__XFunctionTypeRef__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16780:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
-            // InternalSignalDSL.g:16781:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            // InternalSignalDSL.g:17179:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalSignalDSL.g:17180:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XFunctionTypeRef__Group__0__Impl();
 
             state._fsp--;
@@ -55376,31 +56657,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0__Impl"
-    // InternalSignalDSL.g:16788:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
+    // InternalSignalDSL.g:17187:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
     public final void rule__XFunctionTypeRef__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16792:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
-            // InternalSignalDSL.g:16793:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalSignalDSL.g:17191:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalSignalDSL.g:17192:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
             {
-            // InternalSignalDSL.g:16793:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
-            // InternalSignalDSL.g:16794:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            // InternalSignalDSL.g:17192:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalSignalDSL.g:17193:2: ( rule__XFunctionTypeRef__Group_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:16795:2: ( rule__XFunctionTypeRef__Group_0__0 )?
-            int alt130=2;
-            int LA130_0 = input.LA(1);
+            // InternalSignalDSL.g:17194:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            int alt133=2;
+            int LA133_0 = input.LA(1);
 
-            if ( (LA130_0==80) ) {
-                alt130=1;
+            if ( (LA133_0==78) ) {
+                alt133=1;
             }
-            switch (alt130) {
+            switch (alt133) {
                 case 1 :
-                    // InternalSignalDSL.g:16795:3: rule__XFunctionTypeRef__Group_0__0
+                    // InternalSignalDSL.g:17194:3: rule__XFunctionTypeRef__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0__0();
@@ -55438,16 +56719,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1"
-    // InternalSignalDSL.g:16803:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
+    // InternalSignalDSL.g:17202:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
     public final void rule__XFunctionTypeRef__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16807:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
-            // InternalSignalDSL.g:16808:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            // InternalSignalDSL.g:17206:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalSignalDSL.g:17207:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XFunctionTypeRef__Group__1__Impl();
 
             state._fsp--;
@@ -55476,17 +56757,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1__Impl"
-    // InternalSignalDSL.g:16815:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    // InternalSignalDSL.g:17214:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
     public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16819:1: ( ( '=>' ) )
-            // InternalSignalDSL.g:16820:1: ( '=>' )
+            // InternalSignalDSL.g:17218:1: ( ( '=>' ) )
+            // InternalSignalDSL.g:17219:1: ( '=>' )
             {
-            // InternalSignalDSL.g:16820:1: ( '=>' )
-            // InternalSignalDSL.g:16821:2: '=>'
+            // InternalSignalDSL.g:17219:1: ( '=>' )
+            // InternalSignalDSL.g:17220:2: '=>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); 
@@ -55517,14 +56798,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2"
-    // InternalSignalDSL.g:16830:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    // InternalSignalDSL.g:17229:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
     public final void rule__XFunctionTypeRef__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16834:1: ( rule__XFunctionTypeRef__Group__2__Impl )
-            // InternalSignalDSL.g:16835:2: rule__XFunctionTypeRef__Group__2__Impl
+            // InternalSignalDSL.g:17233:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalSignalDSL.g:17234:2: rule__XFunctionTypeRef__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__2__Impl();
@@ -55550,23 +56831,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2__Impl"
-    // InternalSignalDSL.g:16841:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    // InternalSignalDSL.g:17240:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
     public final void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16845:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
-            // InternalSignalDSL.g:16846:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalSignalDSL.g:17244:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalSignalDSL.g:17245:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
             {
-            // InternalSignalDSL.g:16846:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
-            // InternalSignalDSL.g:16847:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalSignalDSL.g:17245:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalSignalDSL.g:17246:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
             }
-            // InternalSignalDSL.g:16848:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
-            // InternalSignalDSL.g:16848:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
+            // InternalSignalDSL.g:17247:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalSignalDSL.g:17247:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ReturnTypeAssignment_2();
@@ -55601,16 +56882,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0"
-    // InternalSignalDSL.g:16857:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
+    // InternalSignalDSL.g:17256:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
     public final void rule__XFunctionTypeRef__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16861:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
-            // InternalSignalDSL.g:16862:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            // InternalSignalDSL.g:17260:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalSignalDSL.g:17261:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
             {
-            pushFollow(FOLLOW_114);
+            pushFollow(FOLLOW_117);
             rule__XFunctionTypeRef__Group_0__0__Impl();
 
             state._fsp--;
@@ -55639,22 +56920,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0__Impl"
-    // InternalSignalDSL.g:16869:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:17268:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
     public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16873:1: ( ( '(' ) )
-            // InternalSignalDSL.g:16874:1: ( '(' )
+            // InternalSignalDSL.g:17272:1: ( ( '(' ) )
+            // InternalSignalDSL.g:17273:1: ( '(' )
             {
-            // InternalSignalDSL.g:16874:1: ( '(' )
-            // InternalSignalDSL.g:16875:2: '('
+            // InternalSignalDSL.g:17273:1: ( '(' )
+            // InternalSignalDSL.g:17274:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
@@ -55680,16 +56961,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1"
-    // InternalSignalDSL.g:16884:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
+    // InternalSignalDSL.g:17283:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
     public final void rule__XFunctionTypeRef__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16888:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
-            // InternalSignalDSL.g:16889:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            // InternalSignalDSL.g:17287:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalSignalDSL.g:17288:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
             {
-            pushFollow(FOLLOW_114);
+            pushFollow(FOLLOW_117);
             rule__XFunctionTypeRef__Group_0__1__Impl();
 
             state._fsp--;
@@ -55718,31 +56999,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1__Impl"
-    // InternalSignalDSL.g:16896:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
+    // InternalSignalDSL.g:17295:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
     public final void rule__XFunctionTypeRef__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16900:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
-            // InternalSignalDSL.g:16901:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalSignalDSL.g:17299:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalSignalDSL.g:17300:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
             {
-            // InternalSignalDSL.g:16901:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
-            // InternalSignalDSL.g:16902:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            // InternalSignalDSL.g:17300:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalSignalDSL.g:17301:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:16903:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
-            int alt131=2;
-            int LA131_0 = input.LA(1);
+            // InternalSignalDSL.g:17302:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            int alt134=2;
+            int LA134_0 = input.LA(1);
 
-            if ( (LA131_0==RULE_ID||LA131_0==31||LA131_0==80) ) {
-                alt131=1;
+            if ( (LA134_0==RULE_ID||LA134_0==31||LA134_0==78) ) {
+                alt134=1;
             }
-            switch (alt131) {
+            switch (alt134) {
                 case 1 :
-                    // InternalSignalDSL.g:16903:3: rule__XFunctionTypeRef__Group_0_1__0
+                    // InternalSignalDSL.g:17302:3: rule__XFunctionTypeRef__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0_1__0();
@@ -55780,14 +57061,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2"
-    // InternalSignalDSL.g:16911:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
+    // InternalSignalDSL.g:17310:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
     public final void rule__XFunctionTypeRef__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16915:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
-            // InternalSignalDSL.g:16916:2: rule__XFunctionTypeRef__Group_0__2__Impl
+            // InternalSignalDSL.g:17314:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalSignalDSL.g:17315:2: rule__XFunctionTypeRef__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0__2__Impl();
@@ -55813,22 +57094,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2__Impl"
-    // InternalSignalDSL.g:16922:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:17321:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
     public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16926:1: ( ( ')' ) )
-            // InternalSignalDSL.g:16927:1: ( ')' )
+            // InternalSignalDSL.g:17325:1: ( ( ')' ) )
+            // InternalSignalDSL.g:17326:1: ( ')' )
             {
-            // InternalSignalDSL.g:16927:1: ( ')' )
-            // InternalSignalDSL.g:16928:2: ')'
+            // InternalSignalDSL.g:17326:1: ( ')' )
+            // InternalSignalDSL.g:17327:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
@@ -55854,16 +57135,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0"
-    // InternalSignalDSL.g:16938:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
+    // InternalSignalDSL.g:17337:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
     public final void rule__XFunctionTypeRef__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16942:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
-            // InternalSignalDSL.g:16943:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            // InternalSignalDSL.g:17341:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalSignalDSL.g:17342:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
             {
-            pushFollow(FOLLOW_33);
+            pushFollow(FOLLOW_36);
             rule__XFunctionTypeRef__Group_0_1__0__Impl();
 
             state._fsp--;
@@ -55892,23 +57173,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:16950:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
+    // InternalSignalDSL.g:17349:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
     public final void rule__XFunctionTypeRef__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16954:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
-            // InternalSignalDSL.g:16955:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:17353:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalSignalDSL.g:17354:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
             {
-            // InternalSignalDSL.g:16955:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
-            // InternalSignalDSL.g:16956:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalSignalDSL.g:17354:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:17355:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
             }
-            // InternalSignalDSL.g:16957:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
-            // InternalSignalDSL.g:16957:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
+            // InternalSignalDSL.g:17356:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalSignalDSL.g:17356:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0();
@@ -55943,14 +57224,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1"
-    // InternalSignalDSL.g:16965:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
+    // InternalSignalDSL.g:17364:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
     public final void rule__XFunctionTypeRef__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16969:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
-            // InternalSignalDSL.g:16970:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
+            // InternalSignalDSL.g:17368:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalSignalDSL.g:17369:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1__1__Impl();
@@ -55976,37 +57257,37 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1__Impl"
-    // InternalSignalDSL.g:16976:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:17375:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
     public final void rule__XFunctionTypeRef__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16980:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:16981:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:17379:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:17380:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:16981:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
-            // InternalSignalDSL.g:16982:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            // InternalSignalDSL.g:17380:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:17381:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
             }
-            // InternalSignalDSL.g:16983:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
-            loop132:
+            // InternalSignalDSL.g:17382:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            loop135:
             do {
-                int alt132=2;
-                int LA132_0 = input.LA(1);
+                int alt135=2;
+                int LA135_0 = input.LA(1);
 
-                if ( (LA132_0==82) ) {
-                    alt132=1;
+                if ( (LA135_0==80) ) {
+                    alt135=1;
                 }
 
 
-                switch (alt132) {
+                switch (alt135) {
             	case 1 :
-            	    // InternalSignalDSL.g:16983:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    // InternalSignalDSL.g:17382:3: rule__XFunctionTypeRef__Group_0_1_1__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__XFunctionTypeRef__Group_0_1_1__0();
 
             	    state._fsp--;
@@ -56016,7 +57297,7 @@
             	    break;
 
             	default :
-            	    break loop132;
+            	    break loop135;
                 }
             } while (true);
 
@@ -56045,16 +57326,16 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0"
-    // InternalSignalDSL.g:16992:1: rule__XFunctionTypeRef__Group_0_1_1__0 : rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 ;
+    // InternalSignalDSL.g:17391:1: rule__XFunctionTypeRef__Group_0_1_1__0 : rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16996:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
-            // InternalSignalDSL.g:16997:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            // InternalSignalDSL.g:17395:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalSignalDSL.g:17396:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__XFunctionTypeRef__Group_0_1_1__0__Impl();
 
             state._fsp--;
@@ -56083,22 +57364,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0__Impl"
-    // InternalSignalDSL.g:17004:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:17403:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17008:1: ( ( ',' ) )
-            // InternalSignalDSL.g:17009:1: ( ',' )
+            // InternalSignalDSL.g:17407:1: ( ( ',' ) )
+            // InternalSignalDSL.g:17408:1: ( ',' )
             {
-            // InternalSignalDSL.g:17009:1: ( ',' )
-            // InternalSignalDSL.g:17010:2: ','
+            // InternalSignalDSL.g:17408:1: ( ',' )
+            // InternalSignalDSL.g:17409:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -56124,14 +57405,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1"
-    // InternalSignalDSL.g:17019:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:17418:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17023:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
-            // InternalSignalDSL.g:17024:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
+            // InternalSignalDSL.g:17422:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalSignalDSL.g:17423:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1_1__1__Impl();
@@ -56157,23 +57438,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1__Impl"
-    // InternalSignalDSL.g:17030:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:17429:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17034:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:17035:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:17433:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:17434:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:17035:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
-            // InternalSignalDSL.g:17036:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:17434:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:17435:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:17037:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
-            // InternalSignalDSL.g:17037:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
+            // InternalSignalDSL.g:17436:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:17436:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1();
@@ -56208,16 +57489,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0"
-    // InternalSignalDSL.g:17046:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
+    // InternalSignalDSL.g:17445:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
     public final void rule__JvmParameterizedTypeReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17050:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
-            // InternalSignalDSL.g:17051:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            // InternalSignalDSL.g:17449:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalSignalDSL.g:17450:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_45);
             rule__JvmParameterizedTypeReference__Group__0__Impl();
 
             state._fsp--;
@@ -56246,23 +57527,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0__Impl"
-    // InternalSignalDSL.g:17058:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    // InternalSignalDSL.g:17457:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17062:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
-            // InternalSignalDSL.g:17063:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalSignalDSL.g:17461:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalSignalDSL.g:17462:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
             {
-            // InternalSignalDSL.g:17063:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
-            // InternalSignalDSL.g:17064:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalSignalDSL.g:17462:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalSignalDSL.g:17463:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
             }
-            // InternalSignalDSL.g:17065:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
-            // InternalSignalDSL.g:17065:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
+            // InternalSignalDSL.g:17464:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalSignalDSL.g:17464:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_0();
@@ -56297,14 +57578,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1"
-    // InternalSignalDSL.g:17073:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    // InternalSignalDSL.g:17472:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17077:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
-            // InternalSignalDSL.g:17078:2: rule__JvmParameterizedTypeReference__Group__1__Impl
+            // InternalSignalDSL.g:17476:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalSignalDSL.g:17477:2: rule__JvmParameterizedTypeReference__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__1__Impl();
@@ -56330,27 +57611,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1__Impl"
-    // InternalSignalDSL.g:17084:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:17483:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
     public final void rule__JvmParameterizedTypeReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17088:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
-            // InternalSignalDSL.g:17089:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalSignalDSL.g:17487:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalSignalDSL.g:17488:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:17089:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
-            // InternalSignalDSL.g:17090:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            // InternalSignalDSL.g:17488:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalSignalDSL.g:17489:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:17091:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
-            int alt133=2;
-            alt133 = dfa133.predict(input);
-            switch (alt133) {
+            // InternalSignalDSL.g:17490:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            int alt136=2;
+            alt136 = dfa136.predict(input);
+            switch (alt136) {
                 case 1 :
-                    // InternalSignalDSL.g:17091:3: rule__JvmParameterizedTypeReference__Group_1__0
+                    // InternalSignalDSL.g:17490:3: rule__JvmParameterizedTypeReference__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1__0();
@@ -56388,16 +57669,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0"
-    // InternalSignalDSL.g:17100:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
+    // InternalSignalDSL.g:17499:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17104:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
-            // InternalSignalDSL.g:17105:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            // InternalSignalDSL.g:17503:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalSignalDSL.g:17504:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__JvmParameterizedTypeReference__Group_1__0__Impl();
 
             state._fsp--;
@@ -56426,23 +57707,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0__Impl"
-    // InternalSignalDSL.g:17112:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    // InternalSignalDSL.g:17511:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17116:1: ( ( ( '<' ) ) )
-            // InternalSignalDSL.g:17117:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17515:1: ( ( ( '<' ) ) )
+            // InternalSignalDSL.g:17516:1: ( ( '<' ) )
             {
-            // InternalSignalDSL.g:17117:1: ( ( '<' ) )
-            // InternalSignalDSL.g:17118:2: ( '<' )
+            // InternalSignalDSL.g:17516:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17517:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
             }
-            // InternalSignalDSL.g:17119:2: ( '<' )
-            // InternalSignalDSL.g:17119:3: '<'
+            // InternalSignalDSL.g:17518:2: ( '<' )
+            // InternalSignalDSL.g:17518:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -56473,16 +57754,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1"
-    // InternalSignalDSL.g:17127:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
+    // InternalSignalDSL.g:17526:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17131:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
-            // InternalSignalDSL.g:17132:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            // InternalSignalDSL.g:17530:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalSignalDSL.g:17531:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__JvmParameterizedTypeReference__Group_1__1__Impl();
 
             state._fsp--;
@@ -56511,23 +57792,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1__Impl"
-    // InternalSignalDSL.g:17139:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:17538:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17143:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:17144:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:17542:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:17543:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:17144:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
-            // InternalSignalDSL.g:17145:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:17543:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:17544:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:17146:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
-            // InternalSignalDSL.g:17146:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
+            // InternalSignalDSL.g:17545:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:17545:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1();
@@ -56562,16 +57843,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2"
-    // InternalSignalDSL.g:17154:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
+    // InternalSignalDSL.g:17553:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17158:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
-            // InternalSignalDSL.g:17159:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            // InternalSignalDSL.g:17557:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalSignalDSL.g:17558:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__JvmParameterizedTypeReference__Group_1__2__Impl();
 
             state._fsp--;
@@ -56600,37 +57881,37 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2__Impl"
-    // InternalSignalDSL.g:17166:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
+    // InternalSignalDSL.g:17565:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17170:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
-            // InternalSignalDSL.g:17171:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalSignalDSL.g:17569:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalSignalDSL.g:17570:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
             {
-            // InternalSignalDSL.g:17171:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
-            // InternalSignalDSL.g:17172:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            // InternalSignalDSL.g:17570:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalSignalDSL.g:17571:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
             }
-            // InternalSignalDSL.g:17173:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
-            loop134:
+            // InternalSignalDSL.g:17572:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            loop137:
             do {
-                int alt134=2;
-                int LA134_0 = input.LA(1);
+                int alt137=2;
+                int LA137_0 = input.LA(1);
 
-                if ( (LA134_0==82) ) {
-                    alt134=1;
+                if ( (LA137_0==80) ) {
+                    alt137=1;
                 }
 
 
-                switch (alt134) {
+                switch (alt137) {
             	case 1 :
-            	    // InternalSignalDSL.g:17173:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    // InternalSignalDSL.g:17572:3: rule__JvmParameterizedTypeReference__Group_1_2__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__JvmParameterizedTypeReference__Group_1_2__0();
 
             	    state._fsp--;
@@ -56640,7 +57921,7 @@
             	    break;
 
             	default :
-            	    break loop134;
+            	    break loop137;
                 }
             } while (true);
 
@@ -56669,16 +57950,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3"
-    // InternalSignalDSL.g:17181:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
+    // InternalSignalDSL.g:17580:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17185:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
-            // InternalSignalDSL.g:17186:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            // InternalSignalDSL.g:17584:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalSignalDSL.g:17585:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
             {
-            pushFollow(FOLLOW_111);
+            pushFollow(FOLLOW_114);
             rule__JvmParameterizedTypeReference__Group_1__3__Impl();
 
             state._fsp--;
@@ -56707,17 +57988,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3__Impl"
-    // InternalSignalDSL.g:17193:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:17592:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17197:1: ( ( '>' ) )
-            // InternalSignalDSL.g:17198:1: ( '>' )
+            // InternalSignalDSL.g:17596:1: ( ( '>' ) )
+            // InternalSignalDSL.g:17597:1: ( '>' )
             {
-            // InternalSignalDSL.g:17198:1: ( '>' )
-            // InternalSignalDSL.g:17199:2: '>'
+            // InternalSignalDSL.g:17597:1: ( '>' )
+            // InternalSignalDSL.g:17598:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); 
@@ -56748,14 +58029,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4"
-    // InternalSignalDSL.g:17208:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
+    // InternalSignalDSL.g:17607:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17212:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
-            // InternalSignalDSL.g:17213:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
+            // InternalSignalDSL.g:17611:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalSignalDSL.g:17612:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1__4__Impl();
@@ -56781,35 +58062,35 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4__Impl"
-    // InternalSignalDSL.g:17219:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
+    // InternalSignalDSL.g:17618:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17223:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
-            // InternalSignalDSL.g:17224:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalSignalDSL.g:17622:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalSignalDSL.g:17623:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
             {
-            // InternalSignalDSL.g:17224:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
-            // InternalSignalDSL.g:17225:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            // InternalSignalDSL.g:17623:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalSignalDSL.g:17624:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
             }
-            // InternalSignalDSL.g:17226:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
-            loop135:
+            // InternalSignalDSL.g:17625:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            loop138:
             do {
-                int alt135=2;
-                int LA135_0 = input.LA(1);
+                int alt138=2;
+                int LA138_0 = input.LA(1);
 
-                if ( (LA135_0==43) ) {
-                    int LA135_2 = input.LA(2);
+                if ( (LA138_0==43) ) {
+                    int LA138_2 = input.LA(2);
 
-                    if ( (LA135_2==RULE_ID) ) {
-                        int LA135_3 = input.LA(3);
+                    if ( (LA138_2==RULE_ID) ) {
+                        int LA138_3 = input.LA(3);
 
-                        if ( (synpred187_InternalSignalDSL()) ) {
-                            alt135=1;
+                        if ( (synpred190_InternalSignalDSL()) ) {
+                            alt138=1;
                         }
 
 
@@ -56819,11 +58100,11 @@
                 }
 
 
-                switch (alt135) {
+                switch (alt138) {
             	case 1 :
-            	    // InternalSignalDSL.g:17226:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    // InternalSignalDSL.g:17625:3: rule__JvmParameterizedTypeReference__Group_1_4__0
             	    {
-            	    pushFollow(FOLLOW_112);
+            	    pushFollow(FOLLOW_115);
             	    rule__JvmParameterizedTypeReference__Group_1_4__0();
 
             	    state._fsp--;
@@ -56833,7 +58114,7 @@
             	    break;
 
             	default :
-            	    break loop135;
+            	    break loop138;
                 }
             } while (true);
 
@@ -56862,16 +58143,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0"
-    // InternalSignalDSL.g:17235:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
+    // InternalSignalDSL.g:17634:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17239:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
-            // InternalSignalDSL.g:17240:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            // InternalSignalDSL.g:17638:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalSignalDSL.g:17639:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__JvmParameterizedTypeReference__Group_1_2__0__Impl();
 
             state._fsp--;
@@ -56900,22 +58181,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0__Impl"
-    // InternalSignalDSL.g:17247:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:17646:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17251:1: ( ( ',' ) )
-            // InternalSignalDSL.g:17252:1: ( ',' )
+            // InternalSignalDSL.g:17650:1: ( ( ',' ) )
+            // InternalSignalDSL.g:17651:1: ( ',' )
             {
-            // InternalSignalDSL.g:17252:1: ( ',' )
-            // InternalSignalDSL.g:17253:2: ','
+            // InternalSignalDSL.g:17651:1: ( ',' )
+            // InternalSignalDSL.g:17652:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
@@ -56941,14 +58222,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1"
-    // InternalSignalDSL.g:17262:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
+    // InternalSignalDSL.g:17661:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17266:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
-            // InternalSignalDSL.g:17267:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
+            // InternalSignalDSL.g:17665:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalSignalDSL.g:17666:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_2__1__Impl();
@@ -56974,23 +58255,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1__Impl"
-    // InternalSignalDSL.g:17273:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
+    // InternalSignalDSL.g:17672:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17277:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
-            // InternalSignalDSL.g:17278:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:17676:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalSignalDSL.g:17677:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
             {
-            // InternalSignalDSL.g:17278:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
-            // InternalSignalDSL.g:17279:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:17677:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:17678:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
             }
-            // InternalSignalDSL.g:17280:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
-            // InternalSignalDSL.g:17280:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
+            // InternalSignalDSL.g:17679:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:17679:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1();
@@ -57025,14 +58306,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0"
-    // InternalSignalDSL.g:17289:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
+    // InternalSignalDSL.g:17688:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17293:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
-            // InternalSignalDSL.g:17294:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
+            // InternalSignalDSL.g:17692:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalSignalDSL.g:17693:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
             {
             pushFollow(FOLLOW_6);
             rule__JvmParameterizedTypeReference__Group_1_4__0__Impl();
@@ -57063,23 +58344,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0__Impl"
-    // InternalSignalDSL.g:17301:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
+    // InternalSignalDSL.g:17700:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17305:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
-            // InternalSignalDSL.g:17306:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalSignalDSL.g:17704:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalSignalDSL.g:17705:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
             {
-            // InternalSignalDSL.g:17306:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
-            // InternalSignalDSL.g:17307:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalSignalDSL.g:17705:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalSignalDSL.g:17706:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
             }
-            // InternalSignalDSL.g:17308:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
-            // InternalSignalDSL.g:17308:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
+            // InternalSignalDSL.g:17707:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalSignalDSL.g:17707:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0();
@@ -57114,16 +58395,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1"
-    // InternalSignalDSL.g:17316:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
+    // InternalSignalDSL.g:17715:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17320:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
-            // InternalSignalDSL.g:17321:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            // InternalSignalDSL.g:17719:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalSignalDSL.g:17720:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
             {
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_45);
             rule__JvmParameterizedTypeReference__Group_1_4__1__Impl();
 
             state._fsp--;
@@ -57152,23 +58433,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1__Impl"
-    // InternalSignalDSL.g:17328:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
+    // InternalSignalDSL.g:17727:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17332:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
-            // InternalSignalDSL.g:17333:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalSignalDSL.g:17731:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalSignalDSL.g:17732:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
             {
-            // InternalSignalDSL.g:17333:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
-            // InternalSignalDSL.g:17334:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalSignalDSL.g:17732:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalSignalDSL.g:17733:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
             }
-            // InternalSignalDSL.g:17335:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
-            // InternalSignalDSL.g:17335:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
+            // InternalSignalDSL.g:17734:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalSignalDSL.g:17734:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1();
@@ -57203,14 +58484,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2"
-    // InternalSignalDSL.g:17343:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
+    // InternalSignalDSL.g:17742:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17347:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
-            // InternalSignalDSL.g:17348:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
+            // InternalSignalDSL.g:17746:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalSignalDSL.g:17747:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4__2__Impl();
@@ -57236,27 +58517,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2__Impl"
-    // InternalSignalDSL.g:17354:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
+    // InternalSignalDSL.g:17753:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17358:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
-            // InternalSignalDSL.g:17359:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalSignalDSL.g:17757:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalSignalDSL.g:17758:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
             {
-            // InternalSignalDSL.g:17359:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
-            // InternalSignalDSL.g:17360:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            // InternalSignalDSL.g:17758:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalSignalDSL.g:17759:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
             }
-            // InternalSignalDSL.g:17361:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
-            int alt136=2;
-            alt136 = dfa136.predict(input);
-            switch (alt136) {
+            // InternalSignalDSL.g:17760:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            int alt139=2;
+            alt139 = dfa139.predict(input);
+            switch (alt139) {
                 case 1 :
-                    // InternalSignalDSL.g:17361:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+                    // InternalSignalDSL.g:17760:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -57294,14 +58575,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0"
-    // InternalSignalDSL.g:17370:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
+    // InternalSignalDSL.g:17769:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17374:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
-            // InternalSignalDSL.g:17375:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
+            // InternalSignalDSL.g:17773:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalSignalDSL.g:17774:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl();
@@ -57327,23 +58608,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl"
-    // InternalSignalDSL.g:17381:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
+    // InternalSignalDSL.g:17780:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17385:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
-            // InternalSignalDSL.g:17386:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalSignalDSL.g:17784:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalSignalDSL.g:17785:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
             {
-            // InternalSignalDSL.g:17386:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
-            // InternalSignalDSL.g:17387:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalSignalDSL.g:17785:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalSignalDSL.g:17786:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
             }
-            // InternalSignalDSL.g:17388:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
-            // InternalSignalDSL.g:17388:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
+            // InternalSignalDSL.g:17787:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalSignalDSL.g:17787:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0();
@@ -57378,16 +58659,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0"
-    // InternalSignalDSL.g:17397:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 ;
+    // InternalSignalDSL.g:17796:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17401:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
-            // InternalSignalDSL.g:17402:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            // InternalSignalDSL.g:17800:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalSignalDSL.g:17801:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
             {
-            pushFollow(FOLLOW_111);
+            pushFollow(FOLLOW_114);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl();
 
             state._fsp--;
@@ -57416,23 +58697,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl"
-    // InternalSignalDSL.g:17409:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:17808:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17413:1: ( ( () ) )
-            // InternalSignalDSL.g:17414:1: ( () )
+            // InternalSignalDSL.g:17812:1: ( ( () ) )
+            // InternalSignalDSL.g:17813:1: ( () )
             {
-            // InternalSignalDSL.g:17414:1: ( () )
-            // InternalSignalDSL.g:17415:2: ()
+            // InternalSignalDSL.g:17813:1: ( () )
+            // InternalSignalDSL.g:17814:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
             }
-            // InternalSignalDSL.g:17416:2: ()
-            // InternalSignalDSL.g:17416:3: 
+            // InternalSignalDSL.g:17815:2: ()
+            // InternalSignalDSL.g:17815:3: 
             {
             }
 
@@ -57457,14 +58738,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1"
-    // InternalSignalDSL.g:17424:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
+    // InternalSignalDSL.g:17823:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17428:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
-            // InternalSignalDSL.g:17429:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
+            // InternalSignalDSL.g:17827:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalSignalDSL.g:17828:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl();
@@ -57490,17 +58771,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl"
-    // InternalSignalDSL.g:17435:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:17834:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17439:1: ( ( '.' ) )
-            // InternalSignalDSL.g:17440:1: ( '.' )
+            // InternalSignalDSL.g:17838:1: ( ( '.' ) )
+            // InternalSignalDSL.g:17839:1: ( '.' )
             {
-            // InternalSignalDSL.g:17440:1: ( '.' )
-            // InternalSignalDSL.g:17441:2: '.'
+            // InternalSignalDSL.g:17839:1: ( '.' )
+            // InternalSignalDSL.g:17840:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); 
@@ -57531,16 +58812,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0"
-    // InternalSignalDSL.g:17451:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 ;
+    // InternalSignalDSL.g:17850:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17455:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
-            // InternalSignalDSL.g:17456:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            // InternalSignalDSL.g:17854:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalSignalDSL.g:17855:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl();
 
             state._fsp--;
@@ -57569,23 +58850,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl"
-    // InternalSignalDSL.g:17463:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
+    // InternalSignalDSL.g:17862:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17467:1: ( ( ( '<' ) ) )
-            // InternalSignalDSL.g:17468:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17866:1: ( ( ( '<' ) ) )
+            // InternalSignalDSL.g:17867:1: ( ( '<' ) )
             {
-            // InternalSignalDSL.g:17468:1: ( ( '<' ) )
-            // InternalSignalDSL.g:17469:2: ( '<' )
+            // InternalSignalDSL.g:17867:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17868:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
             }
-            // InternalSignalDSL.g:17470:2: ( '<' )
-            // InternalSignalDSL.g:17470:3: '<'
+            // InternalSignalDSL.g:17869:2: ( '<' )
+            // InternalSignalDSL.g:17869:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -57616,16 +58897,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1"
-    // InternalSignalDSL.g:17478:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 ;
+    // InternalSignalDSL.g:17877:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17482:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
-            // InternalSignalDSL.g:17483:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            // InternalSignalDSL.g:17881:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalSignalDSL.g:17882:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl();
 
             state._fsp--;
@@ -57654,23 +58935,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl"
-    // InternalSignalDSL.g:17490:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
+    // InternalSignalDSL.g:17889:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17494:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
-            // InternalSignalDSL.g:17495:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalSignalDSL.g:17893:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalSignalDSL.g:17894:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
             {
-            // InternalSignalDSL.g:17495:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
-            // InternalSignalDSL.g:17496:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalSignalDSL.g:17894:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalSignalDSL.g:17895:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
             }
-            // InternalSignalDSL.g:17497:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
-            // InternalSignalDSL.g:17497:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
+            // InternalSignalDSL.g:17896:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalSignalDSL.g:17896:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1();
@@ -57705,16 +58986,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2"
-    // InternalSignalDSL.g:17505:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2 : rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 ;
+    // InternalSignalDSL.g:17904:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2 : rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17509:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
-            // InternalSignalDSL.g:17510:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            // InternalSignalDSL.g:17908:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalSignalDSL.g:17909:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
             {
-            pushFollow(FOLLOW_73);
+            pushFollow(FOLLOW_76);
             rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl();
 
             state._fsp--;
@@ -57743,37 +59024,37 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl"
-    // InternalSignalDSL.g:17517:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
+    // InternalSignalDSL.g:17916:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17521:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
-            // InternalSignalDSL.g:17522:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalSignalDSL.g:17920:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalSignalDSL.g:17921:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
             {
-            // InternalSignalDSL.g:17522:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
-            // InternalSignalDSL.g:17523:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            // InternalSignalDSL.g:17921:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalSignalDSL.g:17922:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
             }
-            // InternalSignalDSL.g:17524:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
-            loop137:
+            // InternalSignalDSL.g:17923:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            loop140:
             do {
-                int alt137=2;
-                int LA137_0 = input.LA(1);
+                int alt140=2;
+                int LA140_0 = input.LA(1);
 
-                if ( (LA137_0==82) ) {
-                    alt137=1;
+                if ( (LA140_0==80) ) {
+                    alt140=1;
                 }
 
 
-                switch (alt137) {
+                switch (alt140) {
             	case 1 :
-            	    // InternalSignalDSL.g:17524:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    // InternalSignalDSL.g:17923:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
             	    {
-            	    pushFollow(FOLLOW_34);
+            	    pushFollow(FOLLOW_37);
             	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
 
             	    state._fsp--;
@@ -57783,7 +59064,7 @@
             	    break;
 
             	default :
-            	    break loop137;
+            	    break loop140;
                 }
             } while (true);
 
@@ -57812,14 +59093,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3"
-    // InternalSignalDSL.g:17532:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
+    // InternalSignalDSL.g:17931:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17536:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
-            // InternalSignalDSL.g:17537:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
+            // InternalSignalDSL.g:17935:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalSignalDSL.g:17936:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl();
@@ -57845,17 +59126,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl"
-    // InternalSignalDSL.g:17543:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:17942:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17547:1: ( ( '>' ) )
-            // InternalSignalDSL.g:17548:1: ( '>' )
+            // InternalSignalDSL.g:17946:1: ( ( '>' ) )
+            // InternalSignalDSL.g:17947:1: ( '>' )
             {
-            // InternalSignalDSL.g:17548:1: ( '>' )
-            // InternalSignalDSL.g:17549:2: '>'
+            // InternalSignalDSL.g:17947:1: ( '>' )
+            // InternalSignalDSL.g:17948:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); 
@@ -57886,16 +59167,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0"
-    // InternalSignalDSL.g:17559:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 ;
+    // InternalSignalDSL.g:17958:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17563:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
-            // InternalSignalDSL.g:17564:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            // InternalSignalDSL.g:17962:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalSignalDSL.g:17963:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl();
 
             state._fsp--;
@@ -57924,22 +59205,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl"
-    // InternalSignalDSL.g:17571:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:17970:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17575:1: ( ( ',' ) )
-            // InternalSignalDSL.g:17576:1: ( ',' )
+            // InternalSignalDSL.g:17974:1: ( ( ',' ) )
+            // InternalSignalDSL.g:17975:1: ( ',' )
             {
-            // InternalSignalDSL.g:17576:1: ( ',' )
-            // InternalSignalDSL.g:17577:2: ','
+            // InternalSignalDSL.g:17975:1: ( ',' )
+            // InternalSignalDSL.g:17976:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
@@ -57965,14 +59246,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1"
-    // InternalSignalDSL.g:17586:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
+    // InternalSignalDSL.g:17985:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17590:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
-            // InternalSignalDSL.g:17591:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
+            // InternalSignalDSL.g:17989:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalSignalDSL.g:17990:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl();
@@ -57998,23 +59279,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl"
-    // InternalSignalDSL.g:17597:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
+    // InternalSignalDSL.g:17996:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17601:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
-            // InternalSignalDSL.g:17602:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalSignalDSL.g:18000:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalSignalDSL.g:18001:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
             {
-            // InternalSignalDSL.g:17602:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
-            // InternalSignalDSL.g:17603:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalSignalDSL.g:18001:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalSignalDSL.g:18002:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
             }
-            // InternalSignalDSL.g:17604:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
-            // InternalSignalDSL.g:17604:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
+            // InternalSignalDSL.g:18003:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalSignalDSL.g:18003:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1();
@@ -58049,16 +59330,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0"
-    // InternalSignalDSL.g:17613:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
+    // InternalSignalDSL.g:18012:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
     public final void rule__JvmWildcardTypeReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17617:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
-            // InternalSignalDSL.g:17618:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            // InternalSignalDSL.g:18016:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalSignalDSL.g:18017:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
             {
-            pushFollow(FOLLOW_72);
+            pushFollow(FOLLOW_75);
             rule__JvmWildcardTypeReference__Group__0__Impl();
 
             state._fsp--;
@@ -58087,23 +59368,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0__Impl"
-    // InternalSignalDSL.g:17625:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:18024:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
     public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17629:1: ( ( () ) )
-            // InternalSignalDSL.g:17630:1: ( () )
+            // InternalSignalDSL.g:18028:1: ( ( () ) )
+            // InternalSignalDSL.g:18029:1: ( () )
             {
-            // InternalSignalDSL.g:17630:1: ( () )
-            // InternalSignalDSL.g:17631:2: ()
+            // InternalSignalDSL.g:18029:1: ( () )
+            // InternalSignalDSL.g:18030:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
             }
-            // InternalSignalDSL.g:17632:2: ()
-            // InternalSignalDSL.g:17632:3: 
+            // InternalSignalDSL.g:18031:2: ()
+            // InternalSignalDSL.g:18031:3: 
             {
             }
 
@@ -58128,16 +59409,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1"
-    // InternalSignalDSL.g:17640:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
+    // InternalSignalDSL.g:18039:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
     public final void rule__JvmWildcardTypeReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17644:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
-            // InternalSignalDSL.g:17645:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            // InternalSignalDSL.g:18043:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalSignalDSL.g:18044:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
             {
-            pushFollow(FOLLOW_115);
+            pushFollow(FOLLOW_118);
             rule__JvmWildcardTypeReference__Group__1__Impl();
 
             state._fsp--;
@@ -58166,22 +59447,22 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1__Impl"
-    // InternalSignalDSL.g:17652:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    // InternalSignalDSL.g:18051:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
     public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17656:1: ( ( '?' ) )
-            // InternalSignalDSL.g:17657:1: ( '?' )
+            // InternalSignalDSL.g:18055:1: ( ( '?' ) )
+            // InternalSignalDSL.g:18056:1: ( '?' )
             {
-            // InternalSignalDSL.g:17657:1: ( '?' )
-            // InternalSignalDSL.g:17658:2: '?'
+            // InternalSignalDSL.g:18056:1: ( '?' )
+            // InternalSignalDSL.g:18057:2: '?'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
             }
-            match(input,105,FOLLOW_2); if (state.failed) return ;
+            match(input,103,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
             }
@@ -58207,14 +59488,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2"
-    // InternalSignalDSL.g:17667:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    // InternalSignalDSL.g:18066:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
     public final void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17671:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
-            // InternalSignalDSL.g:17672:2: rule__JvmWildcardTypeReference__Group__2__Impl
+            // InternalSignalDSL.g:18070:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalSignalDSL.g:18071:2: rule__JvmWildcardTypeReference__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__2__Impl();
@@ -58240,31 +59521,31 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2__Impl"
-    // InternalSignalDSL.g:17678:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    // InternalSignalDSL.g:18077:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
     public final void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17682:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
-            // InternalSignalDSL.g:17683:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalSignalDSL.g:18081:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalSignalDSL.g:18082:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
             {
-            // InternalSignalDSL.g:17683:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
-            // InternalSignalDSL.g:17684:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            // InternalSignalDSL.g:18082:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalSignalDSL.g:18083:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:17685:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
-            int alt138=2;
-            int LA138_0 = input.LA(1);
+            // InternalSignalDSL.g:18084:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            int alt141=2;
+            int LA141_0 = input.LA(1);
 
-            if ( (LA138_0==45||LA138_0==49) ) {
-                alt138=1;
+            if ( (LA141_0==45||LA141_0==49) ) {
+                alt141=1;
             }
-            switch (alt138) {
+            switch (alt141) {
                 case 1 :
-                    // InternalSignalDSL.g:17685:3: rule__JvmWildcardTypeReference__Alternatives_2
+                    // InternalSignalDSL.g:18084:3: rule__JvmWildcardTypeReference__Alternatives_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Alternatives_2();
@@ -58302,16 +59583,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0"
-    // InternalSignalDSL.g:17694:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
+    // InternalSignalDSL.g:18093:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17698:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
-            // InternalSignalDSL.g:17699:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            // InternalSignalDSL.g:18097:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalSignalDSL.g:18098:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
             {
-            pushFollow(FOLLOW_116);
+            pushFollow(FOLLOW_119);
             rule__JvmWildcardTypeReference__Group_2_0__0__Impl();
 
             state._fsp--;
@@ -58340,23 +59621,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:17706:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
+    // InternalSignalDSL.g:18105:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17710:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
-            // InternalSignalDSL.g:17711:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:18109:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalSignalDSL.g:18110:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
             {
-            // InternalSignalDSL.g:17711:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
-            // InternalSignalDSL.g:17712:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalSignalDSL.g:18110:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:18111:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
             }
-            // InternalSignalDSL.g:17713:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
-            // InternalSignalDSL.g:17713:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
+            // InternalSignalDSL.g:18112:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalSignalDSL.g:18112:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0();
@@ -58391,14 +59672,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1"
-    // InternalSignalDSL.g:17721:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
+    // InternalSignalDSL.g:18120:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17725:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
-            // InternalSignalDSL.g:17726:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
+            // InternalSignalDSL.g:18124:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalSignalDSL.g:18125:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_0__1__Impl();
@@ -58424,37 +59705,37 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1__Impl"
-    // InternalSignalDSL.g:17732:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
+    // InternalSignalDSL.g:18131:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17736:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
-            // InternalSignalDSL.g:17737:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalSignalDSL.g:18135:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalSignalDSL.g:18136:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
             {
-            // InternalSignalDSL.g:17737:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
-            // InternalSignalDSL.g:17738:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            // InternalSignalDSL.g:18136:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalSignalDSL.g:18137:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
             }
-            // InternalSignalDSL.g:17739:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
-            loop139:
+            // InternalSignalDSL.g:18138:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            loop142:
             do {
-                int alt139=2;
-                int LA139_0 = input.LA(1);
+                int alt142=2;
+                int LA142_0 = input.LA(1);
 
-                if ( (LA139_0==106) ) {
-                    alt139=1;
+                if ( (LA142_0==104) ) {
+                    alt142=1;
                 }
 
 
-                switch (alt139) {
+                switch (alt142) {
             	case 1 :
-            	    // InternalSignalDSL.g:17739:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    // InternalSignalDSL.g:18138:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
             	    {
-            	    pushFollow(FOLLOW_117);
+            	    pushFollow(FOLLOW_120);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
 
             	    state._fsp--;
@@ -58464,7 +59745,7 @@
             	    break;
 
             	default :
-            	    break loop139;
+            	    break loop142;
                 }
             } while (true);
 
@@ -58493,16 +59774,16 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0"
-    // InternalSignalDSL.g:17748:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
+    // InternalSignalDSL.g:18147:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17752:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
-            // InternalSignalDSL.g:17753:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            // InternalSignalDSL.g:18151:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalSignalDSL.g:18152:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
             {
-            pushFollow(FOLLOW_116);
+            pushFollow(FOLLOW_119);
             rule__JvmWildcardTypeReference__Group_2_1__0__Impl();
 
             state._fsp--;
@@ -58531,23 +59812,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0__Impl"
-    // InternalSignalDSL.g:17760:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
+    // InternalSignalDSL.g:18159:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17764:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
-            // InternalSignalDSL.g:17765:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalSignalDSL.g:18163:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalSignalDSL.g:18164:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
             {
-            // InternalSignalDSL.g:17765:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
-            // InternalSignalDSL.g:17766:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalSignalDSL.g:18164:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalSignalDSL.g:18165:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
             }
-            // InternalSignalDSL.g:17767:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
-            // InternalSignalDSL.g:17767:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
+            // InternalSignalDSL.g:18166:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalSignalDSL.g:18166:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0();
@@ -58582,14 +59863,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1"
-    // InternalSignalDSL.g:17775:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
+    // InternalSignalDSL.g:18174:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17779:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
-            // InternalSignalDSL.g:17780:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
+            // InternalSignalDSL.g:18178:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalSignalDSL.g:18179:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_1__1__Impl();
@@ -58615,37 +59896,37 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1__Impl"
-    // InternalSignalDSL.g:17786:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
+    // InternalSignalDSL.g:18185:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17790:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
-            // InternalSignalDSL.g:17791:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalSignalDSL.g:18189:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalSignalDSL.g:18190:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
             {
-            // InternalSignalDSL.g:17791:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
-            // InternalSignalDSL.g:17792:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            // InternalSignalDSL.g:18190:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalSignalDSL.g:18191:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
             }
-            // InternalSignalDSL.g:17793:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
-            loop140:
+            // InternalSignalDSL.g:18192:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            loop143:
             do {
-                int alt140=2;
-                int LA140_0 = input.LA(1);
+                int alt143=2;
+                int LA143_0 = input.LA(1);
 
-                if ( (LA140_0==106) ) {
-                    alt140=1;
+                if ( (LA143_0==104) ) {
+                    alt143=1;
                 }
 
 
-                switch (alt140) {
+                switch (alt143) {
             	case 1 :
-            	    // InternalSignalDSL.g:17793:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    // InternalSignalDSL.g:18192:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
             	    {
-            	    pushFollow(FOLLOW_117);
+            	    pushFollow(FOLLOW_120);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
 
             	    state._fsp--;
@@ -58655,7 +59936,7 @@
             	    break;
 
             	default :
-            	    break loop140;
+            	    break loop143;
                 }
             } while (true);
 
@@ -58684,16 +59965,16 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0"
-    // InternalSignalDSL.g:17802:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
+    // InternalSignalDSL.g:18201:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
     public final void rule__JvmUpperBound__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17806:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
-            // InternalSignalDSL.g:17807:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            // InternalSignalDSL.g:18205:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalSignalDSL.g:18206:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__JvmUpperBound__Group__0__Impl();
 
             state._fsp--;
@@ -58722,17 +60003,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0__Impl"
-    // InternalSignalDSL.g:17814:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    // InternalSignalDSL.g:18213:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
     public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17818:1: ( ( 'extends' ) )
-            // InternalSignalDSL.g:17819:1: ( 'extends' )
+            // InternalSignalDSL.g:18217:1: ( ( 'extends' ) )
+            // InternalSignalDSL.g:18218:1: ( 'extends' )
             {
-            // InternalSignalDSL.g:17819:1: ( 'extends' )
-            // InternalSignalDSL.g:17820:2: 'extends'
+            // InternalSignalDSL.g:18218:1: ( 'extends' )
+            // InternalSignalDSL.g:18219:2: 'extends'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); 
@@ -58763,14 +60044,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1"
-    // InternalSignalDSL.g:17829:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    // InternalSignalDSL.g:18228:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
     public final void rule__JvmUpperBound__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17833:1: ( rule__JvmUpperBound__Group__1__Impl )
-            // InternalSignalDSL.g:17834:2: rule__JvmUpperBound__Group__1__Impl
+            // InternalSignalDSL.g:18232:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalSignalDSL.g:18233:2: rule__JvmUpperBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__1__Impl();
@@ -58796,23 +60077,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1__Impl"
-    // InternalSignalDSL.g:17840:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:18239:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17844:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:17845:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18243:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:18244:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:17845:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:17846:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18244:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18245:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:17847:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:17847:3: rule__JvmUpperBound__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:18246:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18246:3: rule__JvmUpperBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__TypeReferenceAssignment_1();
@@ -58847,16 +60128,16 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0"
-    // InternalSignalDSL.g:17856:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
+    // InternalSignalDSL.g:18255:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
     public final void rule__JvmUpperBoundAnded__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17860:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
-            // InternalSignalDSL.g:17861:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            // InternalSignalDSL.g:18259:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalSignalDSL.g:18260:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__JvmUpperBoundAnded__Group__0__Impl();
 
             state._fsp--;
@@ -58885,22 +60166,22 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0__Impl"
-    // InternalSignalDSL.g:17868:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalSignalDSL.g:18267:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17872:1: ( ( '&' ) )
-            // InternalSignalDSL.g:17873:1: ( '&' )
+            // InternalSignalDSL.g:18271:1: ( ( '&' ) )
+            // InternalSignalDSL.g:18272:1: ( '&' )
             {
-            // InternalSignalDSL.g:17873:1: ( '&' )
-            // InternalSignalDSL.g:17874:2: '&'
+            // InternalSignalDSL.g:18272:1: ( '&' )
+            // InternalSignalDSL.g:18273:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,106,FOLLOW_2); if (state.failed) return ;
+            match(input,104,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -58926,14 +60207,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1"
-    // InternalSignalDSL.g:17883:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    // InternalSignalDSL.g:18282:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
     public final void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17887:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
-            // InternalSignalDSL.g:17888:2: rule__JvmUpperBoundAnded__Group__1__Impl
+            // InternalSignalDSL.g:18286:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalSignalDSL.g:18287:2: rule__JvmUpperBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__1__Impl();
@@ -58959,23 +60240,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1__Impl"
-    // InternalSignalDSL.g:17894:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:18293:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17898:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:17899:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18297:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:18298:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:17899:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:17900:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18298:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18299:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:17901:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:17901:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:18300:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18300:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__TypeReferenceAssignment_1();
@@ -59010,16 +60291,16 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0"
-    // InternalSignalDSL.g:17910:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
+    // InternalSignalDSL.g:18309:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
     public final void rule__JvmLowerBound__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17914:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
-            // InternalSignalDSL.g:17915:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            // InternalSignalDSL.g:18313:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalSignalDSL.g:18314:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__JvmLowerBound__Group__0__Impl();
 
             state._fsp--;
@@ -59048,17 +60329,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0__Impl"
-    // InternalSignalDSL.g:17922:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    // InternalSignalDSL.g:18321:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
     public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17926:1: ( ( 'super' ) )
-            // InternalSignalDSL.g:17927:1: ( 'super' )
+            // InternalSignalDSL.g:18325:1: ( ( 'super' ) )
+            // InternalSignalDSL.g:18326:1: ( 'super' )
             {
-            // InternalSignalDSL.g:17927:1: ( 'super' )
-            // InternalSignalDSL.g:17928:2: 'super'
+            // InternalSignalDSL.g:18326:1: ( 'super' )
+            // InternalSignalDSL.g:18327:2: 'super'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); 
@@ -59089,14 +60370,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1"
-    // InternalSignalDSL.g:17937:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    // InternalSignalDSL.g:18336:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
     public final void rule__JvmLowerBound__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17941:1: ( rule__JvmLowerBound__Group__1__Impl )
-            // InternalSignalDSL.g:17942:2: rule__JvmLowerBound__Group__1__Impl
+            // InternalSignalDSL.g:18340:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalSignalDSL.g:18341:2: rule__JvmLowerBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__1__Impl();
@@ -59122,23 +60403,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1__Impl"
-    // InternalSignalDSL.g:17948:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:18347:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17952:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:17953:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18351:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:18352:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:17953:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:17954:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18352:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18353:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:17955:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:17955:3: rule__JvmLowerBound__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:18354:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18354:3: rule__JvmLowerBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__TypeReferenceAssignment_1();
@@ -59173,16 +60454,16 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0"
-    // InternalSignalDSL.g:17964:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
+    // InternalSignalDSL.g:18363:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
     public final void rule__JvmLowerBoundAnded__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17968:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
-            // InternalSignalDSL.g:17969:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            // InternalSignalDSL.g:18367:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalSignalDSL.g:18368:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
             {
-            pushFollow(FOLLOW_52);
+            pushFollow(FOLLOW_55);
             rule__JvmLowerBoundAnded__Group__0__Impl();
 
             state._fsp--;
@@ -59211,22 +60492,22 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0__Impl"
-    // InternalSignalDSL.g:17976:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalSignalDSL.g:18375:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17980:1: ( ( '&' ) )
-            // InternalSignalDSL.g:17981:1: ( '&' )
+            // InternalSignalDSL.g:18379:1: ( ( '&' ) )
+            // InternalSignalDSL.g:18380:1: ( '&' )
             {
-            // InternalSignalDSL.g:17981:1: ( '&' )
-            // InternalSignalDSL.g:17982:2: '&'
+            // InternalSignalDSL.g:18380:1: ( '&' )
+            // InternalSignalDSL.g:18381:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,106,FOLLOW_2); if (state.failed) return ;
+            match(input,104,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -59252,14 +60533,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1"
-    // InternalSignalDSL.g:17991:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    // InternalSignalDSL.g:18390:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
     public final void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17995:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
-            // InternalSignalDSL.g:17996:2: rule__JvmLowerBoundAnded__Group__1__Impl
+            // InternalSignalDSL.g:18394:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalSignalDSL.g:18395:2: rule__JvmLowerBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__1__Impl();
@@ -59285,23 +60566,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1__Impl"
-    // InternalSignalDSL.g:18002:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:18401:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18006:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:18007:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18405:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:18406:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:18007:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:18008:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18406:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18407:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:18009:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:18009:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:18408:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18408:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__TypeReferenceAssignment_1();
@@ -59336,16 +60617,16 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0"
-    // InternalSignalDSL.g:18018:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
+    // InternalSignalDSL.g:18417:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
     public final void rule__QualifiedNameWithWildcard__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18022:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
-            // InternalSignalDSL.g:18023:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            // InternalSignalDSL.g:18421:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalSignalDSL.g:18422:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
             {
-            pushFollow(FOLLOW_111);
+            pushFollow(FOLLOW_114);
             rule__QualifiedNameWithWildcard__Group__0__Impl();
 
             state._fsp--;
@@ -59374,17 +60655,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0__Impl"
-    // InternalSignalDSL.g:18030:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    // InternalSignalDSL.g:18429:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
     public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18034:1: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:18035:1: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18433:1: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18434:1: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:18035:1: ( ruleQualifiedName )
-            // InternalSignalDSL.g:18036:2: ruleQualifiedName
+            // InternalSignalDSL.g:18434:1: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18435:2: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
@@ -59419,16 +60700,16 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1"
-    // InternalSignalDSL.g:18045:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
+    // InternalSignalDSL.g:18444:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
     public final void rule__QualifiedNameWithWildcard__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18049:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
-            // InternalSignalDSL.g:18050:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            // InternalSignalDSL.g:18448:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalSignalDSL.g:18449:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
             {
-            pushFollow(FOLLOW_118);
+            pushFollow(FOLLOW_121);
             rule__QualifiedNameWithWildcard__Group__1__Impl();
 
             state._fsp--;
@@ -59457,17 +60738,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1__Impl"
-    // InternalSignalDSL.g:18057:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:18456:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18061:1: ( ( '.' ) )
-            // InternalSignalDSL.g:18062:1: ( '.' )
+            // InternalSignalDSL.g:18460:1: ( ( '.' ) )
+            // InternalSignalDSL.g:18461:1: ( '.' )
             {
-            // InternalSignalDSL.g:18062:1: ( '.' )
-            // InternalSignalDSL.g:18063:2: '.'
+            // InternalSignalDSL.g:18461:1: ( '.' )
+            // InternalSignalDSL.g:18462:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
@@ -59498,14 +60779,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2"
-    // InternalSignalDSL.g:18072:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    // InternalSignalDSL.g:18471:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
     public final void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18076:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
-            // InternalSignalDSL.g:18077:2: rule__QualifiedNameWithWildcard__Group__2__Impl
+            // InternalSignalDSL.g:18475:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalSignalDSL.g:18476:2: rule__QualifiedNameWithWildcard__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__2__Impl();
@@ -59531,17 +60812,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2__Impl"
-    // InternalSignalDSL.g:18083:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    // InternalSignalDSL.g:18482:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18087:1: ( ( '*' ) )
-            // InternalSignalDSL.g:18088:1: ( '*' )
+            // InternalSignalDSL.g:18486:1: ( ( '*' ) )
+            // InternalSignalDSL.g:18487:1: ( '*' )
             {
-            // InternalSignalDSL.g:18088:1: ( '*' )
-            // InternalSignalDSL.g:18089:2: '*'
+            // InternalSignalDSL.g:18487:1: ( '*' )
+            // InternalSignalDSL.g:18488:2: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
@@ -59572,16 +60853,16 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0"
-    // InternalSignalDSL.g:18099:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
+    // InternalSignalDSL.g:18498:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
     public final void rule__QualifiedNameInStaticImport__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18103:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
-            // InternalSignalDSL.g:18104:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            // InternalSignalDSL.g:18502:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalSignalDSL.g:18503:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
             {
-            pushFollow(FOLLOW_111);
+            pushFollow(FOLLOW_114);
             rule__QualifiedNameInStaticImport__Group__0__Impl();
 
             state._fsp--;
@@ -59610,17 +60891,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0__Impl"
-    // InternalSignalDSL.g:18111:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    // InternalSignalDSL.g:18510:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18115:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:18116:1: ( ruleValidID )
+            // InternalSignalDSL.g:18514:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:18515:1: ( ruleValidID )
             {
-            // InternalSignalDSL.g:18116:1: ( ruleValidID )
-            // InternalSignalDSL.g:18117:2: ruleValidID
+            // InternalSignalDSL.g:18515:1: ( ruleValidID )
+            // InternalSignalDSL.g:18516:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
@@ -59655,14 +60936,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1"
-    // InternalSignalDSL.g:18126:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    // InternalSignalDSL.g:18525:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
     public final void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18130:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
-            // InternalSignalDSL.g:18131:2: rule__QualifiedNameInStaticImport__Group__1__Impl
+            // InternalSignalDSL.g:18529:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalSignalDSL.g:18530:2: rule__QualifiedNameInStaticImport__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameInStaticImport__Group__1__Impl();
@@ -59688,17 +60969,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1__Impl"
-    // InternalSignalDSL.g:18137:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:18536:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18141:1: ( ( '.' ) )
-            // InternalSignalDSL.g:18142:1: ( '.' )
+            // InternalSignalDSL.g:18540:1: ( ( '.' ) )
+            // InternalSignalDSL.g:18541:1: ( '.' )
             {
-            // InternalSignalDSL.g:18142:1: ( '.' )
-            // InternalSignalDSL.g:18143:2: '.'
+            // InternalSignalDSL.g:18541:1: ( '.' )
+            // InternalSignalDSL.g:18542:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
@@ -59729,17 +61010,17 @@
 
 
     // $ANTLR start "rule__SignalModel__ImportSectionAssignment_0"
-    // InternalSignalDSL.g:18153:1: rule__SignalModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
+    // InternalSignalDSL.g:18552:1: rule__SignalModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
     public final void rule__SignalModel__ImportSectionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18157:1: ( ( ruleXImportSection ) )
-            // InternalSignalDSL.g:18158:2: ( ruleXImportSection )
+            // InternalSignalDSL.g:18556:1: ( ( ruleXImportSection ) )
+            // InternalSignalDSL.g:18557:2: ( ruleXImportSection )
             {
-            // InternalSignalDSL.g:18158:2: ( ruleXImportSection )
-            // InternalSignalDSL.g:18159:3: ruleXImportSection
+            // InternalSignalDSL.g:18557:2: ( ruleXImportSection )
+            // InternalSignalDSL.g:18558:3: ruleXImportSection
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
@@ -59774,17 +61055,17 @@
 
 
     // $ANTLR start "rule__SignalModel__PackagesAssignment_1"
-    // InternalSignalDSL.g:18168:1: rule__SignalModel__PackagesAssignment_1 : ( ruleSignalPackage ) ;
+    // InternalSignalDSL.g:18567:1: rule__SignalModel__PackagesAssignment_1 : ( ruleSignalPackage ) ;
     public final void rule__SignalModel__PackagesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18172:1: ( ( ruleSignalPackage ) )
-            // InternalSignalDSL.g:18173:2: ( ruleSignalPackage )
+            // InternalSignalDSL.g:18571:1: ( ( ruleSignalPackage ) )
+            // InternalSignalDSL.g:18572:2: ( ruleSignalPackage )
             {
-            // InternalSignalDSL.g:18173:2: ( ruleSignalPackage )
-            // InternalSignalDSL.g:18174:3: ruleSignalPackage
+            // InternalSignalDSL.g:18572:2: ( ruleSignalPackage )
+            // InternalSignalDSL.g:18573:3: ruleSignalPackage
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getPackagesSignalPackageParserRuleCall_1_0()); 
@@ -59819,17 +61100,17 @@
 
 
     // $ANTLR start "rule__SignalPackage__NameAssignment_2"
-    // InternalSignalDSL.g:18183:1: rule__SignalPackage__NameAssignment_2 : ( ruleQualifiedName ) ;
+    // InternalSignalDSL.g:18582:1: rule__SignalPackage__NameAssignment_2 : ( ruleQualifiedName ) ;
     public final void rule__SignalPackage__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18187:1: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:18188:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18586:1: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18587:2: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:18188:2: ( ruleQualifiedName )
-            // InternalSignalDSL.g:18189:3: ruleQualifiedName
+            // InternalSignalDSL.g:18587:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18588:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
@@ -59863,29 +61144,29 @@
     // $ANTLR end "rule__SignalPackage__NameAssignment_2"
 
 
-    // $ANTLR start "rule__SignalPackage__WatchersAssignment_3_1"
-    // InternalSignalDSL.g:18198:1: rule__SignalPackage__WatchersAssignment_3_1 : ( ruleSignalWatcher ) ;
-    public final void rule__SignalPackage__WatchersAssignment_3_1() throws RecognitionException {
+    // $ANTLR start "rule__SignalPackage__SignalsAssignment_3_1"
+    // InternalSignalDSL.g:18597:1: rule__SignalPackage__SignalsAssignment_3_1 : ( ruleSignalDefinition ) ;
+    public final void rule__SignalPackage__SignalsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18202:1: ( ( ruleSignalWatcher ) )
-            // InternalSignalDSL.g:18203:2: ( ruleSignalWatcher )
+            // InternalSignalDSL.g:18601:1: ( ( ruleSignalDefinition ) )
+            // InternalSignalDSL.g:18602:2: ( ruleSignalDefinition )
             {
-            // InternalSignalDSL.g:18203:2: ( ruleSignalWatcher )
-            // InternalSignalDSL.g:18204:3: ruleSignalWatcher
+            // InternalSignalDSL.g:18602:2: ( ruleSignalDefinition )
+            // InternalSignalDSL.g:18603:3: ruleSignalDefinition
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalPackageAccess().getWatchersSignalWatcherParserRuleCall_3_1_0()); 
+               before(grammarAccess.getSignalPackageAccess().getSignalsSignalDefinitionParserRuleCall_3_1_0()); 
             }
             pushFollow(FOLLOW_2);
-            ruleSignalWatcher();
+            ruleSignalDefinition();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalPackageAccess().getWatchersSignalWatcherParserRuleCall_3_1_0()); 
+               after(grammarAccess.getSignalPackageAccess().getSignalsSignalDefinitionParserRuleCall_3_1_0()); 
             }
 
             }
@@ -59905,21 +61186,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalPackage__WatchersAssignment_3_1"
+    // $ANTLR end "rule__SignalPackage__SignalsAssignment_3_1"
 
 
     // $ANTLR start "rule__SignalWatcher__NameAssignment_2"
-    // InternalSignalDSL.g:18213:1: rule__SignalWatcher__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    // InternalSignalDSL.g:18612:1: rule__SignalWatcher__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
     public final void rule__SignalWatcher__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18217:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalSignalDSL.g:18218:2: ( ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:18616:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalSignalDSL.g:18617:2: ( ruleTRANSLATABLEID )
             {
-            // InternalSignalDSL.g:18218:2: ( ruleTRANSLATABLEID )
-            // InternalSignalDSL.g:18219:3: ruleTRANSLATABLEID
+            // InternalSignalDSL.g:18617:2: ( ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:18618:3: ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
@@ -59953,25 +61234,70 @@
     // $ANTLR end "rule__SignalWatcher__NameAssignment_2"
 
 
-    // $ANTLR start "rule__SignalWatcher__DirectoryAssignment_4"
-    // InternalSignalDSL.g:18228:1: rule__SignalWatcher__DirectoryAssignment_4 : ( RULE_STRING ) ;
-    public final void rule__SignalWatcher__DirectoryAssignment_4() throws RecognitionException {
+    // $ANTLR start "rule__SignalWatcher__DefinitionAssignment_3"
+    // InternalSignalDSL.g:18627:1: rule__SignalWatcher__DefinitionAssignment_3 : ( ruleWatcherDefinition ) ;
+    public final void rule__SignalWatcher__DefinitionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18232:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:18233:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18631:1: ( ( ruleWatcherDefinition ) )
+            // InternalSignalDSL.g:18632:2: ( ruleWatcherDefinition )
             {
-            // InternalSignalDSL.g:18233:2: ( RULE_STRING )
-            // InternalSignalDSL.g:18234:3: RULE_STRING
+            // InternalSignalDSL.g:18632:2: ( ruleWatcherDefinition )
+            // InternalSignalDSL.g:18633:3: ruleWatcherDefinition
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getDirectorySTRINGTerminalRuleCall_4_0()); 
+               before(grammarAccess.getSignalWatcherAccess().getDefinitionWatcherDefinitionParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleWatcherDefinition();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalWatcherAccess().getDefinitionWatcherDefinitionParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalWatcher__DefinitionAssignment_3"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__FilemaskAssignment_2"
+    // InternalSignalDSL.g:18642:1: rule__WatcherWithFileMask__FilemaskAssignment_2 : ( RULE_STRING ) ;
+    public final void rule__WatcherWithFileMask__FilemaskAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18646:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:18647:2: ( RULE_STRING )
+            {
+            // InternalSignalDSL.g:18647:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18648:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskSTRINGTerminalRuleCall_2_0()); 
             }
             match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getDirectorySTRINGTerminalRuleCall_4_0()); 
+               after(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskSTRINGTerminalRuleCall_2_0()); 
             }
 
             }
@@ -59991,159 +61317,24 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalWatcher__DirectoryAssignment_4"
+    // $ANTLR end "rule__WatcherWithFileMask__FilemaskAssignment_2"
 
 
-    // $ANTLR start "rule__SignalWatcher__HandlersAssignment_6"
-    // InternalSignalDSL.g:18243:1: rule__SignalWatcher__HandlersAssignment_6 : ( ruleSignalHandler ) ;
-    public final void rule__SignalWatcher__HandlersAssignment_6() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileMask__ExecutiontypeAssignment_3"
+    // InternalSignalDSL.g:18657:1: rule__WatcherWithFileMask__ExecutiontypeAssignment_3 : ( ruleSignalExecutionTypeEnum ) ;
+    public final void rule__WatcherWithFileMask__ExecutiontypeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18247:1: ( ( ruleSignalHandler ) )
-            // InternalSignalDSL.g:18248:2: ( ruleSignalHandler )
+            // InternalSignalDSL.g:18661:1: ( ( ruleSignalExecutionTypeEnum ) )
+            // InternalSignalDSL.g:18662:2: ( ruleSignalExecutionTypeEnum )
             {
-            // InternalSignalDSL.g:18248:2: ( ruleSignalHandler )
-            // InternalSignalDSL.g:18249:3: ruleSignalHandler
+            // InternalSignalDSL.g:18662:2: ( ruleSignalExecutionTypeEnum )
+            // InternalSignalDSL.g:18663:3: ruleSignalExecutionTypeEnum
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); 
-            }
-            pushFollow(FOLLOW_2);
-            ruleSignalHandler();
-
-            state._fsp--;
-            if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__HandlersAssignment_6"
-
-
-    // $ANTLR start "rule__SignalHandler__NameAssignment_2"
-    // InternalSignalDSL.g:18258:1: rule__SignalHandler__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
-    public final void rule__SignalHandler__NameAssignment_2() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:18262:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalSignalDSL.g:18263:2: ( ruleTRANSLATABLEID )
-            {
-            // InternalSignalDSL.g:18263:2: ( ruleTRANSLATABLEID )
-            // InternalSignalDSL.g:18264:3: ruleTRANSLATABLEID
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-            }
-            pushFollow(FOLLOW_2);
-            ruleTRANSLATABLEID();
-
-            state._fsp--;
-            if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__NameAssignment_2"
-
-
-    // $ANTLR start "rule__SignalHandler__InterchangesAssignment_3"
-    // InternalSignalDSL.g:18273:1: rule__SignalHandler__InterchangesAssignment_3 : ( ruleSignalDatainterchange ) ;
-    public final void rule__SignalHandler__InterchangesAssignment_3() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:18277:1: ( ( ruleSignalDatainterchange ) )
-            // InternalSignalDSL.g:18278:2: ( ruleSignalDatainterchange )
-            {
-            // InternalSignalDSL.g:18278:2: ( ruleSignalDatainterchange )
-            // InternalSignalDSL.g:18279:3: ruleSignalDatainterchange
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); 
-            }
-            pushFollow(FOLLOW_2);
-            ruleSignalDatainterchange();
-
-            state._fsp--;
-            if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__InterchangesAssignment_3"
-
-
-    // $ANTLR start "rule__SignalHandler__ExecutiontypeAssignment_4"
-    // InternalSignalDSL.g:18288:1: rule__SignalHandler__ExecutiontypeAssignment_4 : ( ruleSignalExecutionTypeEnum ) ;
-    public final void rule__SignalHandler__ExecutiontypeAssignment_4() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:18292:1: ( ( ruleSignalExecutionTypeEnum ) )
-            // InternalSignalDSL.g:18293:2: ( ruleSignalExecutionTypeEnum )
-            {
-            // InternalSignalDSL.g:18293:2: ( ruleSignalExecutionTypeEnum )
-            // InternalSignalDSL.g:18294:3: ruleSignalExecutionTypeEnum
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); 
+               before(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); 
             }
             pushFollow(FOLLOW_2);
             ruleSignalExecutionTypeEnum();
@@ -60151,7 +61342,7 @@
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); 
+               after(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); 
             }
 
             }
@@ -60171,32 +61362,85 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__ExecutiontypeAssignment_4"
+    // $ANTLR end "rule__WatcherWithFileMask__ExecutiontypeAssignment_3"
 
 
-    // $ANTLR start "rule__SignalHandler__TriggerpolicyAssignment_5"
-    // InternalSignalDSL.g:18303:1: rule__SignalHandler__TriggerpolicyAssignment_5 : ( ruleTriggerPolicy ) ;
-    public final void rule__SignalHandler__TriggerpolicyAssignment_5() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileMask__InterchangegroupAssignment_5"
+    // InternalSignalDSL.g:18672:1: rule__WatcherWithFileMask__InterchangegroupAssignment_5 : ( ( RULE_ID ) ) ;
+    public final void rule__WatcherWithFileMask__InterchangegroupAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18307:1: ( ( ruleTriggerPolicy ) )
-            // InternalSignalDSL.g:18308:2: ( ruleTriggerPolicy )
+            // InternalSignalDSL.g:18676:1: ( ( ( RULE_ID ) ) )
+            // InternalSignalDSL.g:18677:2: ( ( RULE_ID ) )
             {
-            // InternalSignalDSL.g:18308:2: ( ruleTriggerPolicy )
-            // InternalSignalDSL.g:18309:3: ruleTriggerPolicy
+            // InternalSignalDSL.g:18677:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:18678:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); 
+               before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); 
+            }
+            // InternalSignalDSL.g:18679:3: ( RULE_ID )
+            // InternalSignalDSL.g:18680:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileMask__InterchangegroupAssignment_5"
+
+
+    // $ANTLR start "rule__WatcherWithFileMask__InterchangeAssignment_7"
+    // InternalSignalDSL.g:18691:1: rule__WatcherWithFileMask__InterchangeAssignment_7 : ( ruleSignalDatainterchange ) ;
+    public final void rule__WatcherWithFileMask__InterchangeAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18695:1: ( ( ruleSignalDatainterchange ) )
+            // InternalSignalDSL.g:18696:2: ( ruleSignalDatainterchange )
+            {
+            // InternalSignalDSL.g:18696:2: ( ruleSignalDatainterchange )
+            // InternalSignalDSL.g:18697:3: ruleSignalDatainterchange
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeSignalDatainterchangeParserRuleCall_7_0()); 
             }
             pushFollow(FOLLOW_2);
-            ruleTriggerPolicy();
+            ruleSignalDatainterchange();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); 
+               after(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeSignalDatainterchangeParserRuleCall_7_0()); 
             }
 
             }
@@ -60216,28 +61460,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__TriggerpolicyAssignment_5"
+    // $ANTLR end "rule__WatcherWithFileMask__InterchangeAssignment_7"
 
 
-    // $ANTLR start "rule__TriggerFile__FilemaskAssignment_1"
-    // InternalSignalDSL.g:18318:1: rule__TriggerFile__FilemaskAssignment_1 : ( RULE_STRING ) ;
-    public final void rule__TriggerFile__FilemaskAssignment_1() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__FilenameAssignment_2"
+    // InternalSignalDSL.g:18706:1: rule__WatcherWithFileName__FilenameAssignment_2 : ( RULE_STRING ) ;
+    public final void rule__WatcherWithFileName__FilenameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18322:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:18323:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18710:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:18711:2: ( RULE_STRING )
             {
-            // InternalSignalDSL.g:18323:2: ( RULE_STRING )
-            // InternalSignalDSL.g:18324:3: RULE_STRING
+            // InternalSignalDSL.g:18711:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18712:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); 
+               before(grammarAccess.getWatcherWithFileNameAccess().getFilenameSTRINGTerminalRuleCall_2_0()); 
             }
             match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); 
+               after(grammarAccess.getWatcherWithFileNameAccess().getFilenameSTRINGTerminalRuleCall_2_0()); 
             }
 
             }
@@ -60257,32 +61501,32 @@
         }
         return ;
     }
-    // $ANTLR end "rule__TriggerFile__FilemaskAssignment_1"
+    // $ANTLR end "rule__WatcherWithFileName__FilenameAssignment_2"
 
 
-    // $ANTLR start "rule__SignalScheduler__SchedulerAssignment_1"
-    // InternalSignalDSL.g:18333:1: rule__SignalScheduler__SchedulerAssignment_1 : ( ruleScheduler ) ;
-    public final void rule__SignalScheduler__SchedulerAssignment_1() throws RecognitionException {
+    // $ANTLR start "rule__WatcherWithFileName__ExecutiontypeAssignment_3"
+    // InternalSignalDSL.g:18721:1: rule__WatcherWithFileName__ExecutiontypeAssignment_3 : ( ruleSignalExecutionTypeEnum ) ;
+    public final void rule__WatcherWithFileName__ExecutiontypeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18337:1: ( ( ruleScheduler ) )
-            // InternalSignalDSL.g:18338:2: ( ruleScheduler )
+            // InternalSignalDSL.g:18725:1: ( ( ruleSignalExecutionTypeEnum ) )
+            // InternalSignalDSL.g:18726:2: ( ruleSignalExecutionTypeEnum )
             {
-            // InternalSignalDSL.g:18338:2: ( ruleScheduler )
-            // InternalSignalDSL.g:18339:3: ruleScheduler
+            // InternalSignalDSL.g:18726:2: ( ruleSignalExecutionTypeEnum )
+            // InternalSignalDSL.g:18727:3: ruleSignalExecutionTypeEnum
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); 
+               before(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); 
             }
             pushFollow(FOLLOW_2);
-            ruleScheduler();
+            ruleSignalExecutionTypeEnum();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); 
+               after(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0()); 
             }
 
             }
@@ -60302,21 +61546,352 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalScheduler__SchedulerAssignment_1"
+    // $ANTLR end "rule__WatcherWithFileName__ExecutiontypeAssignment_3"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__InterchangegroupAssignment_5"
+    // InternalSignalDSL.g:18736:1: rule__WatcherWithFileName__InterchangegroupAssignment_5 : ( ( RULE_ID ) ) ;
+    public final void rule__WatcherWithFileName__InterchangegroupAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18740:1: ( ( ( RULE_ID ) ) )
+            // InternalSignalDSL.g:18741:2: ( ( RULE_ID ) )
+            {
+            // InternalSignalDSL.g:18741:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:18742:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); 
+            }
+            // InternalSignalDSL.g:18743:3: ( RULE_ID )
+            // InternalSignalDSL.g:18744:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__InterchangegroupAssignment_5"
+
+
+    // $ANTLR start "rule__WatcherWithFileName__InterchangesAssignment_7"
+    // InternalSignalDSL.g:18755:1: rule__WatcherWithFileName__InterchangesAssignment_7 : ( ruleSignalDatainterchange ) ;
+    public final void rule__WatcherWithFileName__InterchangesAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18759:1: ( ( ruleSignalDatainterchange ) )
+            // InternalSignalDSL.g:18760:2: ( ruleSignalDatainterchange )
+            {
+            // InternalSignalDSL.g:18760:2: ( ruleSignalDatainterchange )
+            // InternalSignalDSL.g:18761:3: ruleSignalDatainterchange
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWatcherWithFileNameAccess().getInterchangesSignalDatainterchangeParserRuleCall_7_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSignalDatainterchange();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWatcherWithFileNameAccess().getInterchangesSignalDatainterchangeParserRuleCall_7_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WatcherWithFileName__InterchangesAssignment_7"
+
+
+    // $ANTLR start "rule__SignalScheduler__NameAssignment_2"
+    // InternalSignalDSL.g:18770:1: rule__SignalScheduler__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__SignalScheduler__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18774:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalSignalDSL.g:18775:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalSignalDSL.g:18775:2: ( ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:18776:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__NameAssignment_2"
+
+
+    // $ANTLR start "rule__SignalScheduler__SchedulertypeAssignment_3"
+    // InternalSignalDSL.g:18785:1: rule__SignalScheduler__SchedulertypeAssignment_3 : ( ruleSchedulerType ) ;
+    public final void rule__SignalScheduler__SchedulertypeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18789:1: ( ( ruleSchedulerType ) )
+            // InternalSignalDSL.g:18790:2: ( ruleSchedulerType )
+            {
+            // InternalSignalDSL.g:18790:2: ( ruleSchedulerType )
+            // InternalSignalDSL.g:18791:3: ruleSchedulerType
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getSchedulertypeSchedulerTypeParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSchedulerType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getSchedulertypeSchedulerTypeParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__SchedulertypeAssignment_3"
+
+
+    // $ANTLR start "rule__SignalScheduler__ExecutiontypeAssignment_4"
+    // InternalSignalDSL.g:18800:1: rule__SignalScheduler__ExecutiontypeAssignment_4 : ( ruleSignalExecutionTypeEnum ) ;
+    public final void rule__SignalScheduler__ExecutiontypeAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18804:1: ( ( ruleSignalExecutionTypeEnum ) )
+            // InternalSignalDSL.g:18805:2: ( ruleSignalExecutionTypeEnum )
+            {
+            // InternalSignalDSL.g:18805:2: ( ruleSignalExecutionTypeEnum )
+            // InternalSignalDSL.g:18806:3: ruleSignalExecutionTypeEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSignalExecutionTypeEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__ExecutiontypeAssignment_4"
+
+
+    // $ANTLR start "rule__SignalScheduler__InterchangegroupAssignment_6"
+    // InternalSignalDSL.g:18815:1: rule__SignalScheduler__InterchangegroupAssignment_6 : ( ( RULE_ID ) ) ;
+    public final void rule__SignalScheduler__InterchangegroupAssignment_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18819:1: ( ( ( RULE_ID ) ) )
+            // InternalSignalDSL.g:18820:2: ( ( RULE_ID ) )
+            {
+            // InternalSignalDSL.g:18820:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:18821:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupCrossReference_6_0()); 
+            }
+            // InternalSignalDSL.g:18822:3: ( RULE_ID )
+            // InternalSignalDSL.g:18823:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_6_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_6_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupCrossReference_6_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__InterchangegroupAssignment_6"
+
+
+    // $ANTLR start "rule__SignalScheduler__InterchangesAssignment_8"
+    // InternalSignalDSL.g:18834:1: rule__SignalScheduler__InterchangesAssignment_8 : ( ruleSignalDatainterchange ) ;
+    public final void rule__SignalScheduler__InterchangesAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18838:1: ( ( ruleSignalDatainterchange ) )
+            // InternalSignalDSL.g:18839:2: ( ruleSignalDatainterchange )
+            {
+            // InternalSignalDSL.g:18839:2: ( ruleSignalDatainterchange )
+            // InternalSignalDSL.g:18840:3: ruleSignalDatainterchange
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getInterchangesSignalDatainterchangeParserRuleCall_8_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSignalDatainterchange();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getInterchangesSignalDatainterchangeParserRuleCall_8_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__InterchangesAssignment_8"
 
 
     // $ANTLR start "rule__CronScheduler__ExpressionAssignment_1"
-    // InternalSignalDSL.g:18348:1: rule__CronScheduler__ExpressionAssignment_1 : ( RULE_STRING ) ;
+    // InternalSignalDSL.g:18849:1: rule__CronScheduler__ExpressionAssignment_1 : ( RULE_STRING ) ;
     public final void rule__CronScheduler__ExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18352:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:18353:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18853:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:18854:2: ( RULE_STRING )
             {
-            // InternalSignalDSL.g:18353:2: ( RULE_STRING )
-            // InternalSignalDSL.g:18354:3: RULE_STRING
+            // InternalSignalDSL.g:18854:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18855:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0()); 
@@ -60347,17 +61922,17 @@
 
 
     // $ANTLR start "rule__HourlyScheduler__MinuteAssignment_1"
-    // InternalSignalDSL.g:18363:1: rule__HourlyScheduler__MinuteAssignment_1 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18864:1: rule__HourlyScheduler__MinuteAssignment_1 : ( RULE_INT ) ;
     public final void rule__HourlyScheduler__MinuteAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18367:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18368:2: ( RULE_INT )
+            // InternalSignalDSL.g:18868:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18869:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18368:2: ( RULE_INT )
-            // InternalSignalDSL.g:18369:3: RULE_INT
+            // InternalSignalDSL.g:18869:2: ( RULE_INT )
+            // InternalSignalDSL.g:18870:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0()); 
@@ -60388,17 +61963,17 @@
 
 
     // $ANTLR start "rule__DailyScheduler__HourAssignment_1"
-    // InternalSignalDSL.g:18378:1: rule__DailyScheduler__HourAssignment_1 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18879:1: rule__DailyScheduler__HourAssignment_1 : ( RULE_INT ) ;
     public final void rule__DailyScheduler__HourAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18382:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18383:2: ( RULE_INT )
+            // InternalSignalDSL.g:18883:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18884:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18383:2: ( RULE_INT )
-            // InternalSignalDSL.g:18384:3: RULE_INT
+            // InternalSignalDSL.g:18884:2: ( RULE_INT )
+            // InternalSignalDSL.g:18885:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0()); 
@@ -60429,17 +62004,17 @@
 
 
     // $ANTLR start "rule__DailyScheduler__MinuteAssignment_3"
-    // InternalSignalDSL.g:18393:1: rule__DailyScheduler__MinuteAssignment_3 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18894:1: rule__DailyScheduler__MinuteAssignment_3 : ( RULE_INT ) ;
     public final void rule__DailyScheduler__MinuteAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18397:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18398:2: ( RULE_INT )
+            // InternalSignalDSL.g:18898:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18899:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18398:2: ( RULE_INT )
-            // InternalSignalDSL.g:18399:3: RULE_INT
+            // InternalSignalDSL.g:18899:2: ( RULE_INT )
+            // InternalSignalDSL.g:18900:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0()); 
@@ -60470,17 +62045,17 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__DayofweekAssignment_1"
-    // InternalSignalDSL.g:18408:1: rule__WeeklyScheduler__DayofweekAssignment_1 : ( ruleDayOfWeekEnum ) ;
+    // InternalSignalDSL.g:18909:1: rule__WeeklyScheduler__DayofweekAssignment_1 : ( ruleDayOfWeekEnum ) ;
     public final void rule__WeeklyScheduler__DayofweekAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18412:1: ( ( ruleDayOfWeekEnum ) )
-            // InternalSignalDSL.g:18413:2: ( ruleDayOfWeekEnum )
+            // InternalSignalDSL.g:18913:1: ( ( ruleDayOfWeekEnum ) )
+            // InternalSignalDSL.g:18914:2: ( ruleDayOfWeekEnum )
             {
-            // InternalSignalDSL.g:18413:2: ( ruleDayOfWeekEnum )
-            // InternalSignalDSL.g:18414:3: ruleDayOfWeekEnum
+            // InternalSignalDSL.g:18914:2: ( ruleDayOfWeekEnum )
+            // InternalSignalDSL.g:18915:3: ruleDayOfWeekEnum
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0()); 
@@ -60515,17 +62090,17 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__HourAssignment_3"
-    // InternalSignalDSL.g:18423:1: rule__WeeklyScheduler__HourAssignment_3 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18924:1: rule__WeeklyScheduler__HourAssignment_3 : ( RULE_INT ) ;
     public final void rule__WeeklyScheduler__HourAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18427:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18428:2: ( RULE_INT )
+            // InternalSignalDSL.g:18928:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18929:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18428:2: ( RULE_INT )
-            // InternalSignalDSL.g:18429:3: RULE_INT
+            // InternalSignalDSL.g:18929:2: ( RULE_INT )
+            // InternalSignalDSL.g:18930:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0()); 
@@ -60556,17 +62131,17 @@
 
 
     // $ANTLR start "rule__WeeklyScheduler__MinuteAssignment_5"
-    // InternalSignalDSL.g:18438:1: rule__WeeklyScheduler__MinuteAssignment_5 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18939:1: rule__WeeklyScheduler__MinuteAssignment_5 : ( RULE_INT ) ;
     public final void rule__WeeklyScheduler__MinuteAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18442:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18443:2: ( RULE_INT )
+            // InternalSignalDSL.g:18943:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18944:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18443:2: ( RULE_INT )
-            // InternalSignalDSL.g:18444:3: RULE_INT
+            // InternalSignalDSL.g:18944:2: ( RULE_INT )
+            // InternalSignalDSL.g:18945:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); 
@@ -60597,17 +62172,17 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__DayofmonthAssignment_1"
-    // InternalSignalDSL.g:18453:1: rule__MonthlyScheduler__DayofmonthAssignment_1 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18954:1: rule__MonthlyScheduler__DayofmonthAssignment_1 : ( RULE_INT ) ;
     public final void rule__MonthlyScheduler__DayofmonthAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18457:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18458:2: ( RULE_INT )
+            // InternalSignalDSL.g:18958:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18959:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18458:2: ( RULE_INT )
-            // InternalSignalDSL.g:18459:3: RULE_INT
+            // InternalSignalDSL.g:18959:2: ( RULE_INT )
+            // InternalSignalDSL.g:18960:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0()); 
@@ -60638,17 +62213,17 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__HourAssignment_3"
-    // InternalSignalDSL.g:18468:1: rule__MonthlyScheduler__HourAssignment_3 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18969:1: rule__MonthlyScheduler__HourAssignment_3 : ( RULE_INT ) ;
     public final void rule__MonthlyScheduler__HourAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18472:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18473:2: ( RULE_INT )
+            // InternalSignalDSL.g:18973:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18974:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18473:2: ( RULE_INT )
-            // InternalSignalDSL.g:18474:3: RULE_INT
+            // InternalSignalDSL.g:18974:2: ( RULE_INT )
+            // InternalSignalDSL.g:18975:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0()); 
@@ -60679,17 +62254,17 @@
 
 
     // $ANTLR start "rule__MonthlyScheduler__MinuteAssignment_5"
-    // InternalSignalDSL.g:18483:1: rule__MonthlyScheduler__MinuteAssignment_5 : ( RULE_INT ) ;
+    // InternalSignalDSL.g:18984:1: rule__MonthlyScheduler__MinuteAssignment_5 : ( RULE_INT ) ;
     public final void rule__MonthlyScheduler__MinuteAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18487:1: ( ( RULE_INT ) )
-            // InternalSignalDSL.g:18488:2: ( RULE_INT )
+            // InternalSignalDSL.g:18988:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18989:2: ( RULE_INT )
             {
-            // InternalSignalDSL.g:18488:2: ( RULE_INT )
-            // InternalSignalDSL.g:18489:3: RULE_INT
+            // InternalSignalDSL.g:18989:2: ( RULE_INT )
+            // InternalSignalDSL.g:18990:3: RULE_INT
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); 
@@ -60720,17 +62295,17 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__DataActionAssignment_0"
-    // InternalSignalDSL.g:18498:1: rule__SignalDatainterchange__DataActionAssignment_0 : ( ruleSignalActionEnum ) ;
+    // InternalSignalDSL.g:18999:1: rule__SignalDatainterchange__DataActionAssignment_0 : ( ruleSignalActionEnum ) ;
     public final void rule__SignalDatainterchange__DataActionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18502:1: ( ( ruleSignalActionEnum ) )
-            // InternalSignalDSL.g:18503:2: ( ruleSignalActionEnum )
+            // InternalSignalDSL.g:19003:1: ( ( ruleSignalActionEnum ) )
+            // InternalSignalDSL.g:19004:2: ( ruleSignalActionEnum )
             {
-            // InternalSignalDSL.g:18503:2: ( ruleSignalActionEnum )
-            // InternalSignalDSL.g:18504:3: ruleSignalActionEnum
+            // InternalSignalDSL.g:19004:2: ( ruleSignalActionEnum )
+            // InternalSignalDSL.g:19005:3: ruleSignalActionEnum
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataActionSignalActionEnumEnumRuleCall_0_0()); 
@@ -60765,23 +62340,23 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__DataRefAssignment_1"
-    // InternalSignalDSL.g:18513:1: rule__SignalDatainterchange__DataRefAssignment_1 : ( ( RULE_ID ) ) ;
+    // InternalSignalDSL.g:19014:1: rule__SignalDatainterchange__DataRefAssignment_1 : ( ( RULE_ID ) ) ;
     public final void rule__SignalDatainterchange__DataRefAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18517:1: ( ( ( RULE_ID ) ) )
-            // InternalSignalDSL.g:18518:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:19018:1: ( ( ( RULE_ID ) ) )
+            // InternalSignalDSL.g:19019:2: ( ( RULE_ID ) )
             {
-            // InternalSignalDSL.g:18518:2: ( ( RULE_ID ) )
-            // InternalSignalDSL.g:18519:3: ( RULE_ID )
+            // InternalSignalDSL.g:19019:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:19020:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataRefDataInterchangeCrossReference_1_0()); 
             }
-            // InternalSignalDSL.g:18520:3: ( RULE_ID )
-            // InternalSignalDSL.g:18521:4: RULE_ID
+            // InternalSignalDSL.g:19021:3: ( RULE_ID )
+            // InternalSignalDSL.g:19022:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_1_0_1()); 
@@ -60817,25 +62392,37 @@
     // $ANTLR end "rule__SignalDatainterchange__DataRefAssignment_1"
 
 
-    // $ANTLR start "rule__SignalDatainterchange__FileNameAssignment_3"
-    // InternalSignalDSL.g:18532:1: rule__SignalDatainterchange__FileNameAssignment_3 : ( RULE_STRING ) ;
-    public final void rule__SignalDatainterchange__FileNameAssignment_3() throws RecognitionException {
+    // $ANTLR start "rule__SignalDatainterchange__BaseinterchangeAssignment_2"
+    // InternalSignalDSL.g:19033:1: rule__SignalDatainterchange__BaseinterchangeAssignment_2 : ( ( 'applyon' ) ) ;
+    public final void rule__SignalDatainterchange__BaseinterchangeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18536:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:18537:2: ( RULE_STRING )
+            // InternalSignalDSL.g:19037:1: ( ( ( 'applyon' ) ) )
+            // InternalSignalDSL.g:19038:2: ( ( 'applyon' ) )
             {
-            // InternalSignalDSL.g:18537:2: ( RULE_STRING )
-            // InternalSignalDSL.g:18538:3: RULE_STRING
+            // InternalSignalDSL.g:19038:2: ( ( 'applyon' ) )
+            // InternalSignalDSL.g:19039:3: ( 'applyon' )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0()); 
+               before(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); 
             }
-            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            // InternalSignalDSL.g:19040:3: ( 'applyon' )
+            // InternalSignalDSL.g:19041:4: 'applyon'
+            {
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0()); 
+               before(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); 
+            }
+            match(input,105,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0()); 
             }
 
             }
@@ -60855,27 +62442,27 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalDatainterchange__FileNameAssignment_3"
+    // $ANTLR end "rule__SignalDatainterchange__BaseinterchangeAssignment_2"
 
 
     // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
-    // InternalSignalDSL.g:18547:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    // InternalSignalDSL.g:19052:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
     public final void rule__XImportDeclaration__StaticAssignment_2_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18551:1: ( ( ( 'static' ) ) )
-            // InternalSignalDSL.g:18552:2: ( ( 'static' ) )
+            // InternalSignalDSL.g:19056:1: ( ( ( 'static' ) ) )
+            // InternalSignalDSL.g:19057:2: ( ( 'static' ) )
             {
-            // InternalSignalDSL.g:18552:2: ( ( 'static' ) )
-            // InternalSignalDSL.g:18553:3: ( 'static' )
+            // InternalSignalDSL.g:19057:2: ( ( 'static' ) )
+            // InternalSignalDSL.g:19058:3: ( 'static' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
             }
-            // InternalSignalDSL.g:18554:3: ( 'static' )
-            // InternalSignalDSL.g:18555:4: 'static'
+            // InternalSignalDSL.g:19059:3: ( 'static' )
+            // InternalSignalDSL.g:19060:4: 'static'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
@@ -60912,23 +62499,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ExtensionAssignment_2_0_1"
-    // InternalSignalDSL.g:18566:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    // InternalSignalDSL.g:19071:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
     public final void rule__XImportDeclaration__ExtensionAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18570:1: ( ( ( 'extension' ) ) )
-            // InternalSignalDSL.g:18571:2: ( ( 'extension' ) )
+            // InternalSignalDSL.g:19075:1: ( ( ( 'extension' ) ) )
+            // InternalSignalDSL.g:19076:2: ( ( 'extension' ) )
             {
-            // InternalSignalDSL.g:18571:2: ( ( 'extension' ) )
-            // InternalSignalDSL.g:18572:3: ( 'extension' )
+            // InternalSignalDSL.g:19076:2: ( ( 'extension' ) )
+            // InternalSignalDSL.g:19077:3: ( 'extension' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
             }
-            // InternalSignalDSL.g:18573:3: ( 'extension' )
-            // InternalSignalDSL.g:18574:4: 'extension'
+            // InternalSignalDSL.g:19078:3: ( 'extension' )
+            // InternalSignalDSL.g:19079:4: 'extension'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
@@ -60965,23 +62552,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2"
-    // InternalSignalDSL.g:18585:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    // InternalSignalDSL.g:19090:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
     public final void rule__XImportDeclaration__ImportedTypeAssignment_2_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18589:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
-            // InternalSignalDSL.g:18590:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalSignalDSL.g:19094:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalSignalDSL.g:19095:2: ( ( ruleQualifiedNameInStaticImport ) )
             {
-            // InternalSignalDSL.g:18590:2: ( ( ruleQualifiedNameInStaticImport ) )
-            // InternalSignalDSL.g:18591:3: ( ruleQualifiedNameInStaticImport )
+            // InternalSignalDSL.g:19095:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalSignalDSL.g:19096:3: ( ruleQualifiedNameInStaticImport )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
             }
-            // InternalSignalDSL.g:18592:3: ( ruleQualifiedNameInStaticImport )
-            // InternalSignalDSL.g:18593:4: ruleQualifiedNameInStaticImport
+            // InternalSignalDSL.g:19097:3: ( ruleQualifiedNameInStaticImport )
+            // InternalSignalDSL.g:19098:4: ruleQualifiedNameInStaticImport
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); 
@@ -61022,23 +62609,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__WildcardAssignment_2_0_3_0"
-    // InternalSignalDSL.g:18604:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    // InternalSignalDSL.g:19109:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
     public final void rule__XImportDeclaration__WildcardAssignment_2_0_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18608:1: ( ( ( '*' ) ) )
-            // InternalSignalDSL.g:18609:2: ( ( '*' ) )
+            // InternalSignalDSL.g:19113:1: ( ( ( '*' ) ) )
+            // InternalSignalDSL.g:19114:2: ( ( '*' ) )
             {
-            // InternalSignalDSL.g:18609:2: ( ( '*' ) )
-            // InternalSignalDSL.g:18610:3: ( '*' )
+            // InternalSignalDSL.g:19114:2: ( ( '*' ) )
+            // InternalSignalDSL.g:19115:3: ( '*' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
             }
-            // InternalSignalDSL.g:18611:3: ( '*' )
-            // InternalSignalDSL.g:18612:4: '*'
+            // InternalSignalDSL.g:19116:3: ( '*' )
+            // InternalSignalDSL.g:19117:4: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
@@ -61075,17 +62662,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1"
-    // InternalSignalDSL.g:18623:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:19128:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
     public final void rule__XImportDeclaration__MemberNameAssignment_2_0_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18627:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:18628:2: ( ruleValidID )
+            // InternalSignalDSL.g:19132:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:19133:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:18628:2: ( ruleValidID )
-            // InternalSignalDSL.g:18629:3: ruleValidID
+            // InternalSignalDSL.g:19133:2: ( ruleValidID )
+            // InternalSignalDSL.g:19134:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); 
@@ -61120,23 +62707,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_1"
-    // InternalSignalDSL.g:18638:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:19143:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18642:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:18643:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:19147:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:19148:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:18643:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:18644:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:19148:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:19149:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
             }
-            // InternalSignalDSL.g:18645:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:18646:4: ruleQualifiedName
+            // InternalSignalDSL.g:19150:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:19151:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); 
@@ -61177,17 +62764,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2"
-    // InternalSignalDSL.g:18657:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    // InternalSignalDSL.g:19162:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
     public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18661:1: ( ( ruleQualifiedNameWithWildcard ) )
-            // InternalSignalDSL.g:18662:2: ( ruleQualifiedNameWithWildcard )
+            // InternalSignalDSL.g:19166:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalSignalDSL.g:19167:2: ( ruleQualifiedNameWithWildcard )
             {
-            // InternalSignalDSL.g:18662:2: ( ruleQualifiedNameWithWildcard )
-            // InternalSignalDSL.g:18663:3: ruleQualifiedNameWithWildcard
+            // InternalSignalDSL.g:19167:2: ( ruleQualifiedNameWithWildcard )
+            // InternalSignalDSL.g:19168:3: ruleQualifiedNameWithWildcard
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); 
@@ -61222,28 +62809,28 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__FqnImportAssignment_2_3_0"
-    // InternalSignalDSL.g:18672:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    // InternalSignalDSL.g:19177:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
     public final void rule__XImportDeclaration__FqnImportAssignment_2_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18676:1: ( ( ( 'ns' ) ) )
-            // InternalSignalDSL.g:18677:2: ( ( 'ns' ) )
+            // InternalSignalDSL.g:19181:1: ( ( ( 'ns' ) ) )
+            // InternalSignalDSL.g:19182:2: ( ( 'ns' ) )
             {
-            // InternalSignalDSL.g:18677:2: ( ( 'ns' ) )
-            // InternalSignalDSL.g:18678:3: ( 'ns' )
+            // InternalSignalDSL.g:19182:2: ( ( 'ns' ) )
+            // InternalSignalDSL.g:19183:3: ( 'ns' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
-            // InternalSignalDSL.g:18679:3: ( 'ns' )
-            // InternalSignalDSL.g:18680:4: 'ns'
+            // InternalSignalDSL.g:19184:3: ( 'ns' )
+            // InternalSignalDSL.g:19185:4: 'ns'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
-            match(input,107,FOLLOW_2); if (state.failed) return ;
+            match(input,106,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
@@ -61275,17 +62862,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1"
-    // InternalSignalDSL.g:18691:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    // InternalSignalDSL.g:19196:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
     public final void rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18695:1: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:18696:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:19200:1: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:19201:2: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:18696:2: ( ruleQualifiedName )
-            // InternalSignalDSL.g:18697:3: ruleQualifiedName
+            // InternalSignalDSL.g:19201:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:19202:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); 
@@ -61320,23 +62907,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__AnnotationTypeAssignment_2"
-    // InternalSignalDSL.g:18706:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:19211:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18710:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:18711:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:19215:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:19216:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:18711:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:18712:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:19216:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:19217:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
             }
-            // InternalSignalDSL.g:18713:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:18714:4: ruleQualifiedName
+            // InternalSignalDSL.g:19218:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:19219:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); 
@@ -61377,17 +62964,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0"
-    // InternalSignalDSL.g:18725:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalSignalDSL.g:19230:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
     public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18729:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalSignalDSL.g:18730:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:19234:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalSignalDSL.g:19235:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalSignalDSL.g:18730:2: ( ruleXAnnotationElementValuePair )
-            // InternalSignalDSL.g:18731:3: ruleXAnnotationElementValuePair
+            // InternalSignalDSL.g:19235:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:19236:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
@@ -61422,17 +63009,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1"
-    // InternalSignalDSL.g:18740:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalSignalDSL.g:19245:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
     public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18744:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalSignalDSL.g:18745:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:19249:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalSignalDSL.g:19250:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalSignalDSL.g:18745:2: ( ruleXAnnotationElementValuePair )
-            // InternalSignalDSL.g:18746:3: ruleXAnnotationElementValuePair
+            // InternalSignalDSL.g:19250:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:19251:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
@@ -61467,17 +63054,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ValueAssignment_3_1_1"
-    // InternalSignalDSL.g:18755:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    // InternalSignalDSL.g:19260:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
     public final void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18759:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
-            // InternalSignalDSL.g:18760:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalSignalDSL.g:19264:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalSignalDSL.g:19265:2: ( ruleXAnnotationElementValueOrCommaList )
             {
-            // InternalSignalDSL.g:18760:2: ( ruleXAnnotationElementValueOrCommaList )
-            // InternalSignalDSL.g:18761:3: ruleXAnnotationElementValueOrCommaList
+            // InternalSignalDSL.g:19265:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalSignalDSL.g:19266:3: ruleXAnnotationElementValueOrCommaList
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
@@ -61512,23 +63099,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0"
-    // InternalSignalDSL.g:18770:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    // InternalSignalDSL.g:19275:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
     public final void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18774:1: ( ( ( ruleValidID ) ) )
-            // InternalSignalDSL.g:18775:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:19279:1: ( ( ( ruleValidID ) ) )
+            // InternalSignalDSL.g:19280:2: ( ( ruleValidID ) )
             {
-            // InternalSignalDSL.g:18775:2: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:18776:3: ( ruleValidID )
+            // InternalSignalDSL.g:19280:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:19281:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:18777:3: ( ruleValidID )
-            // InternalSignalDSL.g:18778:4: ruleValidID
+            // InternalSignalDSL.g:19282:3: ( ruleValidID )
+            // InternalSignalDSL.g:19283:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); 
@@ -61569,17 +63156,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ValueAssignment_1"
-    // InternalSignalDSL.g:18789:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    // InternalSignalDSL.g:19294:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
     public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18793:1: ( ( ruleXAnnotationElementValue ) )
-            // InternalSignalDSL.g:18794:2: ( ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:19298:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalSignalDSL.g:19299:2: ( ruleXAnnotationElementValue )
             {
-            // InternalSignalDSL.g:18794:2: ( ruleXAnnotationElementValue )
-            // InternalSignalDSL.g:18795:3: ruleXAnnotationElementValue
+            // InternalSignalDSL.g:19299:2: ( ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:19300:3: ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
@@ -61614,17 +63201,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0"
-    // InternalSignalDSL.g:18804:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:19309:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18808:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18809:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19313:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:19314:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18809:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18810:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:19314:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19315:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -61659,17 +63246,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1"
-    // InternalSignalDSL.g:18819:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:19324:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18823:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18824:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19328:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:19329:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18824:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18825:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:19329:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19330:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -61704,17 +63291,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1"
-    // InternalSignalDSL.g:18834:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:19339:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18838:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18839:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19343:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:19344:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18839:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18840:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:19344:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19345:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
@@ -61749,17 +63336,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_0"
-    // InternalSignalDSL.g:18849:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:19354:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18853:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18854:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19358:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:19359:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18854:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18855:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:19359:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19360:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -61794,17 +63381,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1"
-    // InternalSignalDSL.g:18864:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:19369:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18868:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18869:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19373:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:19374:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18869:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18870:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:19374:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:19375:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -61839,23 +63426,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_0_1"
-    // InternalSignalDSL.g:18879:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    // InternalSignalDSL.g:19384:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
     public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18883:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalSignalDSL.g:18884:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:19388:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalSignalDSL.g:19389:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalSignalDSL.g:18884:2: ( ( ruleFeatureCallID ) )
-            // InternalSignalDSL.g:18885:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:19389:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:19390:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalSignalDSL.g:18886:3: ( ruleFeatureCallID )
-            // InternalSignalDSL.g:18887:4: ruleFeatureCallID
+            // InternalSignalDSL.g:19391:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:19392:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); 
@@ -61896,17 +63483,17 @@
 
 
     // $ANTLR start "rule__XAssignment__ValueAssignment_0_3"
-    // InternalSignalDSL.g:18898:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:19403:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
     public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18902:1: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:18903:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19407:1: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:19408:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:18903:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:18904:3: ruleXAssignment
+            // InternalSignalDSL.g:19408:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19409:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
@@ -61941,23 +63528,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_1_1_0_0_1"
-    // InternalSignalDSL.g:18913:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
+    // InternalSignalDSL.g:19418:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
     public final void rule__XAssignment__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18917:1: ( ( ( ruleOpMultiAssign ) ) )
-            // InternalSignalDSL.g:18918:2: ( ( ruleOpMultiAssign ) )
+            // InternalSignalDSL.g:19422:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalSignalDSL.g:19423:2: ( ( ruleOpMultiAssign ) )
             {
-            // InternalSignalDSL.g:18918:2: ( ( ruleOpMultiAssign ) )
-            // InternalSignalDSL.g:18919:3: ( ruleOpMultiAssign )
+            // InternalSignalDSL.g:19423:2: ( ( ruleOpMultiAssign ) )
+            // InternalSignalDSL.g:19424:3: ( ruleOpMultiAssign )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18920:3: ( ruleOpMultiAssign )
-            // InternalSignalDSL.g:18921:4: ruleOpMultiAssign
+            // InternalSignalDSL.g:19425:3: ( ruleOpMultiAssign )
+            // InternalSignalDSL.g:19426:4: ruleOpMultiAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); 
@@ -61998,17 +63585,17 @@
 
 
     // $ANTLR start "rule__XAssignment__RightOperandAssignment_1_1_1"
-    // InternalSignalDSL.g:18932:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:19437:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
     public final void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18936:1: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:18937:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19441:1: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:19442:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:18937:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:18938:3: ruleXAssignment
+            // InternalSignalDSL.g:19442:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19443:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
@@ -62043,23 +63630,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18947:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
+    // InternalSignalDSL.g:19452:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
     public final void rule__XOrExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18951:1: ( ( ( ruleOpOr ) ) )
-            // InternalSignalDSL.g:18952:2: ( ( ruleOpOr ) )
+            // InternalSignalDSL.g:19456:1: ( ( ( ruleOpOr ) ) )
+            // InternalSignalDSL.g:19457:2: ( ( ruleOpOr ) )
             {
-            // InternalSignalDSL.g:18952:2: ( ( ruleOpOr ) )
-            // InternalSignalDSL.g:18953:3: ( ruleOpOr )
+            // InternalSignalDSL.g:19457:2: ( ( ruleOpOr ) )
+            // InternalSignalDSL.g:19458:3: ( ruleOpOr )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18954:3: ( ruleOpOr )
-            // InternalSignalDSL.g:18955:4: ruleOpOr
+            // InternalSignalDSL.g:19459:3: ( ruleOpOr )
+            // InternalSignalDSL.g:19460:4: ruleOpOr
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); 
@@ -62100,17 +63687,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:18966:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    // InternalSignalDSL.g:19471:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18970:1: ( ( ruleXAndExpression ) )
-            // InternalSignalDSL.g:18971:2: ( ruleXAndExpression )
+            // InternalSignalDSL.g:19475:1: ( ( ruleXAndExpression ) )
+            // InternalSignalDSL.g:19476:2: ( ruleXAndExpression )
             {
-            // InternalSignalDSL.g:18971:2: ( ruleXAndExpression )
-            // InternalSignalDSL.g:18972:3: ruleXAndExpression
+            // InternalSignalDSL.g:19476:2: ( ruleXAndExpression )
+            // InternalSignalDSL.g:19477:3: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
@@ -62145,23 +63732,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18981:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
+    // InternalSignalDSL.g:19486:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
     public final void rule__XAndExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18985:1: ( ( ( ruleOpAnd ) ) )
-            // InternalSignalDSL.g:18986:2: ( ( ruleOpAnd ) )
+            // InternalSignalDSL.g:19490:1: ( ( ( ruleOpAnd ) ) )
+            // InternalSignalDSL.g:19491:2: ( ( ruleOpAnd ) )
             {
-            // InternalSignalDSL.g:18986:2: ( ( ruleOpAnd ) )
-            // InternalSignalDSL.g:18987:3: ( ruleOpAnd )
+            // InternalSignalDSL.g:19491:2: ( ( ruleOpAnd ) )
+            // InternalSignalDSL.g:19492:3: ( ruleOpAnd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18988:3: ( ruleOpAnd )
-            // InternalSignalDSL.g:18989:4: ruleOpAnd
+            // InternalSignalDSL.g:19493:3: ( ruleOpAnd )
+            // InternalSignalDSL.g:19494:4: ruleOpAnd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); 
@@ -62202,17 +63789,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:19000:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    // InternalSignalDSL.g:19505:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19004:1: ( ( ruleXEqualityExpression ) )
-            // InternalSignalDSL.g:19005:2: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:19509:1: ( ( ruleXEqualityExpression ) )
+            // InternalSignalDSL.g:19510:2: ( ruleXEqualityExpression )
             {
-            // InternalSignalDSL.g:19005:2: ( ruleXEqualityExpression )
-            // InternalSignalDSL.g:19006:3: ruleXEqualityExpression
+            // InternalSignalDSL.g:19510:2: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:19511:3: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
@@ -62247,23 +63834,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:19015:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
+    // InternalSignalDSL.g:19520:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
     public final void rule__XEqualityExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19019:1: ( ( ( ruleOpEquality ) ) )
-            // InternalSignalDSL.g:19020:2: ( ( ruleOpEquality ) )
+            // InternalSignalDSL.g:19524:1: ( ( ( ruleOpEquality ) ) )
+            // InternalSignalDSL.g:19525:2: ( ( ruleOpEquality ) )
             {
-            // InternalSignalDSL.g:19020:2: ( ( ruleOpEquality ) )
-            // InternalSignalDSL.g:19021:3: ( ruleOpEquality )
+            // InternalSignalDSL.g:19525:2: ( ( ruleOpEquality ) )
+            // InternalSignalDSL.g:19526:3: ( ruleOpEquality )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:19022:3: ( ruleOpEquality )
-            // InternalSignalDSL.g:19023:4: ruleOpEquality
+            // InternalSignalDSL.g:19527:3: ( ruleOpEquality )
+            // InternalSignalDSL.g:19528:4: ruleOpEquality
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); 
@@ -62304,17 +63891,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:19034:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    // InternalSignalDSL.g:19539:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19038:1: ( ( ruleXRelationalExpression ) )
-            // InternalSignalDSL.g:19039:2: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:19543:1: ( ( ruleXRelationalExpression ) )
+            // InternalSignalDSL.g:19544:2: ( ruleXRelationalExpression )
             {
-            // InternalSignalDSL.g:19039:2: ( ruleXRelationalExpression )
-            // InternalSignalDSL.g:19040:3: ruleXRelationalExpression
+            // InternalSignalDSL.g:19544:2: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:19545:3: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
@@ -62349,17 +63936,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__TypeAssignment_1_0_1"
-    // InternalSignalDSL.g:19049:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:19554:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19053:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:19054:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19558:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:19559:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:19054:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:19055:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:19559:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19560:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
@@ -62394,23 +63981,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1"
-    // InternalSignalDSL.g:19064:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
+    // InternalSignalDSL.g:19569:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
     public final void rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19068:1: ( ( ( ruleOpCompare ) ) )
-            // InternalSignalDSL.g:19069:2: ( ( ruleOpCompare ) )
+            // InternalSignalDSL.g:19573:1: ( ( ( ruleOpCompare ) ) )
+            // InternalSignalDSL.g:19574:2: ( ( ruleOpCompare ) )
             {
-            // InternalSignalDSL.g:19069:2: ( ( ruleOpCompare ) )
-            // InternalSignalDSL.g:19070:3: ( ruleOpCompare )
+            // InternalSignalDSL.g:19574:2: ( ( ruleOpCompare ) )
+            // InternalSignalDSL.g:19575:3: ( ruleOpCompare )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:19071:3: ( ruleOpCompare )
-            // InternalSignalDSL.g:19072:4: ruleOpCompare
+            // InternalSignalDSL.g:19576:3: ( ruleOpCompare )
+            // InternalSignalDSL.g:19577:4: ruleOpCompare
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); 
@@ -62451,17 +64038,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__RightOperandAssignment_1_1_1"
-    // InternalSignalDSL.g:19083:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    // InternalSignalDSL.g:19588:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
     public final void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19087:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalSignalDSL.g:19088:2: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:19592:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalSignalDSL.g:19593:2: ( ruleXOtherOperatorExpression )
             {
-            // InternalSignalDSL.g:19088:2: ( ruleXOtherOperatorExpression )
-            // InternalSignalDSL.g:19089:3: ruleXOtherOperatorExpression
+            // InternalSignalDSL.g:19593:2: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:19594:3: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
@@ -62496,23 +64083,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:19098:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
+    // InternalSignalDSL.g:19603:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
     public final void rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19102:1: ( ( ( ruleOpOther ) ) )
-            // InternalSignalDSL.g:19103:2: ( ( ruleOpOther ) )
+            // InternalSignalDSL.g:19607:1: ( ( ( ruleOpOther ) ) )
+            // InternalSignalDSL.g:19608:2: ( ( ruleOpOther ) )
             {
-            // InternalSignalDSL.g:19103:2: ( ( ruleOpOther ) )
-            // InternalSignalDSL.g:19104:3: ( ruleOpOther )
+            // InternalSignalDSL.g:19608:2: ( ( ruleOpOther ) )
+            // InternalSignalDSL.g:19609:3: ( ruleOpOther )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:19105:3: ( ruleOpOther )
-            // InternalSignalDSL.g:19106:4: ruleOpOther
+            // InternalSignalDSL.g:19610:3: ( ruleOpOther )
+            // InternalSignalDSL.g:19611:4: ruleOpOther
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); 
@@ -62553,17 +64140,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:19117:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    // InternalSignalDSL.g:19622:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19121:1: ( ( ruleXAdditiveExpression ) )
-            // InternalSignalDSL.g:19122:2: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:19626:1: ( ( ruleXAdditiveExpression ) )
+            // InternalSignalDSL.g:19627:2: ( ruleXAdditiveExpression )
             {
-            // InternalSignalDSL.g:19122:2: ( ruleXAdditiveExpression )
-            // InternalSignalDSL.g:19123:3: ruleXAdditiveExpression
+            // InternalSignalDSL.g:19627:2: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:19628:3: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
@@ -62598,23 +64185,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:19132:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
+    // InternalSignalDSL.g:19637:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
     public final void rule__XAdditiveExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19136:1: ( ( ( ruleOpAdd ) ) )
-            // InternalSignalDSL.g:19137:2: ( ( ruleOpAdd ) )
+            // InternalSignalDSL.g:19641:1: ( ( ( ruleOpAdd ) ) )
+            // InternalSignalDSL.g:19642:2: ( ( ruleOpAdd ) )
             {
-            // InternalSignalDSL.g:19137:2: ( ( ruleOpAdd ) )
-            // InternalSignalDSL.g:19138:3: ( ruleOpAdd )
+            // InternalSignalDSL.g:19642:2: ( ( ruleOpAdd ) )
+            // InternalSignalDSL.g:19643:3: ( ruleOpAdd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:19139:3: ( ruleOpAdd )
-            // InternalSignalDSL.g:19140:4: ruleOpAdd
+            // InternalSignalDSL.g:19644:3: ( ruleOpAdd )
+            // InternalSignalDSL.g:19645:4: ruleOpAdd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); 
@@ -62655,17 +64242,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:19151:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    // InternalSignalDSL.g:19656:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19155:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalSignalDSL.g:19156:2: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:19660:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalSignalDSL.g:19661:2: ( ruleXMultiplicativeExpression )
             {
-            // InternalSignalDSL.g:19156:2: ( ruleXMultiplicativeExpression )
-            // InternalSignalDSL.g:19157:3: ruleXMultiplicativeExpression
+            // InternalSignalDSL.g:19661:2: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:19662:3: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
@@ -62700,23 +64287,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:19166:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
+    // InternalSignalDSL.g:19671:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
     public final void rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19170:1: ( ( ( ruleOpMulti ) ) )
-            // InternalSignalDSL.g:19171:2: ( ( ruleOpMulti ) )
+            // InternalSignalDSL.g:19675:1: ( ( ( ruleOpMulti ) ) )
+            // InternalSignalDSL.g:19676:2: ( ( ruleOpMulti ) )
             {
-            // InternalSignalDSL.g:19171:2: ( ( ruleOpMulti ) )
-            // InternalSignalDSL.g:19172:3: ( ruleOpMulti )
+            // InternalSignalDSL.g:19676:2: ( ( ruleOpMulti ) )
+            // InternalSignalDSL.g:19677:3: ( ruleOpMulti )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:19173:3: ( ruleOpMulti )
-            // InternalSignalDSL.g:19174:4: ruleOpMulti
+            // InternalSignalDSL.g:19678:3: ( ruleOpMulti )
+            // InternalSignalDSL.g:19679:4: ruleOpMulti
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); 
@@ -62757,17 +64344,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:19185:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    // InternalSignalDSL.g:19690:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19189:1: ( ( ruleXUnaryOperation ) )
-            // InternalSignalDSL.g:19190:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19694:1: ( ( ruleXUnaryOperation ) )
+            // InternalSignalDSL.g:19695:2: ( ruleXUnaryOperation )
             {
-            // InternalSignalDSL.g:19190:2: ( ruleXUnaryOperation )
-            // InternalSignalDSL.g:19191:3: ruleXUnaryOperation
+            // InternalSignalDSL.g:19695:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19696:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
@@ -62802,23 +64389,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__FeatureAssignment_0_1"
-    // InternalSignalDSL.g:19200:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    // InternalSignalDSL.g:19705:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
     public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19204:1: ( ( ( ruleOpUnary ) ) )
-            // InternalSignalDSL.g:19205:2: ( ( ruleOpUnary ) )
+            // InternalSignalDSL.g:19709:1: ( ( ( ruleOpUnary ) ) )
+            // InternalSignalDSL.g:19710:2: ( ( ruleOpUnary ) )
             {
-            // InternalSignalDSL.g:19205:2: ( ( ruleOpUnary ) )
-            // InternalSignalDSL.g:19206:3: ( ruleOpUnary )
+            // InternalSignalDSL.g:19710:2: ( ( ruleOpUnary ) )
+            // InternalSignalDSL.g:19711:3: ( ruleOpUnary )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalSignalDSL.g:19207:3: ( ruleOpUnary )
-            // InternalSignalDSL.g:19208:4: ruleOpUnary
+            // InternalSignalDSL.g:19712:3: ( ruleOpUnary )
+            // InternalSignalDSL.g:19713:4: ruleOpUnary
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); 
@@ -62859,17 +64446,17 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__OperandAssignment_0_2"
-    // InternalSignalDSL.g:19219:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    // InternalSignalDSL.g:19724:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
     public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19223:1: ( ( ruleXUnaryOperation ) )
-            // InternalSignalDSL.g:19224:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19728:1: ( ( ruleXUnaryOperation ) )
+            // InternalSignalDSL.g:19729:2: ( ruleXUnaryOperation )
             {
-            // InternalSignalDSL.g:19224:2: ( ruleXUnaryOperation )
-            // InternalSignalDSL.g:19225:3: ruleXUnaryOperation
+            // InternalSignalDSL.g:19729:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19730:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
@@ -62904,17 +64491,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__TypeAssignment_1_1"
-    // InternalSignalDSL.g:19234:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:19739:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19238:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:19239:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19743:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:19744:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:19239:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:19240:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:19744:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19745:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
@@ -62949,23 +64536,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__FeatureAssignment_1_0_1"
-    // InternalSignalDSL.g:19249:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    // InternalSignalDSL.g:19754:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
     public final void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19253:1: ( ( ( ruleOpPostfix ) ) )
-            // InternalSignalDSL.g:19254:2: ( ( ruleOpPostfix ) )
+            // InternalSignalDSL.g:19758:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalSignalDSL.g:19759:2: ( ( ruleOpPostfix ) )
             {
-            // InternalSignalDSL.g:19254:2: ( ( ruleOpPostfix ) )
-            // InternalSignalDSL.g:19255:3: ( ruleOpPostfix )
+            // InternalSignalDSL.g:19759:2: ( ( ruleOpPostfix ) )
+            // InternalSignalDSL.g:19760:3: ( ruleOpPostfix )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
             }
-            // InternalSignalDSL.g:19256:3: ( ruleOpPostfix )
-            // InternalSignalDSL.g:19257:4: ruleOpPostfix
+            // InternalSignalDSL.g:19761:3: ( ruleOpPostfix )
+            // InternalSignalDSL.g:19762:4: ruleOpPostfix
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); 
@@ -63006,28 +64593,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1"
-    // InternalSignalDSL.g:19268:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
+    // InternalSignalDSL.g:19773:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19272:1: ( ( ( '::' ) ) )
-            // InternalSignalDSL.g:19273:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19777:1: ( ( ( '::' ) ) )
+            // InternalSignalDSL.g:19778:2: ( ( '::' ) )
             {
-            // InternalSignalDSL.g:19273:2: ( ( '::' ) )
-            // InternalSignalDSL.g:19274:3: ( '::' )
+            // InternalSignalDSL.g:19778:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19779:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            // InternalSignalDSL.g:19275:3: ( '::' )
-            // InternalSignalDSL.g:19276:4: '::'
+            // InternalSignalDSL.g:19780:3: ( '::' )
+            // InternalSignalDSL.g:19781:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            match(input,108,FOLLOW_2); if (state.failed) return ;
+            match(input,107,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
@@ -63059,23 +64646,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2"
-    // InternalSignalDSL.g:19287:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
+    // InternalSignalDSL.g:19792:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
     public final void rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19291:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalSignalDSL.g:19292:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:19796:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalSignalDSL.g:19797:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalSignalDSL.g:19292:2: ( ( ruleFeatureCallID ) )
-            // InternalSignalDSL.g:19293:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:19797:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:19798:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
             }
-            // InternalSignalDSL.g:19294:3: ( ruleFeatureCallID )
-            // InternalSignalDSL.g:19295:4: ruleFeatureCallID
+            // InternalSignalDSL.g:19799:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:19800:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); 
@@ -63116,17 +64703,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ValueAssignment_1_0_1"
-    // InternalSignalDSL.g:19306:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:19811:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
     public final void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19310:1: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:19311:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19815:1: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:19816:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:19311:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:19312:3: ruleXAssignment
+            // InternalSignalDSL.g:19816:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19817:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
@@ -63161,28 +64748,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1"
-    // InternalSignalDSL.g:19321:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
+    // InternalSignalDSL.g:19826:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
     public final void rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19325:1: ( ( ( '?.' ) ) )
-            // InternalSignalDSL.g:19326:2: ( ( '?.' ) )
+            // InternalSignalDSL.g:19830:1: ( ( ( '?.' ) ) )
+            // InternalSignalDSL.g:19831:2: ( ( '?.' ) )
             {
-            // InternalSignalDSL.g:19326:2: ( ( '?.' ) )
-            // InternalSignalDSL.g:19327:3: ( '?.' )
+            // InternalSignalDSL.g:19831:2: ( ( '?.' ) )
+            // InternalSignalDSL.g:19832:3: ( '?.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            // InternalSignalDSL.g:19328:3: ( '?.' )
-            // InternalSignalDSL.g:19329:4: '?.'
+            // InternalSignalDSL.g:19833:3: ( '?.' )
+            // InternalSignalDSL.g:19834:4: '?.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            match(input,109,FOLLOW_2); if (state.failed) return ;
+            match(input,108,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
@@ -63214,28 +64801,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2"
-    // InternalSignalDSL.g:19340:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
+    // InternalSignalDSL.g:19845:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19344:1: ( ( ( '::' ) ) )
-            // InternalSignalDSL.g:19345:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19849:1: ( ( ( '::' ) ) )
+            // InternalSignalDSL.g:19850:2: ( ( '::' ) )
             {
-            // InternalSignalDSL.g:19345:2: ( ( '::' ) )
-            // InternalSignalDSL.g:19346:3: ( '::' )
+            // InternalSignalDSL.g:19850:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19851:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            // InternalSignalDSL.g:19347:3: ( '::' )
-            // InternalSignalDSL.g:19348:4: '::'
+            // InternalSignalDSL.g:19852:3: ( '::' )
+            // InternalSignalDSL.g:19853:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            match(input,108,FOLLOW_2); if (state.failed) return ;
+            match(input,107,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
@@ -63267,17 +64854,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1"
-    // InternalSignalDSL.g:19359:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:19864:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19363:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:19364:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19868:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:19869:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:19364:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:19365:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:19869:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19870:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
@@ -63312,17 +64899,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1"
-    // InternalSignalDSL.g:19374:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:19879:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19378:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:19379:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19883:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:19884:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:19379:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:19380:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:19884:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19885:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
@@ -63357,23 +64944,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_1_2"
-    // InternalSignalDSL.g:19389:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalSignalDSL.g:19894:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
     public final void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19393:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalSignalDSL.g:19394:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:19898:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalSignalDSL.g:19899:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalSignalDSL.g:19394:2: ( ( ruleIdOrSuper ) )
-            // InternalSignalDSL.g:19395:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:19899:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:19900:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
             }
-            // InternalSignalDSL.g:19396:3: ( ruleIdOrSuper )
-            // InternalSignalDSL.g:19397:4: ruleIdOrSuper
+            // InternalSignalDSL.g:19901:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:19902:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); 
@@ -63414,28 +65001,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0"
-    // InternalSignalDSL.g:19408:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:19913:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19412:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:19413:2: ( ( '(' ) )
+            // InternalSignalDSL.g:19917:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:19918:2: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:19413:2: ( ( '(' ) )
-            // InternalSignalDSL.g:19414:3: ( '(' )
+            // InternalSignalDSL.g:19918:2: ( ( '(' ) )
+            // InternalSignalDSL.g:19919:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            // InternalSignalDSL.g:19415:3: ( '(' )
-            // InternalSignalDSL.g:19416:4: '('
+            // InternalSignalDSL.g:19920:3: ( '(' )
+            // InternalSignalDSL.g:19921:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
@@ -63467,17 +65054,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0"
-    // InternalSignalDSL.g:19427:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalSignalDSL.g:19932:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19431:1: ( ( ruleXShortClosure ) )
-            // InternalSignalDSL.g:19432:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:19936:1: ( ( ruleXShortClosure ) )
+            // InternalSignalDSL.g:19937:2: ( ruleXShortClosure )
             {
-            // InternalSignalDSL.g:19432:2: ( ruleXShortClosure )
-            // InternalSignalDSL.g:19433:3: ruleXShortClosure
+            // InternalSignalDSL.g:19937:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:19938:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
@@ -63512,17 +65099,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0"
-    // InternalSignalDSL.g:19442:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19947:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19446:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19447:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19951:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19952:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19447:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19448:3: ruleXExpression
+            // InternalSignalDSL.g:19952:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19953:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
@@ -63557,17 +65144,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1"
-    // InternalSignalDSL.g:19457:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19962:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19461:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19462:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19966:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19967:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19462:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19463:3: ruleXExpression
+            // InternalSignalDSL.g:19967:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19968:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
@@ -63602,17 +65189,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4"
-    // InternalSignalDSL.g:19472:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    // InternalSignalDSL.g:19977:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19476:1: ( ( ruleXClosure ) )
-            // InternalSignalDSL.g:19477:2: ( ruleXClosure )
+            // InternalSignalDSL.g:19981:1: ( ( ruleXClosure ) )
+            // InternalSignalDSL.g:19982:2: ( ruleXClosure )
             {
-            // InternalSignalDSL.g:19477:2: ( ruleXClosure )
-            // InternalSignalDSL.g:19478:3: ruleXClosure
+            // InternalSignalDSL.g:19982:2: ( ruleXClosure )
+            // InternalSignalDSL.g:19983:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
@@ -63647,17 +65234,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_0"
-    // InternalSignalDSL.g:19487:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19992:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19491:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19492:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19996:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19997:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19492:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19493:3: ruleXExpression
+            // InternalSignalDSL.g:19997:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19998:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -63692,17 +65279,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_1_1"
-    // InternalSignalDSL.g:19502:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20007:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19506:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19507:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20011:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20012:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19507:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19508:3: ruleXExpression
+            // InternalSignalDSL.g:20012:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20013:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -63737,17 +65324,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_0"
-    // InternalSignalDSL.g:19517:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20022:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19521:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19522:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20026:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20027:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19522:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19523:3: ruleXExpression
+            // InternalSignalDSL.g:20027:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20028:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -63782,17 +65369,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_1_1"
-    // InternalSignalDSL.g:19532:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20037:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19536:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19537:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20041:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20042:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19537:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19538:3: ruleXExpression
+            // InternalSignalDSL.g:20042:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20043:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -63827,17 +65414,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0"
-    // InternalSignalDSL.g:19547:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20052:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19551:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19552:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20056:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:20057:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19552:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19553:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:20057:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20058:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
@@ -63872,17 +65459,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1"
-    // InternalSignalDSL.g:19562:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20067:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19566:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19567:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20071:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:20072:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19567:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19568:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:20072:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20073:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
@@ -63917,28 +65504,28 @@
 
 
     // $ANTLR start "rule__XClosure__ExplicitSyntaxAssignment_1_0_1"
-    // InternalSignalDSL.g:19577:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    // InternalSignalDSL.g:20082:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
     public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19581:1: ( ( ( '|' ) ) )
-            // InternalSignalDSL.g:19582:2: ( ( '|' ) )
+            // InternalSignalDSL.g:20086:1: ( ( ( '|' ) ) )
+            // InternalSignalDSL.g:20087:2: ( ( '|' ) )
             {
-            // InternalSignalDSL.g:19582:2: ( ( '|' ) )
-            // InternalSignalDSL.g:19583:3: ( '|' )
+            // InternalSignalDSL.g:20087:2: ( ( '|' ) )
+            // InternalSignalDSL.g:20088:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            // InternalSignalDSL.g:19584:3: ( '|' )
-            // InternalSignalDSL.g:19585:4: '|'
+            // InternalSignalDSL.g:20089:3: ( '|' )
+            // InternalSignalDSL.g:20090:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            match(input,110,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
@@ -63970,17 +65557,17 @@
 
 
     // $ANTLR start "rule__XClosure__ExpressionAssignment_2"
-    // InternalSignalDSL.g:19596:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    // InternalSignalDSL.g:20101:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
     public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19600:1: ( ( ruleXExpressionInClosure ) )
-            // InternalSignalDSL.g:19601:2: ( ruleXExpressionInClosure )
+            // InternalSignalDSL.g:20105:1: ( ( ruleXExpressionInClosure ) )
+            // InternalSignalDSL.g:20106:2: ( ruleXExpressionInClosure )
             {
-            // InternalSignalDSL.g:19601:2: ( ruleXExpressionInClosure )
-            // InternalSignalDSL.g:19602:3: ruleXExpressionInClosure
+            // InternalSignalDSL.g:20106:2: ( ruleXExpressionInClosure )
+            // InternalSignalDSL.g:20107:3: ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
@@ -64015,17 +65602,17 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__ExpressionsAssignment_1_0"
-    // InternalSignalDSL.g:19611:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:20116:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19615:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:19616:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20120:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:20121:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:19616:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:19617:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:20121:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20122:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
@@ -64060,17 +65647,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0"
-    // InternalSignalDSL.g:19626:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20131:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19630:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19631:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20135:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:20136:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19631:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19632:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:20136:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20137:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
@@ -64105,17 +65692,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1"
-    // InternalSignalDSL.g:19641:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20146:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19645:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19646:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20150:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:20151:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19646:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19647:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:20151:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20152:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
@@ -64150,28 +65737,28 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2"
-    // InternalSignalDSL.g:19656:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    // InternalSignalDSL.g:20161:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
     public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19660:1: ( ( ( '|' ) ) )
-            // InternalSignalDSL.g:19661:2: ( ( '|' ) )
+            // InternalSignalDSL.g:20165:1: ( ( ( '|' ) ) )
+            // InternalSignalDSL.g:20166:2: ( ( '|' ) )
             {
-            // InternalSignalDSL.g:19661:2: ( ( '|' ) )
-            // InternalSignalDSL.g:19662:3: ( '|' )
+            // InternalSignalDSL.g:20166:2: ( ( '|' ) )
+            // InternalSignalDSL.g:20167:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            // InternalSignalDSL.g:19663:3: ( '|' )
-            // InternalSignalDSL.g:19664:4: '|'
+            // InternalSignalDSL.g:20168:3: ( '|' )
+            // InternalSignalDSL.g:20169:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            match(input,110,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
@@ -64203,17 +65790,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExpressionAssignment_1"
-    // InternalSignalDSL.g:19675:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20180:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19679:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19680:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20184:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20185:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19680:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19681:3: ruleXExpression
+            // InternalSignalDSL.g:20185:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20186:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
@@ -64248,17 +65835,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__IfAssignment_3"
-    // InternalSignalDSL.g:19690:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20195:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19694:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19695:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20199:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20200:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19695:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19696:3: ruleXExpression
+            // InternalSignalDSL.g:20200:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20201:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
@@ -64293,17 +65880,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ThenAssignment_5"
-    // InternalSignalDSL.g:19705:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20210:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19709:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19710:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20214:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20215:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19710:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19711:3: ruleXExpression
+            // InternalSignalDSL.g:20215:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20216:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
@@ -64338,17 +65925,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ElseAssignment_6_1"
-    // InternalSignalDSL.g:19720:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20225:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19724:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19725:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20229:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20230:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19725:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19726:3: ruleXExpression
+            // InternalSignalDSL.g:20230:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20231:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
@@ -64383,17 +65970,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1"
-    // InternalSignalDSL.g:19735:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20240:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19739:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19740:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20244:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:20245:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19740:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19741:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:20245:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20246:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
@@ -64428,17 +66015,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_0_1"
-    // InternalSignalDSL.g:19750:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20255:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19754:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19755:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20259:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20260:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19755:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19756:3: ruleXExpression
+            // InternalSignalDSL.g:20260:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20261:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
@@ -64473,17 +66060,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0"
-    // InternalSignalDSL.g:19765:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20270:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19769:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19770:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20274:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:20275:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19770:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19771:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:20275:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20276:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
@@ -64518,17 +66105,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_1_1"
-    // InternalSignalDSL.g:19780:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20285:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19784:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19785:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20289:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20290:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19785:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19786:3: ruleXExpression
+            // InternalSignalDSL.g:20290:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20291:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
@@ -64563,17 +66150,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__CasesAssignment_4"
-    // InternalSignalDSL.g:19795:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    // InternalSignalDSL.g:20300:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
     public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19799:1: ( ( ruleXCasePart ) )
-            // InternalSignalDSL.g:19800:2: ( ruleXCasePart )
+            // InternalSignalDSL.g:20304:1: ( ( ruleXCasePart ) )
+            // InternalSignalDSL.g:20305:2: ( ruleXCasePart )
             {
-            // InternalSignalDSL.g:19800:2: ( ruleXCasePart )
-            // InternalSignalDSL.g:19801:3: ruleXCasePart
+            // InternalSignalDSL.g:20305:2: ( ruleXCasePart )
+            // InternalSignalDSL.g:20306:3: ruleXCasePart
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
@@ -64608,17 +66195,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DefaultAssignment_5_2"
-    // InternalSignalDSL.g:19810:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20315:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19814:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19815:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20319:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20320:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19815:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19816:3: ruleXExpression
+            // InternalSignalDSL.g:20320:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20321:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
@@ -64653,17 +66240,17 @@
 
 
     // $ANTLR start "rule__XCasePart__TypeGuardAssignment_1"
-    // InternalSignalDSL.g:19825:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20330:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19829:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:19830:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20334:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20335:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:19830:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:19831:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20335:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20336:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
@@ -64698,17 +66285,17 @@
 
 
     // $ANTLR start "rule__XCasePart__CaseAssignment_2_1"
-    // InternalSignalDSL.g:19840:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20345:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
     public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19844:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19845:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20349:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20350:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19845:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19846:3: ruleXExpression
+            // InternalSignalDSL.g:20350:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20351:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
@@ -64743,17 +66330,17 @@
 
 
     // $ANTLR start "rule__XCasePart__ThenAssignment_3_0_1"
-    // InternalSignalDSL.g:19855:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20360:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
     public final void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19859:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19860:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20364:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20365:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19860:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19861:3: ruleXExpression
+            // InternalSignalDSL.g:20365:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20366:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
@@ -64788,28 +66375,28 @@
 
 
     // $ANTLR start "rule__XCasePart__FallThroughAssignment_3_1"
-    // InternalSignalDSL.g:19870:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    // InternalSignalDSL.g:20375:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
     public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19874:1: ( ( ( ',' ) ) )
-            // InternalSignalDSL.g:19875:2: ( ( ',' ) )
+            // InternalSignalDSL.g:20379:1: ( ( ( ',' ) ) )
+            // InternalSignalDSL.g:20380:2: ( ( ',' ) )
             {
-            // InternalSignalDSL.g:19875:2: ( ( ',' ) )
-            // InternalSignalDSL.g:19876:3: ( ',' )
+            // InternalSignalDSL.g:20380:2: ( ( ',' ) )
+            // InternalSignalDSL.g:20381:3: ( ',' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            // InternalSignalDSL.g:19877:3: ( ',' )
-            // InternalSignalDSL.g:19878:4: ','
+            // InternalSignalDSL.g:20382:3: ( ',' )
+            // InternalSignalDSL.g:20383:4: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
@@ -64841,17 +66428,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3"
-    // InternalSignalDSL.g:19889:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20394:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
     public final void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19893:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19894:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20398:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:20399:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19894:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19895:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:20399:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:20400:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
@@ -64886,17 +66473,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__ForExpressionAssignment_1"
-    // InternalSignalDSL.g:19904:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20409:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19908:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19909:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20413:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20414:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19909:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19910:3: ruleXExpression
+            // InternalSignalDSL.g:20414:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20415:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
@@ -64931,17 +66518,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__EachExpressionAssignment_3"
-    // InternalSignalDSL.g:19919:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20424:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19923:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19924:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20428:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20429:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19924:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19925:3: ruleXExpression
+            // InternalSignalDSL.g:20429:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20430:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
@@ -64976,17 +66563,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0"
-    // InternalSignalDSL.g:19934:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:20439:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19938:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:19939:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20443:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:20444:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:19939:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:19940:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:20444:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20445:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
@@ -65021,17 +66608,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1"
-    // InternalSignalDSL.g:19949:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:20454:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19953:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:19954:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20458:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:20459:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:19954:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:19955:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:20459:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20460:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
@@ -65066,17 +66653,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__ExpressionAssignment_5"
-    // InternalSignalDSL.g:19964:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20469:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19968:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19969:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20473:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20474:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19969:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19970:3: ruleXExpression
+            // InternalSignalDSL.g:20474:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20475:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
@@ -65111,17 +66698,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0"
-    // InternalSignalDSL.g:19979:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20484:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19983:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19984:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20488:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20489:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19984:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19985:3: ruleXExpression
+            // InternalSignalDSL.g:20489:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20490:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
@@ -65156,17 +66743,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1"
-    // InternalSignalDSL.g:19994:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20499:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19998:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19999:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20503:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20504:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19999:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20000:3: ruleXExpression
+            // InternalSignalDSL.g:20504:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20505:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
@@ -65201,17 +66788,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__EachExpressionAssignment_9"
-    // InternalSignalDSL.g:20009:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20514:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20013:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20014:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20518:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20519:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20014:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20015:3: ruleXExpression
+            // InternalSignalDSL.g:20519:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20520:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
@@ -65246,17 +66833,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__PredicateAssignment_3"
-    // InternalSignalDSL.g:20024:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20529:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20028:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20029:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20533:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20534:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20029:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20030:3: ruleXExpression
+            // InternalSignalDSL.g:20534:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20535:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
@@ -65291,17 +66878,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__BodyAssignment_5"
-    // InternalSignalDSL.g:20039:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20544:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20043:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20044:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20548:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20549:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20044:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20045:3: ruleXExpression
+            // InternalSignalDSL.g:20549:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20550:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
@@ -65336,17 +66923,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__BodyAssignment_2"
-    // InternalSignalDSL.g:20054:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20559:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20058:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20059:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20563:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20564:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20059:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20060:3: ruleXExpression
+            // InternalSignalDSL.g:20564:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20565:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
@@ -65381,17 +66968,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__PredicateAssignment_5"
-    // InternalSignalDSL.g:20069:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20574:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20073:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20074:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20578:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20579:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20074:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20075:3: ruleXExpression
+            // InternalSignalDSL.g:20579:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20580:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
@@ -65426,17 +67013,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__ExpressionsAssignment_2_0"
-    // InternalSignalDSL.g:20084:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:20589:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20088:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:20089:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20593:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:20594:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:20089:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:20090:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:20594:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20595:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
@@ -65471,28 +67058,28 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__WriteableAssignment_1_0"
-    // InternalSignalDSL.g:20099:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    // InternalSignalDSL.g:20604:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
     public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20103:1: ( ( ( 'var' ) ) )
-            // InternalSignalDSL.g:20104:2: ( ( 'var' ) )
+            // InternalSignalDSL.g:20608:1: ( ( ( 'var' ) ) )
+            // InternalSignalDSL.g:20609:2: ( ( 'var' ) )
             {
-            // InternalSignalDSL.g:20104:2: ( ( 'var' ) )
-            // InternalSignalDSL.g:20105:3: ( 'var' )
+            // InternalSignalDSL.g:20609:2: ( ( 'var' ) )
+            // InternalSignalDSL.g:20610:3: ( 'var' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
-            // InternalSignalDSL.g:20106:3: ( 'var' )
-            // InternalSignalDSL.g:20107:4: 'var'
+            // InternalSignalDSL.g:20611:3: ( 'var' )
+            // InternalSignalDSL.g:20612:4: 'var'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
-            match(input,111,FOLLOW_2); if (state.failed) return ;
+            match(input,110,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
@@ -65524,17 +67111,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__TypeAssignment_2_0_0_0"
-    // InternalSignalDSL.g:20118:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20623:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
     public final void rule__XVariableDeclaration__TypeAssignment_2_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20122:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20123:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20627:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20628:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20123:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20124:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20628:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20629:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
@@ -65569,17 +67156,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_0_0_1"
-    // InternalSignalDSL.g:20133:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20638:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
     public final void rule__XVariableDeclaration__NameAssignment_2_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20137:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:20138:2: ( ruleValidID )
+            // InternalSignalDSL.g:20642:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20643:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:20138:2: ( ruleValidID )
-            // InternalSignalDSL.g:20139:3: ruleValidID
+            // InternalSignalDSL.g:20643:2: ( ruleValidID )
+            // InternalSignalDSL.g:20644:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
@@ -65614,17 +67201,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_1"
-    // InternalSignalDSL.g:20148:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20653:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
     public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20152:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:20153:2: ( ruleValidID )
+            // InternalSignalDSL.g:20657:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20658:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:20153:2: ( ruleValidID )
-            // InternalSignalDSL.g:20154:3: ruleValidID
+            // InternalSignalDSL.g:20658:2: ( ruleValidID )
+            // InternalSignalDSL.g:20659:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
@@ -65659,17 +67246,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__RightAssignment_3_1"
-    // InternalSignalDSL.g:20163:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20668:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
     public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20167:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20168:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20672:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20673:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20168:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20169:3: ruleXExpression
+            // InternalSignalDSL.g:20673:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20674:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
@@ -65704,17 +67291,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalSignalDSL.g:20178:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20683:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20182:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20183:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20687:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20688:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20183:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20184:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20688:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20689:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -65749,17 +67336,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__NameAssignment_1"
-    // InternalSignalDSL.g:20193:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20698:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20197:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:20198:2: ( ruleValidID )
+            // InternalSignalDSL.g:20702:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20703:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:20198:2: ( ruleValidID )
-            // InternalSignalDSL.g:20199:3: ruleValidID
+            // InternalSignalDSL.g:20703:2: ( ruleValidID )
+            // InternalSignalDSL.g:20704:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -65794,17 +67381,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalSignalDSL.g:20208:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20713:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20212:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20213:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20717:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20718:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20213:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20214:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20718:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20719:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -65839,17 +67426,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__NameAssignment_1"
-    // InternalSignalDSL.g:20223:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20728:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20227:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:20228:2: ( ruleValidID )
+            // InternalSignalDSL.g:20732:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20733:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:20228:2: ( ruleValidID )
-            // InternalSignalDSL.g:20229:3: ruleValidID
+            // InternalSignalDSL.g:20733:2: ( ruleValidID )
+            // InternalSignalDSL.g:20734:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -65884,17 +67471,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_1"
-    // InternalSignalDSL.g:20238:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20743:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20242:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20243:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20747:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20748:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20243:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20244:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20748:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20749:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -65929,17 +67516,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1"
-    // InternalSignalDSL.g:20253:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20758:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20257:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20258:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20762:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20763:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20258:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20259:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20763:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20764:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -65974,23 +67561,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureAssignment_2"
-    // InternalSignalDSL.g:20268:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalSignalDSL.g:20773:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
     public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20272:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalSignalDSL.g:20273:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:20777:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalSignalDSL.g:20778:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalSignalDSL.g:20273:2: ( ( ruleIdOrSuper ) )
-            // InternalSignalDSL.g:20274:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:20778:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:20779:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
             }
-            // InternalSignalDSL.g:20275:3: ( ruleIdOrSuper )
-            // InternalSignalDSL.g:20276:4: ruleIdOrSuper
+            // InternalSignalDSL.g:20780:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:20781:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); 
@@ -66031,28 +67618,28 @@
 
 
     // $ANTLR start "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0"
-    // InternalSignalDSL.g:20287:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:20792:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
     public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20291:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:20292:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20796:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:20797:2: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:20292:2: ( ( '(' ) )
-            // InternalSignalDSL.g:20293:3: ( '(' )
+            // InternalSignalDSL.g:20797:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20798:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            // InternalSignalDSL.g:20294:3: ( '(' )
-            // InternalSignalDSL.g:20295:4: '('
+            // InternalSignalDSL.g:20799:3: ( '(' )
+            // InternalSignalDSL.g:20800:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
@@ -66084,17 +67671,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0"
-    // InternalSignalDSL.g:20306:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalSignalDSL.g:20811:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20310:1: ( ( ruleXShortClosure ) )
-            // InternalSignalDSL.g:20311:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20815:1: ( ( ruleXShortClosure ) )
+            // InternalSignalDSL.g:20816:2: ( ruleXShortClosure )
             {
-            // InternalSignalDSL.g:20311:2: ( ruleXShortClosure )
-            // InternalSignalDSL.g:20312:3: ruleXShortClosure
+            // InternalSignalDSL.g:20816:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20817:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
@@ -66129,17 +67716,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0"
-    // InternalSignalDSL.g:20321:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20826:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20325:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20326:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20830:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20831:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20326:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20327:3: ruleXExpression
+            // InternalSignalDSL.g:20831:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20832:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
@@ -66174,17 +67761,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1"
-    // InternalSignalDSL.g:20336:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20841:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20340:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20341:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20845:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20846:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20341:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20342:3: ruleXExpression
+            // InternalSignalDSL.g:20846:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20847:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
@@ -66219,17 +67806,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_4"
-    // InternalSignalDSL.g:20351:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    // InternalSignalDSL.g:20856:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20355:1: ( ( ruleXClosure ) )
-            // InternalSignalDSL.g:20356:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20860:1: ( ( ruleXClosure ) )
+            // InternalSignalDSL.g:20861:2: ( ruleXClosure )
             {
-            // InternalSignalDSL.g:20356:2: ( ruleXClosure )
-            // InternalSignalDSL.g:20357:3: ruleXClosure
+            // InternalSignalDSL.g:20861:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20862:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
@@ -66264,23 +67851,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ConstructorAssignment_2"
-    // InternalSignalDSL.g:20366:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:20871:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20370:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:20371:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20875:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:20876:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:20371:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:20372:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20876:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20877:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
             }
-            // InternalSignalDSL.g:20373:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:20374:4: ruleQualifiedName
+            // InternalSignalDSL.g:20878:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20879:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); 
@@ -66321,17 +67908,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_1"
-    // InternalSignalDSL.g:20385:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20890:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20389:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20390:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20894:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20895:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20390:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20391:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20895:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20896:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
@@ -66366,17 +67953,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1"
-    // InternalSignalDSL.g:20400:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20905:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20404:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20405:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20909:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20910:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20405:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20406:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20910:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20911:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
@@ -66411,28 +67998,28 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0"
-    // InternalSignalDSL.g:20415:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:20920:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
     public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20419:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:20420:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20924:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:20925:2: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:20420:2: ( ( '(' ) )
-            // InternalSignalDSL.g:20421:3: ( '(' )
+            // InternalSignalDSL.g:20925:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20926:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            // InternalSignalDSL.g:20422:3: ( '(' )
-            // InternalSignalDSL.g:20423:4: '('
+            // InternalSignalDSL.g:20927:3: ( '(' )
+            // InternalSignalDSL.g:20928:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
@@ -66464,17 +68051,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_0"
-    // InternalSignalDSL.g:20434:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    // InternalSignalDSL.g:20939:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20438:1: ( ( ruleXShortClosure ) )
-            // InternalSignalDSL.g:20439:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20943:1: ( ( ruleXShortClosure ) )
+            // InternalSignalDSL.g:20944:2: ( ruleXShortClosure )
             {
-            // InternalSignalDSL.g:20439:2: ( ruleXShortClosure )
-            // InternalSignalDSL.g:20440:3: ruleXShortClosure
+            // InternalSignalDSL.g:20944:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20945:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
@@ -66509,17 +68096,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0"
-    // InternalSignalDSL.g:20449:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20954:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20453:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20454:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20958:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20959:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20454:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20455:3: ruleXExpression
+            // InternalSignalDSL.g:20959:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20960:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
@@ -66554,17 +68141,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1"
-    // InternalSignalDSL.g:20464:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20969:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20468:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20469:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20973:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20974:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20469:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20470:3: ruleXExpression
+            // InternalSignalDSL.g:20974:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20975:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
@@ -66599,17 +68186,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_5"
-    // InternalSignalDSL.g:20479:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    // InternalSignalDSL.g:20984:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20483:1: ( ( ruleXClosure ) )
-            // InternalSignalDSL.g:20484:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20988:1: ( ( ruleXClosure ) )
+            // InternalSignalDSL.g:20989:2: ( ruleXClosure )
             {
-            // InternalSignalDSL.g:20484:2: ( ruleXClosure )
-            // InternalSignalDSL.g:20485:3: ruleXClosure
+            // InternalSignalDSL.g:20989:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20990:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
@@ -66644,28 +68231,28 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__IsTrueAssignment_1_1"
-    // InternalSignalDSL.g:20494:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    // InternalSignalDSL.g:20999:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
     public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20498:1: ( ( ( 'true' ) ) )
-            // InternalSignalDSL.g:20499:2: ( ( 'true' ) )
+            // InternalSignalDSL.g:21003:1: ( ( ( 'true' ) ) )
+            // InternalSignalDSL.g:21004:2: ( ( 'true' ) )
             {
-            // InternalSignalDSL.g:20499:2: ( ( 'true' ) )
-            // InternalSignalDSL.g:20500:3: ( 'true' )
+            // InternalSignalDSL.g:21004:2: ( ( 'true' ) )
+            // InternalSignalDSL.g:21005:3: ( 'true' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
-            // InternalSignalDSL.g:20501:3: ( 'true' )
-            // InternalSignalDSL.g:20502:4: 'true'
+            // InternalSignalDSL.g:21006:3: ( 'true' )
+            // InternalSignalDSL.g:21007:4: 'true'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
-            match(input,112,FOLLOW_2); if (state.failed) return ;
+            match(input,111,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
@@ -66697,17 +68284,17 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__ValueAssignment_1"
-    // InternalSignalDSL.g:20513:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    // InternalSignalDSL.g:21018:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
     public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20517:1: ( ( ruleNumber ) )
-            // InternalSignalDSL.g:20518:2: ( ruleNumber )
+            // InternalSignalDSL.g:21022:1: ( ( ruleNumber ) )
+            // InternalSignalDSL.g:21023:2: ( ruleNumber )
             {
-            // InternalSignalDSL.g:20518:2: ( ruleNumber )
-            // InternalSignalDSL.g:20519:3: ruleNumber
+            // InternalSignalDSL.g:21023:2: ( ruleNumber )
+            // InternalSignalDSL.g:21024:3: ruleNumber
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
@@ -66742,17 +68329,17 @@
 
 
     // $ANTLR start "rule__XStringLiteral__ValueAssignment_1"
-    // InternalSignalDSL.g:20528:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    // InternalSignalDSL.g:21033:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
     public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20532:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:20533:2: ( RULE_STRING )
+            // InternalSignalDSL.g:21037:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:21038:2: ( RULE_STRING )
             {
-            // InternalSignalDSL.g:20533:2: ( RULE_STRING )
-            // InternalSignalDSL.g:20534:3: RULE_STRING
+            // InternalSignalDSL.g:21038:2: ( RULE_STRING )
+            // InternalSignalDSL.g:21039:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
@@ -66783,23 +68370,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__TypeAssignment_3"
-    // InternalSignalDSL.g:20543:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:21048:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20547:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:20548:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:21052:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:21053:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:20548:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:20549:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:21053:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:21054:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
             }
-            // InternalSignalDSL.g:20550:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:20551:4: ruleQualifiedName
+            // InternalSignalDSL.g:21055:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:21056:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); 
@@ -66840,17 +68427,17 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__ArrayDimensionsAssignment_4"
-    // InternalSignalDSL.g:20562:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    // InternalSignalDSL.g:21067:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
     public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20566:1: ( ( ruleArrayBrackets ) )
-            // InternalSignalDSL.g:20567:2: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:21071:1: ( ( ruleArrayBrackets ) )
+            // InternalSignalDSL.g:21072:2: ( ruleArrayBrackets )
             {
-            // InternalSignalDSL.g:20567:2: ( ruleArrayBrackets )
-            // InternalSignalDSL.g:20568:3: ruleArrayBrackets
+            // InternalSignalDSL.g:21072:2: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:21073:3: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
@@ -66885,17 +68472,17 @@
 
 
     // $ANTLR start "rule__XThrowExpression__ExpressionAssignment_2"
-    // InternalSignalDSL.g:20577:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21082:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20581:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20582:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21086:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21087:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20582:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20583:3: ruleXExpression
+            // InternalSignalDSL.g:21087:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21088:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -66930,17 +68517,17 @@
 
 
     // $ANTLR start "rule__XReturnExpression__ExpressionAssignment_2"
-    // InternalSignalDSL.g:20592:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21097:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20596:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20597:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21101:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21102:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20597:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20598:3: ruleXExpression
+            // InternalSignalDSL.g:21102:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21103:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -66975,17 +68562,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__ExpressionAssignment_2"
-    // InternalSignalDSL.g:20607:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21112:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20611:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20612:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21116:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21117:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20612:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20613:3: ruleXExpression
+            // InternalSignalDSL.g:21117:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21118:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -67020,17 +68607,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0"
-    // InternalSignalDSL.g:20622:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    // InternalSignalDSL.g:21127:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
     public final void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20626:1: ( ( ruleXCatchClause ) )
-            // InternalSignalDSL.g:20627:2: ( ruleXCatchClause )
+            // InternalSignalDSL.g:21131:1: ( ( ruleXCatchClause ) )
+            // InternalSignalDSL.g:21132:2: ( ruleXCatchClause )
             {
-            // InternalSignalDSL.g:20627:2: ( ruleXCatchClause )
-            // InternalSignalDSL.g:20628:3: ruleXCatchClause
+            // InternalSignalDSL.g:21132:2: ( ruleXCatchClause )
+            // InternalSignalDSL.g:21133:3: ruleXCatchClause
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
@@ -67065,17 +68652,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1"
-    // InternalSignalDSL.g:20637:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21142:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20641:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20642:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21146:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21147:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20642:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20643:3: ruleXExpression
+            // InternalSignalDSL.g:21147:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21148:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
@@ -67110,17 +68697,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1"
-    // InternalSignalDSL.g:20652:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21157:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20656:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20657:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21161:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21162:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20657:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20658:3: ruleXExpression
+            // InternalSignalDSL.g:21162:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21163:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
@@ -67155,17 +68742,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ParamAssignment_1"
-    // InternalSignalDSL.g:20667:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21172:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20671:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20672:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21176:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21177:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20672:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20673:3: ruleXExpression
+            // InternalSignalDSL.g:21177:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21178:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
@@ -67200,17 +68787,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ExpressionAssignment_3"
-    // InternalSignalDSL.g:20682:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21187:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20686:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20687:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21191:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21192:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20687:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20688:3: ruleXExpression
+            // InternalSignalDSL.g:21192:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21193:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
@@ -67245,17 +68832,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__DeclaredParamAssignment_2"
-    // InternalSignalDSL.g:20697:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    // InternalSignalDSL.g:21202:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
     public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20701:1: ( ( ruleFullJvmFormalParameter ) )
-            // InternalSignalDSL.g:20702:2: ( ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:21206:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalSignalDSL.g:21207:2: ( ruleFullJvmFormalParameter )
             {
-            // InternalSignalDSL.g:20702:2: ( ruleFullJvmFormalParameter )
-            // InternalSignalDSL.g:20703:3: ruleFullJvmFormalParameter
+            // InternalSignalDSL.g:21207:2: ( ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:21208:3: ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
@@ -67290,17 +68877,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__ExpressionAssignment_4"
-    // InternalSignalDSL.g:20712:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:21217:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
     public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20716:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20717:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21221:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:21222:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20717:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20718:3: ruleXExpression
+            // InternalSignalDSL.g:21222:2: ( ruleXExpression )
+            // InternalSignalDSL.g:21223:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
@@ -67335,17 +68922,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0"
-    // InternalSignalDSL.g:20727:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:21232:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20731:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20732:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21236:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:21237:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20732:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20733:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:21237:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21238:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
@@ -67380,17 +68967,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1"
-    // InternalSignalDSL.g:20742:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:21247:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20746:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20747:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21251:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:21252:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20747:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20748:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:21252:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21253:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
@@ -67425,17 +69012,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ReturnTypeAssignment_2"
-    // InternalSignalDSL.g:20757:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:21262:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20761:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20762:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21266:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:21267:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20762:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20763:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:21267:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21268:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
@@ -67470,23 +69057,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_0"
-    // InternalSignalDSL.g:20772:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:21277:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
     public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20776:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:20777:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:21281:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:21282:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:20777:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:20778:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:21282:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:21283:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
             }
-            // InternalSignalDSL.g:20779:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:20780:4: ruleQualifiedName
+            // InternalSignalDSL.g:21284:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:21285:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); 
@@ -67527,17 +69114,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1"
-    // InternalSignalDSL.g:20791:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:21296:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20795:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20796:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21300:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:21301:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20796:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20797:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:21301:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21302:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -67572,17 +69159,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1"
-    // InternalSignalDSL.g:20806:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:21311:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20810:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20811:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21315:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:21316:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20811:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20812:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:21316:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21317:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -67617,23 +69204,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1"
-    // InternalSignalDSL.g:20821:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    // InternalSignalDSL.g:21326:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
     public final void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20825:1: ( ( ( ruleValidID ) ) )
-            // InternalSignalDSL.g:20826:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:21330:1: ( ( ( ruleValidID ) ) )
+            // InternalSignalDSL.g:21331:2: ( ( ruleValidID ) )
             {
-            // InternalSignalDSL.g:20826:2: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:20827:3: ( ruleValidID )
+            // InternalSignalDSL.g:21331:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:21332:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
             }
-            // InternalSignalDSL.g:20828:3: ( ruleValidID )
-            // InternalSignalDSL.g:20829:4: ruleValidID
+            // InternalSignalDSL.g:21333:3: ( ruleValidID )
+            // InternalSignalDSL.g:21334:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); 
@@ -67674,17 +69261,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1"
-    // InternalSignalDSL.g:20840:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:21345:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20844:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20845:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21349:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:21350:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20845:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20846:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:21350:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21351:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
@@ -67719,17 +69306,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1"
-    // InternalSignalDSL.g:20855:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:21360:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20859:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20860:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21364:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:21365:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20860:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20861:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:21365:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:21366:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
@@ -67764,17 +69351,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0"
-    // InternalSignalDSL.g:20870:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    // InternalSignalDSL.g:21375:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20874:1: ( ( ruleJvmUpperBound ) )
-            // InternalSignalDSL.g:20875:2: ( ruleJvmUpperBound )
+            // InternalSignalDSL.g:21379:1: ( ( ruleJvmUpperBound ) )
+            // InternalSignalDSL.g:21380:2: ( ruleJvmUpperBound )
             {
-            // InternalSignalDSL.g:20875:2: ( ruleJvmUpperBound )
-            // InternalSignalDSL.g:20876:3: ruleJvmUpperBound
+            // InternalSignalDSL.g:21380:2: ( ruleJvmUpperBound )
+            // InternalSignalDSL.g:21381:3: ruleJvmUpperBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
@@ -67809,17 +69396,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1"
-    // InternalSignalDSL.g:20885:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    // InternalSignalDSL.g:21390:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20889:1: ( ( ruleJvmUpperBoundAnded ) )
-            // InternalSignalDSL.g:20890:2: ( ruleJvmUpperBoundAnded )
+            // InternalSignalDSL.g:21394:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalSignalDSL.g:21395:2: ( ruleJvmUpperBoundAnded )
             {
-            // InternalSignalDSL.g:20890:2: ( ruleJvmUpperBoundAnded )
-            // InternalSignalDSL.g:20891:3: ruleJvmUpperBoundAnded
+            // InternalSignalDSL.g:21395:2: ( ruleJvmUpperBoundAnded )
+            // InternalSignalDSL.g:21396:3: ruleJvmUpperBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
@@ -67854,17 +69441,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0"
-    // InternalSignalDSL.g:20900:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    // InternalSignalDSL.g:21405:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20904:1: ( ( ruleJvmLowerBound ) )
-            // InternalSignalDSL.g:20905:2: ( ruleJvmLowerBound )
+            // InternalSignalDSL.g:21409:1: ( ( ruleJvmLowerBound ) )
+            // InternalSignalDSL.g:21410:2: ( ruleJvmLowerBound )
             {
-            // InternalSignalDSL.g:20905:2: ( ruleJvmLowerBound )
-            // InternalSignalDSL.g:20906:3: ruleJvmLowerBound
+            // InternalSignalDSL.g:21410:2: ( ruleJvmLowerBound )
+            // InternalSignalDSL.g:21411:3: ruleJvmLowerBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
@@ -67899,17 +69486,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1"
-    // InternalSignalDSL.g:20915:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    // InternalSignalDSL.g:21420:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20919:1: ( ( ruleJvmLowerBoundAnded ) )
-            // InternalSignalDSL.g:20920:2: ( ruleJvmLowerBoundAnded )
+            // InternalSignalDSL.g:21424:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalSignalDSL.g:21425:2: ( ruleJvmLowerBoundAnded )
             {
-            // InternalSignalDSL.g:20920:2: ( ruleJvmLowerBoundAnded )
-            // InternalSignalDSL.g:20921:3: ruleJvmLowerBoundAnded
+            // InternalSignalDSL.g:21425:2: ( ruleJvmLowerBoundAnded )
+            // InternalSignalDSL.g:21426:3: ruleJvmLowerBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
@@ -67944,17 +69531,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20930:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:21435:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20934:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20935:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21439:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:21440:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20935:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20936:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:21440:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21441:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -67989,17 +69576,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20945:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:21450:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20949:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20950:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21454:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:21455:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20950:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20951:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:21455:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21456:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -68034,17 +69621,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20960:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:21465:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20964:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20965:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21469:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:21470:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20965:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20966:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:21470:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21471:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -68079,17 +69666,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20975:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:21480:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20979:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20980:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21484:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:21485:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20980:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20981:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:21485:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:21486:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -68124,17 +69711,17 @@
 
 
     // $ANTLR start "rule__XImportSection__ImportDeclarationsAssignment"
-    // InternalSignalDSL.g:20990:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    // InternalSignalDSL.g:21495:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
     public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20994:1: ( ( ruleXImportDeclaration ) )
-            // InternalSignalDSL.g:20995:2: ( ruleXImportDeclaration )
+            // InternalSignalDSL.g:21499:1: ( ( ruleXImportDeclaration ) )
+            // InternalSignalDSL.g:21500:2: ( ruleXImportDeclaration )
             {
-            // InternalSignalDSL.g:20995:2: ( ruleXImportDeclaration )
-            // InternalSignalDSL.g:20996:3: ruleXImportDeclaration
+            // InternalSignalDSL.g:21500:2: ( ruleXImportDeclaration )
+            // InternalSignalDSL.g:21501:3: ruleXImportDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); 
@@ -68167,19 +69754,19 @@
     }
     // $ANTLR end "rule__XImportSection__ImportDeclarationsAssignment"
 
-    // $ANTLR start synpred12_InternalSignalDSL
-    public final void synpred12_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2655:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
-        // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+    // $ANTLR start synpred13_InternalSignalDSL
+    public final void synpred13_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:2703:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
+        // InternalSignalDSL.g:2703:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
         {
-        // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-        // InternalSignalDSL.g:2656:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalSignalDSL.g:2703:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        // InternalSignalDSL.g:2704:3: ( rule__XAnnotation__Group_3_1_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
         }
-        // InternalSignalDSL.g:2657:3: ( rule__XAnnotation__Group_3_1_0__0 )
-        // InternalSignalDSL.g:2657:4: rule__XAnnotation__Group_3_1_0__0
+        // InternalSignalDSL.g:2705:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalSignalDSL.g:2705:4: rule__XAnnotation__Group_3_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotation__Group_3_1_0__0();
@@ -68195,51 +69782,51 @@
 
         }
     }
-    // $ANTLR end synpred12_InternalSignalDSL
-
-    // $ANTLR start synpred13_InternalSignalDSL
-    public final void synpred13_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2676:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
-        // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-        {
-        // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-        // InternalSignalDSL.g:2677:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-        {
-        if ( state.backtracking==0 ) {
-           before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
-        }
-        // InternalSignalDSL.g:2678:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-        // InternalSignalDSL.g:2678:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XAnnotationElementValueOrCommaList__Group_0__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-
-
-        }
-
-
-        }
-    }
     // $ANTLR end synpred13_InternalSignalDSL
 
     // $ANTLR start synpred14_InternalSignalDSL
     public final void synpred14_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2697:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
-        // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalSignalDSL.g:2724:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
+        // InternalSignalDSL.g:2724:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
         {
-        // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-        // InternalSignalDSL.g:2698:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalSignalDSL.g:2724:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        // InternalSignalDSL.g:2725:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+        }
+        // InternalSignalDSL.g:2726:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalSignalDSL.g:2726:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred14_InternalSignalDSL
+
+    // $ANTLR start synpred15_InternalSignalDSL
+    public final void synpred15_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:2745:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
+        // InternalSignalDSL.g:2745:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        {
+        // InternalSignalDSL.g:2745:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalSignalDSL.g:2746:3: ( rule__XAnnotationElementValue__Group_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
         }
-        // InternalSignalDSL.g:2699:3: ( rule__XAnnotationElementValue__Group_0__0 )
-        // InternalSignalDSL.g:2699:4: rule__XAnnotationElementValue__Group_0__0
+        // InternalSignalDSL.g:2747:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalSignalDSL.g:2747:4: rule__XAnnotationElementValue__Group_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotationElementValue__Group_0__0();
@@ -68255,21 +69842,21 @@
 
         }
     }
-    // $ANTLR end synpred14_InternalSignalDSL
+    // $ANTLR end synpred15_InternalSignalDSL
 
-    // $ANTLR start synpred39_InternalSignalDSL
-    public final void synpred39_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2982:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
-        // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+    // $ANTLR start synpred40_InternalSignalDSL
+    public final void synpred40_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3030:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
+        // InternalSignalDSL.g:3030:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
         {
-        // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-        // InternalSignalDSL.g:2983:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalSignalDSL.g:3030:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        // InternalSignalDSL.g:3031:3: ( rule__OpOther__Group_6_1_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
         }
-        // InternalSignalDSL.g:2984:3: ( rule__OpOther__Group_6_1_0__0 )
-        // InternalSignalDSL.g:2984:4: rule__OpOther__Group_6_1_0__0
+        // InternalSignalDSL.g:3032:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalSignalDSL.g:3032:4: rule__OpOther__Group_6_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__OpOther__Group_6_1_0__0();
@@ -68285,15 +69872,15 @@
 
         }
     }
-    // $ANTLR end synpred39_InternalSignalDSL
+    // $ANTLR end synpred40_InternalSignalDSL
 
-    // $ANTLR start synpred40_InternalSignalDSL
-    public final void synpred40_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2988:2: ( ( '<' ) )
-        // InternalSignalDSL.g:2988:2: ( '<' )
+    // $ANTLR start synpred41_InternalSignalDSL
+    public final void synpred41_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3036:2: ( ( '<' ) )
+        // InternalSignalDSL.g:3036:2: ( '<' )
         {
-        // InternalSignalDSL.g:2988:2: ( '<' )
-        // InternalSignalDSL.g:2989:3: '<'
+        // InternalSignalDSL.g:3036:2: ( '<' )
+        // InternalSignalDSL.g:3037:3: '<'
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -68305,21 +69892,21 @@
 
         }
     }
-    // $ANTLR end synpred40_InternalSignalDSL
+    // $ANTLR end synpred41_InternalSignalDSL
 
-    // $ANTLR start synpred53_InternalSignalDSL
-    public final void synpred53_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3201:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
-        // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+    // $ANTLR start synpred54_InternalSignalDSL
+    public final void synpred54_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3249:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
+        // InternalSignalDSL.g:3249:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
         {
-        // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-        // InternalSignalDSL.g:3202:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalSignalDSL.g:3249:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        // InternalSignalDSL.g:3250:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
         }
-        // InternalSignalDSL.g:3203:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-        // InternalSignalDSL.g:3203:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+        // InternalSignalDSL.g:3251:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalSignalDSL.g:3251:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -68335,21 +69922,21 @@
 
         }
     }
-    // $ANTLR end synpred53_InternalSignalDSL
+    // $ANTLR end synpred54_InternalSignalDSL
 
-    // $ANTLR start synpred61_InternalSignalDSL
-    public final void synpred61_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3264:2: ( ( ( ruleXForLoopExpression ) ) )
-        // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
+    // $ANTLR start synpred62_InternalSignalDSL
+    public final void synpred62_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3312:2: ( ( ( ruleXForLoopExpression ) ) )
+        // InternalSignalDSL.g:3312:2: ( ( ruleXForLoopExpression ) )
         {
-        // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
-        // InternalSignalDSL.g:3265:3: ( ruleXForLoopExpression )
+        // InternalSignalDSL.g:3312:2: ( ( ruleXForLoopExpression ) )
+        // InternalSignalDSL.g:3313:3: ( ruleXForLoopExpression )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
         }
-        // InternalSignalDSL.g:3266:3: ( ruleXForLoopExpression )
-        // InternalSignalDSL.g:3266:4: ruleXForLoopExpression
+        // InternalSignalDSL.g:3314:3: ( ruleXForLoopExpression )
+        // InternalSignalDSL.g:3314:4: ruleXForLoopExpression
         {
         pushFollow(FOLLOW_2);
         ruleXForLoopExpression();
@@ -68365,15 +69952,15 @@
 
         }
     }
-    // $ANTLR end synpred61_InternalSignalDSL
+    // $ANTLR end synpred62_InternalSignalDSL
 
-    // $ANTLR start synpred62_InternalSignalDSL
-    public final void synpred62_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3270:2: ( ( ruleXBasicForLoopExpression ) )
-        // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
+    // $ANTLR start synpred63_InternalSignalDSL
+    public final void synpred63_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3318:2: ( ( ruleXBasicForLoopExpression ) )
+        // InternalSignalDSL.g:3318:2: ( ruleXBasicForLoopExpression )
         {
-        // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
-        // InternalSignalDSL.g:3271:3: ruleXBasicForLoopExpression
+        // InternalSignalDSL.g:3318:2: ( ruleXBasicForLoopExpression )
+        // InternalSignalDSL.g:3319:3: ruleXBasicForLoopExpression
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -68389,21 +69976,21 @@
 
         }
     }
-    // $ANTLR end synpred62_InternalSignalDSL
+    // $ANTLR end synpred63_InternalSignalDSL
 
-    // $ANTLR start synpred75_InternalSignalDSL
-    public final void synpred75_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3393:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
-        // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+    // $ANTLR start synpred76_InternalSignalDSL
+    public final void synpred76_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3441:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
+        // InternalSignalDSL.g:3441:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
         {
-        // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-        // InternalSignalDSL.g:3394:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalSignalDSL.g:3441:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        // InternalSignalDSL.g:3442:3: ( rule__XSwitchExpression__Group_2_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
         }
-        // InternalSignalDSL.g:3395:3: ( rule__XSwitchExpression__Group_2_0__0 )
-        // InternalSignalDSL.g:3395:4: rule__XSwitchExpression__Group_2_0__0
+        // InternalSignalDSL.g:3443:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalSignalDSL.g:3443:4: rule__XSwitchExpression__Group_2_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XSwitchExpression__Group_2_0__0();
@@ -68419,21 +70006,21 @@
 
         }
     }
-    // $ANTLR end synpred75_InternalSignalDSL
+    // $ANTLR end synpred76_InternalSignalDSL
 
-    // $ANTLR start synpred79_InternalSignalDSL
-    public final void synpred79_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3477:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
-        // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+    // $ANTLR start synpred80_InternalSignalDSL
+    public final void synpred80_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3525:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
+        // InternalSignalDSL.g:3525:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
         {
-        // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-        // InternalSignalDSL.g:3478:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalSignalDSL.g:3525:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        // InternalSignalDSL.g:3526:3: ( rule__XVariableDeclaration__Group_2_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
         }
-        // InternalSignalDSL.g:3479:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-        // InternalSignalDSL.g:3479:4: rule__XVariableDeclaration__Group_2_0__0
+        // InternalSignalDSL.g:3527:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalSignalDSL.g:3527:4: rule__XVariableDeclaration__Group_2_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XVariableDeclaration__Group_2_0__0();
@@ -68449,21 +70036,21 @@
 
         }
     }
-    // $ANTLR end synpred79_InternalSignalDSL
+    // $ANTLR end synpred80_InternalSignalDSL
 
-    // $ANTLR start synpred80_InternalSignalDSL
-    public final void synpred80_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3498:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
-        // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+    // $ANTLR start synpred81_InternalSignalDSL
+    public final void synpred81_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3546:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
+        // InternalSignalDSL.g:3546:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
         {
-        // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-        // InternalSignalDSL.g:3499:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalSignalDSL.g:3546:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        // InternalSignalDSL.g:3547:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
         }
-        // InternalSignalDSL.g:3500:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-        // InternalSignalDSL.g:3500:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+        // InternalSignalDSL.g:3548:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalSignalDSL.g:3548:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -68479,21 +70066,21 @@
 
         }
     }
-    // $ANTLR end synpred80_InternalSignalDSL
+    // $ANTLR end synpred81_InternalSignalDSL
 
-    // $ANTLR start synpred86_InternalSignalDSL
-    public final void synpred86_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3579:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
-        // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+    // $ANTLR start synpred87_InternalSignalDSL
+    public final void synpred87_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3627:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
+        // InternalSignalDSL.g:3627:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
         {
-        // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-        // InternalSignalDSL.g:3580:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalSignalDSL.g:3627:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        // InternalSignalDSL.g:3628:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
         }
-        // InternalSignalDSL.g:3581:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-        // InternalSignalDSL.g:3581:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+        // InternalSignalDSL.g:3629:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalSignalDSL.g:3629:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -68509,12 +70096,12 @@
 
         }
     }
-    // $ANTLR end synpred86_InternalSignalDSL
+    // $ANTLR end synpred87_InternalSignalDSL
 
-    // $ANTLR start synpred119_InternalSignalDSL
-    public final void synpred119_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6851:3: ( rule__XAssignment__Group_1_1__0 )
-        // InternalSignalDSL.g:6851:3: rule__XAssignment__Group_1_1__0
+    // $ANTLR start synpred122_InternalSignalDSL
+    public final void synpred122_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:7250:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalSignalDSL.g:7250:3: rule__XAssignment__Group_1_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XAssignment__Group_1_1__0();
@@ -68524,60 +70111,15 @@
 
         }
     }
-    // $ANTLR end synpred119_InternalSignalDSL
-
-    // $ANTLR start synpred121_InternalSignalDSL
-    public final void synpred121_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7202:3: ( rule__XOrExpression__Group_1__0 )
-        // InternalSignalDSL.g:7202:3: rule__XOrExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XOrExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred121_InternalSignalDSL
-
-    // $ANTLR start synpred122_InternalSignalDSL
-    public final void synpred122_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7391:3: ( rule__XAndExpression__Group_1__0 )
-        // InternalSignalDSL.g:7391:3: rule__XAndExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XAndExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
     // $ANTLR end synpred122_InternalSignalDSL
 
-    // $ANTLR start synpred123_InternalSignalDSL
-    public final void synpred123_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7580:3: ( rule__XEqualityExpression__Group_1__0 )
-        // InternalSignalDSL.g:7580:3: rule__XEqualityExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XEqualityExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred123_InternalSignalDSL
-
     // $ANTLR start synpred124_InternalSignalDSL
     public final void synpred124_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7769:3: ( rule__XRelationalExpression__Alternatives_1 )
-        // InternalSignalDSL.g:7769:3: rule__XRelationalExpression__Alternatives_1
+        // InternalSignalDSL.g:7601:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalSignalDSL.g:7601:3: rule__XOrExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XRelationalExpression__Alternatives_1();
+        rule__XOrExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68588,11 +70130,11 @@
 
     // $ANTLR start synpred125_InternalSignalDSL
     public final void synpred125_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8147:3: ( rule__XOtherOperatorExpression__Group_1__0 )
-        // InternalSignalDSL.g:8147:3: rule__XOtherOperatorExpression__Group_1__0
+        // InternalSignalDSL.g:7790:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalSignalDSL.g:7790:3: rule__XAndExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XOtherOperatorExpression__Group_1__0();
+        rule__XAndExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68603,11 +70145,11 @@
 
     // $ANTLR start synpred126_InternalSignalDSL
     public final void synpred126_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8660:3: ( rule__XAdditiveExpression__Group_1__0 )
-        // InternalSignalDSL.g:8660:3: rule__XAdditiveExpression__Group_1__0
+        // InternalSignalDSL.g:7979:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalSignalDSL.g:7979:3: rule__XEqualityExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XAdditiveExpression__Group_1__0();
+        rule__XEqualityExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68618,11 +70160,11 @@
 
     // $ANTLR start synpred127_InternalSignalDSL
     public final void synpred127_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8849:3: ( rule__XMultiplicativeExpression__Group_1__0 )
-        // InternalSignalDSL.g:8849:3: rule__XMultiplicativeExpression__Group_1__0
+        // InternalSignalDSL.g:8168:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalSignalDSL.g:8168:3: rule__XRelationalExpression__Alternatives_1
         {
         pushFollow(FOLLOW_2);
-        rule__XMultiplicativeExpression__Group_1__0();
+        rule__XRelationalExpression__Alternatives_1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68633,11 +70175,11 @@
 
     // $ANTLR start synpred128_InternalSignalDSL
     public final void synpred128_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:9119:3: ( rule__XCastedExpression__Group_1__0 )
-        // InternalSignalDSL.g:9119:3: rule__XCastedExpression__Group_1__0
+        // InternalSignalDSL.g:8546:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalSignalDSL.g:8546:3: rule__XOtherOperatorExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XCastedExpression__Group_1__0();
+        rule__XOtherOperatorExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68648,11 +70190,11 @@
 
     // $ANTLR start synpred129_InternalSignalDSL
     public final void synpred129_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:9308:3: ( rule__XPostfixOperation__Group_1__0 )
-        // InternalSignalDSL.g:9308:3: rule__XPostfixOperation__Group_1__0
+        // InternalSignalDSL.g:9059:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalSignalDSL.g:9059:3: rule__XAdditiveExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XPostfixOperation__Group_1__0();
+        rule__XAdditiveExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68663,11 +70205,11 @@
 
     // $ANTLR start synpred130_InternalSignalDSL
     public final void synpred130_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:9443:3: ( rule__XMemberFeatureCall__Alternatives_1 )
-        // InternalSignalDSL.g:9443:3: rule__XMemberFeatureCall__Alternatives_1
+        // InternalSignalDSL.g:9248:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalSignalDSL.g:9248:3: rule__XMultiplicativeExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XMemberFeatureCall__Alternatives_1();
+        rule__XMultiplicativeExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68676,13 +70218,28 @@
     }
     // $ANTLR end synpred130_InternalSignalDSL
 
-    // $ANTLR start synpred132_InternalSignalDSL
-    public final void synpred132_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:9741:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
-        // InternalSignalDSL.g:9741:3: rule__XMemberFeatureCall__Group_1_1_3__0
+    // $ANTLR start synpred131_InternalSignalDSL
+    public final void synpred131_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:9518:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalSignalDSL.g:9518:3: rule__XCastedExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XMemberFeatureCall__Group_1_1_3__0();
+        rule__XCastedExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred131_InternalSignalDSL
+
+    // $ANTLR start synpred132_InternalSignalDSL
+    public final void synpred132_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:9707:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalSignalDSL.g:9707:3: rule__XPostfixOperation__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XPostfixOperation__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -68693,8 +70250,38 @@
 
     // $ANTLR start synpred133_InternalSignalDSL
     public final void synpred133_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:9767:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
-        // InternalSignalDSL.g:9767:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+        // InternalSignalDSL.g:9842:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalSignalDSL.g:9842:3: rule__XMemberFeatureCall__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred133_InternalSignalDSL
+
+    // $ANTLR start synpred135_InternalSignalDSL
+    public final void synpred135_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:10140:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalSignalDSL.g:10140:3: rule__XMemberFeatureCall__Group_1_1_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Group_1_1_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred135_InternalSignalDSL
+
+    // $ANTLR start synpred136_InternalSignalDSL
+    public final void synpred136_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:10166:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalSignalDSL.g:10166:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -68704,12 +70291,12 @@
 
         }
     }
-    // $ANTLR end synpred133_InternalSignalDSL
+    // $ANTLR end synpred136_InternalSignalDSL
 
-    // $ANTLR start synpred141_InternalSignalDSL
-    public final void synpred141_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:10740:3: ( rule__XClosure__Group_1__0 )
-        // InternalSignalDSL.g:10740:3: rule__XClosure__Group_1__0
+    // $ANTLR start synpred144_InternalSignalDSL
+    public final void synpred144_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:11139:3: ( rule__XClosure__Group_1__0 )
+        // InternalSignalDSL.g:11139:3: rule__XClosure__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XClosure__Group_1__0();
@@ -68719,12 +70306,12 @@
 
         }
     }
-    // $ANTLR end synpred141_InternalSignalDSL
+    // $ANTLR end synpred144_InternalSignalDSL
 
-    // $ANTLR start synpred148_InternalSignalDSL
-    public final void synpred148_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:11711:3: ( rule__XIfExpression__Group_6__0 )
-        // InternalSignalDSL.g:11711:3: rule__XIfExpression__Group_6__0
+    // $ANTLR start synpred151_InternalSignalDSL
+    public final void synpred151_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:12110:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalSignalDSL.g:12110:3: rule__XIfExpression__Group_6__0
         {
         pushFollow(FOLLOW_2);
         rule__XIfExpression__Group_6__0();
@@ -68734,12 +70321,12 @@
 
         }
     }
-    // $ANTLR end synpred148_InternalSignalDSL
+    // $ANTLR end synpred151_InternalSignalDSL
 
-    // $ANTLR start synpred151_InternalSignalDSL
-    public final void synpred151_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:12171:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
-        // InternalSignalDSL.g:12171:3: rule__XSwitchExpression__Group_2_1_0__0
+    // $ANTLR start synpred154_InternalSignalDSL
+    public final void synpred154_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:12570:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalSignalDSL.g:12570:3: rule__XSwitchExpression__Group_2_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XSwitchExpression__Group_2_1_0__0();
@@ -68749,12 +70336,12 @@
 
         }
     }
-    // $ANTLR end synpred151_InternalSignalDSL
+    // $ANTLR end synpred154_InternalSignalDSL
 
-    // $ANTLR start synpred164_InternalSignalDSL
-    public final void synpred164_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14304:3: ( rule__XFeatureCall__Group_3__0 )
-        // InternalSignalDSL.g:14304:3: rule__XFeatureCall__Group_3__0
+    // $ANTLR start synpred167_InternalSignalDSL
+    public final void synpred167_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:14703:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalSignalDSL.g:14703:3: rule__XFeatureCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__Group_3__0();
@@ -68764,12 +70351,12 @@
 
         }
     }
-    // $ANTLR end synpred164_InternalSignalDSL
+    // $ANTLR end synpred167_InternalSignalDSL
 
-    // $ANTLR start synpred165_InternalSignalDSL
-    public final void synpred165_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14330:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
-        // InternalSignalDSL.g:14330:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+    // $ANTLR start synpred168_InternalSignalDSL
+    public final void synpred168_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:14729:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalSignalDSL.g:14729:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
@@ -68779,12 +70366,12 @@
 
         }
     }
-    // $ANTLR end synpred165_InternalSignalDSL
+    // $ANTLR end synpred168_InternalSignalDSL
 
-    // $ANTLR start synpred169_InternalSignalDSL
-    public final void synpred169_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14790:3: ( rule__XConstructorCall__Group_3__0 )
-        // InternalSignalDSL.g:14790:3: rule__XConstructorCall__Group_3__0
+    // $ANTLR start synpred172_InternalSignalDSL
+    public final void synpred172_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:15189:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalSignalDSL.g:15189:3: rule__XConstructorCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__Group_3__0();
@@ -68794,12 +70381,12 @@
 
         }
     }
-    // $ANTLR end synpred169_InternalSignalDSL
+    // $ANTLR end synpred172_InternalSignalDSL
 
-    // $ANTLR start synpred170_InternalSignalDSL
-    public final void synpred170_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14817:3: ( rule__XConstructorCall__Group_4__0 )
-        // InternalSignalDSL.g:14817:3: rule__XConstructorCall__Group_4__0
+    // $ANTLR start synpred173_InternalSignalDSL
+    public final void synpred173_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:15216:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalSignalDSL.g:15216:3: rule__XConstructorCall__Group_4__0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__Group_4__0();
@@ -68809,12 +70396,12 @@
 
         }
     }
-    // $ANTLR end synpred170_InternalSignalDSL
+    // $ANTLR end synpred173_InternalSignalDSL
 
-    // $ANTLR start synpred171_InternalSignalDSL
-    public final void synpred171_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14843:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
-        // InternalSignalDSL.g:14843:3: rule__XConstructorCall__ArgumentsAssignment_5
+    // $ANTLR start synpred174_InternalSignalDSL
+    public final void synpred174_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:15242:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalSignalDSL.g:15242:3: rule__XConstructorCall__ArgumentsAssignment_5
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__ArgumentsAssignment_5();
@@ -68824,12 +70411,12 @@
 
         }
     }
-    // $ANTLR end synpred171_InternalSignalDSL
+    // $ANTLR end synpred174_InternalSignalDSL
 
-    // $ANTLR start synpred176_InternalSignalDSL
-    public final void synpred176_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:15734:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
-        // InternalSignalDSL.g:15734:3: rule__XReturnExpression__ExpressionAssignment_2
+    // $ANTLR start synpred179_InternalSignalDSL
+    public final void synpred179_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:16133:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalSignalDSL.g:16133:3: rule__XReturnExpression__ExpressionAssignment_2
         {
         pushFollow(FOLLOW_2);
         rule__XReturnExpression__ExpressionAssignment_2();
@@ -68839,12 +70426,12 @@
 
         }
     }
-    // $ANTLR end synpred176_InternalSignalDSL
+    // $ANTLR end synpred179_InternalSignalDSL
 
-    // $ANTLR start synpred177_InternalSignalDSL
-    public final void synpred177_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:15876:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-        // InternalSignalDSL.g:15876:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+    // $ANTLR start synpred180_InternalSignalDSL
+    public final void synpred180_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:16275:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalSignalDSL.g:16275:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
         {
         pushFollow(FOLLOW_2);
         rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
@@ -68854,12 +70441,12 @@
 
         }
     }
-    // $ANTLR end synpred177_InternalSignalDSL
+    // $ANTLR end synpred180_InternalSignalDSL
 
-    // $ANTLR start synpred178_InternalSignalDSL
-    public final void synpred178_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:15903:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
-        // InternalSignalDSL.g:15903:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+    // $ANTLR start synpred181_InternalSignalDSL
+    public final void synpred181_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:16302:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalSignalDSL.g:16302:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XTryCatchFinallyExpression__Group_3_0_1__0();
@@ -68869,12 +70456,12 @@
 
         }
     }
-    // $ANTLR end synpred178_InternalSignalDSL
+    // $ANTLR end synpred181_InternalSignalDSL
 
-    // $ANTLR start synpred179_InternalSignalDSL
-    public final void synpred179_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:16416:3: ( rule__QualifiedName__Group_1__0 )
-        // InternalSignalDSL.g:16416:3: rule__QualifiedName__Group_1__0
+    // $ANTLR start synpred182_InternalSignalDSL
+    public final void synpred182_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:16815:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalSignalDSL.g:16815:3: rule__QualifiedName__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__QualifiedName__Group_1__0();
@@ -68884,12 +70471,12 @@
 
         }
     }
-    // $ANTLR end synpred179_InternalSignalDSL
+    // $ANTLR end synpred182_InternalSignalDSL
 
-    // $ANTLR start synpred181_InternalSignalDSL
-    public final void synpred181_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:16632:3: ( rule__JvmTypeReference__Group_0_1__0 )
-        // InternalSignalDSL.g:16632:3: rule__JvmTypeReference__Group_0_1__0
+    // $ANTLR start synpred184_InternalSignalDSL
+    public final void synpred184_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:17031:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalSignalDSL.g:17031:3: rule__JvmTypeReference__Group_0_1__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmTypeReference__Group_0_1__0();
@@ -68899,12 +70486,12 @@
 
         }
     }
-    // $ANTLR end synpred181_InternalSignalDSL
+    // $ANTLR end synpred184_InternalSignalDSL
 
-    // $ANTLR start synpred185_InternalSignalDSL
-    public final void synpred185_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:17091:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
-        // InternalSignalDSL.g:17091:3: rule__JvmParameterizedTypeReference__Group_1__0
+    // $ANTLR start synpred188_InternalSignalDSL
+    public final void synpred188_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:17490:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalSignalDSL.g:17490:3: rule__JvmParameterizedTypeReference__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1__0();
@@ -68914,12 +70501,12 @@
 
         }
     }
-    // $ANTLR end synpred185_InternalSignalDSL
+    // $ANTLR end synpred188_InternalSignalDSL
 
-    // $ANTLR start synpred187_InternalSignalDSL
-    public final void synpred187_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:17226:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
-        // InternalSignalDSL.g:17226:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+    // $ANTLR start synpred190_InternalSignalDSL
+    public final void synpred190_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:17625:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalSignalDSL.g:17625:3: rule__JvmParameterizedTypeReference__Group_1_4__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4__0();
@@ -68929,12 +70516,12 @@
 
         }
     }
-    // $ANTLR end synpred187_InternalSignalDSL
+    // $ANTLR end synpred190_InternalSignalDSL
 
-    // $ANTLR start synpred188_InternalSignalDSL
-    public final void synpred188_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:17361:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
-        // InternalSignalDSL.g:17361:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+    // $ANTLR start synpred191_InternalSignalDSL
+    public final void synpred191_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:17760:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalSignalDSL.g:17760:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -68944,24 +70531,10 @@
 
         }
     }
-    // $ANTLR end synpred188_InternalSignalDSL
+    // $ANTLR end synpred191_InternalSignalDSL
 
     // Delegated rules
 
-    public final boolean synpred75_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred75_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
     public final boolean synpred62_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -68976,20 +70549,6 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred176_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred176_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
     public final boolean synpred179_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -69018,6 +70577,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred191_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred191_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred125_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -69046,6 +70619,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred135_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred135_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred14_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -69088,6 +70675,48 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred174_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred174_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred54_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred54_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred184_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred184_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred80_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -69116,62 +70745,6 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred178_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred178_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred148_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred148_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred164_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred164_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred165_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred165_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
     public final boolean synpred181_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -69186,11 +70759,25 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred171_InternalSignalDSL() {
+    public final boolean synpred63_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred171_InternalSignalDSL_fragment(); // can never throw exception
+            synpred63_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred87_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred87_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69214,6 +70801,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred168_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred168_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
     public final boolean synpred40_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -69228,11 +70829,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred141_InternalSignalDSL() {
+    public final boolean synpred131_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred141_InternalSignalDSL_fragment(); // can never throw exception
+            synpred131_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69256,11 +70857,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred13_InternalSignalDSL() {
+    public final boolean synpred182_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred13_InternalSignalDSL_fragment(); // can never throw exception
+            synpred182_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69270,11 +70871,25 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred121_InternalSignalDSL() {
+    public final boolean synpred81_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred121_InternalSignalDSL_fragment(); // can never throw exception
+            synpred81_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred13_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred13_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69298,11 +70913,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred185_InternalSignalDSL() {
+    public final boolean synpred144_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred185_InternalSignalDSL_fragment(); // can never throw exception
+            synpred144_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69312,11 +70927,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred53_InternalSignalDSL() {
+    public final boolean synpred154_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred53_InternalSignalDSL_fragment(); // can never throw exception
+            synpred154_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69326,11 +70941,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred61_InternalSignalDSL() {
+    public final boolean synpred76_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred61_InternalSignalDSL_fragment(); // can never throw exception
+            synpred76_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69340,11 +70955,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred39_InternalSignalDSL() {
+    public final boolean synpred167_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred39_InternalSignalDSL_fragment(); // can never throw exception
+            synpred167_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69354,11 +70969,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred177_InternalSignalDSL() {
+    public final boolean synpred172_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred177_InternalSignalDSL_fragment(); // can never throw exception
+            synpred172_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69368,11 +70983,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred86_InternalSignalDSL() {
+    public final boolean synpred41_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred86_InternalSignalDSL_fragment(); // can never throw exception
+            synpred41_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69382,81 +70997,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred187_InternalSignalDSL() {
+    public final boolean synpred15_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred187_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred79_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred79_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred12_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred12_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred170_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred170_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred123_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred123_InternalSignalDSL_fragment(); // can never throw exception
-        } catch (RecognitionException re) {
-            System.err.println("impossible: "+re);
-        }
-        boolean success = !state.failed;
-        input.rewind(start);
-        state.backtracking--;
-        state.failed=false;
-        return success;
-    }
-    public final boolean synpred169_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred169_InternalSignalDSL_fragment(); // can never throw exception
+            synpred15_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69480,11 +71025,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred119_InternalSignalDSL() {
+    public final boolean synpred126_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred119_InternalSignalDSL_fragment(); // can never throw exception
+            synpred126_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69494,11 +71039,39 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred126_InternalSignalDSL() {
+    public final boolean synpred136_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred126_InternalSignalDSL_fragment(); // can never throw exception
+            synpred136_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred180_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred180_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred190_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred190_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -69522,47 +71095,61 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred173_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred173_InternalSignalDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
 
 
-    protected DFA5 dfa5 = new DFA5(this);
-    protected DFA7 dfa7 = new DFA7(this);
+    protected DFA6 dfa6 = new DFA6(this);
     protected DFA8 dfa8 = new DFA8(this);
     protected DFA9 dfa9 = new DFA9(this);
-    protected DFA16 dfa16 = new DFA16(this);
-    protected DFA24 dfa24 = new DFA24(this);
-    protected DFA27 dfa27 = new DFA27(this);
+    protected DFA10 dfa10 = new DFA10(this);
+    protected DFA17 dfa17 = new DFA17(this);
+    protected DFA25 dfa25 = new DFA25(this);
     protected DFA28 dfa28 = new DFA28(this);
-    protected DFA31 dfa31 = new DFA31(this);
-    protected DFA36 dfa36 = new DFA36(this);
-    protected DFA39 dfa39 = new DFA39(this);
-    protected DFA67 dfa67 = new DFA67(this);
-    protected DFA73 dfa73 = new DFA73(this);
-    protected DFA80 dfa80 = new DFA80(this);
-    protected DFA81 dfa81 = new DFA81(this);
-    protected DFA89 dfa89 = new DFA89(this);
-    protected DFA99 dfa99 = new DFA99(this);
-    protected DFA112 dfa112 = new DFA112(this);
-    protected DFA113 dfa113 = new DFA113(this);
-    protected DFA117 dfa117 = new DFA117(this);
-    protected DFA118 dfa118 = new DFA118(this);
-    protected DFA119 dfa119 = new DFA119(this);
-    protected DFA124 dfa124 = new DFA124(this);
-    protected DFA133 dfa133 = new DFA133(this);
+    protected DFA29 dfa29 = new DFA29(this);
+    protected DFA32 dfa32 = new DFA32(this);
+    protected DFA37 dfa37 = new DFA37(this);
+    protected DFA40 dfa40 = new DFA40(this);
+    protected DFA70 dfa70 = new DFA70(this);
+    protected DFA76 dfa76 = new DFA76(this);
+    protected DFA83 dfa83 = new DFA83(this);
+    protected DFA84 dfa84 = new DFA84(this);
+    protected DFA92 dfa92 = new DFA92(this);
+    protected DFA102 dfa102 = new DFA102(this);
+    protected DFA115 dfa115 = new DFA115(this);
+    protected DFA116 dfa116 = new DFA116(this);
+    protected DFA120 dfa120 = new DFA120(this);
+    protected DFA121 dfa121 = new DFA121(this);
+    protected DFA122 dfa122 = new DFA122(this);
+    protected DFA127 dfa127 = new DFA127(this);
     protected DFA136 dfa136 = new DFA136(this);
+    protected DFA139 dfa139 = new DFA139(this);
     static final String dfa_1s = "\10\uffff";
     static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
     static final String dfa_3s = "\1\4\1\uffff\1\53\1\uffff\1\4\1\uffff\1\53\1\uffff";
-    static final String dfa_4s = "\1\153\1\uffff\1\116\1\uffff\1\44\1\uffff\1\116\1\uffff";
+    static final String dfa_4s = "\1\152\1\uffff\1\114\1\uffff\1\44\1\uffff\1\114\1\uffff";
     static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
     static final String dfa_6s = "\10\uffff}>";
     static final String[] dfa_7s = {
-            "\1\2\51\uffff\1\1\74\uffff\1\3",
+            "\1\2\51\uffff\1\1\73\uffff\1\3",
             "",
-            "\1\4\3\uffff\1\5\16\uffff\1\5\17\uffff\1\5",
+            "\1\4\3\uffff\1\5\15\uffff\1\5\16\uffff\1\5",
             "",
             "\1\6\37\uffff\1\7",
             "",
-            "\1\4\3\uffff\1\5\16\uffff\1\5\17\uffff\1\5",
+            "\1\4\3\uffff\1\5\15\uffff\1\5\16\uffff\1\5",
             ""
     };
 
@@ -69574,11 +71161,11 @@
     static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
     static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
 
-    class DFA5 extends DFA {
+    class DFA6 extends DFA {
 
-        public DFA5(BaseRecognizer recognizer) {
+        public DFA6(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 5;
+            this.decisionNumber = 6;
             this.eot = dfa_1;
             this.eof = dfa_2;
             this.min = dfa_3;
@@ -69588,16 +71175,16 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "2596:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );";
+            return "2644:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );";
         }
     }
     static final String dfa_8s = "\43\uffff";
     static final String dfa_9s = "\1\4\1\0\41\uffff";
-    static final String dfa_10s = "\1\160\1\0\41\uffff";
+    static final String dfa_10s = "\1\157\1\0\41\uffff";
     static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\1";
     static final String dfa_12s = "\1\uffff\1\0\41\uffff}>";
     static final String[] dfa_13s = {
-            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\14\uffff\1\2\17\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\10\uffff\1\2",
+            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\13\uffff\1\2\16\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\11\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -69641,11 +71228,11 @@
     static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
     static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
 
-    class DFA7 extends DFA {
+    class DFA8 extends DFA {
 
-        public DFA7(BaseRecognizer recognizer) {
+        public DFA8(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 7;
+            this.decisionNumber = 8;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_9;
@@ -69655,37 +71242,37 @@
             this.transition = dfa_13;
         }
         public String getDescription() {
-            return "2650:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
+            return "2698:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA7_1 = input.LA(1);
+                        int LA8_1 = input.LA(1);
 
                          
-                        int index7_1 = input.index();
+                        int index8_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred12_InternalSignalDSL()) ) {s = 34;}
+                        if ( (synpred13_InternalSignalDSL()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index7_1);
+                        input.seek(index8_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 7, _s, input);
+                new NoViableAltException(getDescription(), 8, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_14s = {
-            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\14\uffff\1\2\17\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\10\uffff\1\2",
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\13\uffff\1\2\16\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\11\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -69723,50 +71310,6 @@
     };
     static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);
 
-    class DFA8 extends DFA {
-
-        public DFA8(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 8;
-            this.eot = dfa_8;
-            this.eof = dfa_8;
-            this.min = dfa_9;
-            this.max = dfa_10;
-            this.accept = dfa_11;
-            this.special = dfa_12;
-            this.transition = dfa_14;
-        }
-        public String getDescription() {
-            return "2671:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA8_1 = input.LA(1);
-
-                         
-                        int index8_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred13_InternalSignalDSL()) ) {s = 34;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index8_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 8, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
     class DFA9 extends DFA {
 
         public DFA9(BaseRecognizer recognizer) {
@@ -69781,7 +71324,7 @@
             this.transition = dfa_14;
         }
         public String getDescription() {
-            return "2692:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+            return "2719:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -69810,16 +71353,60 @@
             throw nvae;
         }
     }
+
+    class DFA10 extends DFA {
+
+        public DFA10(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 10;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_14;
+        }
+        public String getDescription() {
+            return "2740:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA10_1 = input.LA(1);
+
+                         
+                        int index10_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalSignalDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index10_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 10, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
     static final String dfa_15s = "\13\uffff";
     static final String dfa_16s = "\1\32\2\uffff\1\32\7\uffff";
     static final String dfa_17s = "\1\41\2\uffff\1\36\7\uffff";
-    static final String dfa_18s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\6\1\3";
+    static final String dfa_18s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\3\1\6";
     static final String dfa_19s = "\13\uffff}>";
     static final String[] dfa_20s = {
             "\1\3\1\6\1\1\1\2\1\4\1\5\1\7\1\10",
             "",
             "",
-            "\1\11\3\uffff\1\12",
+            "\1\12\3\uffff\1\11",
             "",
             "",
             "",
@@ -69836,11 +71423,11 @@
     static final short[] dfa_19 = DFA.unpackEncodedString(dfa_19s);
     static final short[][] dfa_20 = unpackEncodedStringArray(dfa_20s);
 
-    class DFA16 extends DFA {
+    class DFA17 extends DFA {
 
-        public DFA16(BaseRecognizer recognizer) {
+        public DFA17(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 16;
+            this.decisionNumber = 17;
             this.eot = dfa_15;
             this.eof = dfa_15;
             this.min = dfa_16;
@@ -69850,25 +71437,25 @@
             this.transition = dfa_20;
         }
         public String getDescription() {
-            return "2893:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+            return "2941:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
         }
     }
     static final String dfa_21s = "\12\uffff";
     static final String dfa_22s = "\4\uffff\5\3\1\uffff";
     static final String dfa_23s = "\1\53\2\4\1\uffff\5\4\1\uffff";
-    static final String dfa_24s = "\1\155\2\61\1\uffff\5\160\1\uffff";
+    static final String dfa_24s = "\1\154\2\61\1\uffff\5\157\1\uffff";
     static final String dfa_25s = "\3\uffff\1\2\5\uffff\1\1";
     static final String dfa_26s = "\12\uffff}>";
     static final String[] dfa_27s = {
-            "\1\1\100\uffff\1\2\1\3",
+            "\1\1\77\uffff\1\2\1\3",
             "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
             "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
             "",
-            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\13\uffff\2\3\10\uffff\1\3\3\uffff\1\3\1\uffff\31\3\4\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\13\uffff\2\3\10\uffff\1\3\3\uffff\1\3\1\uffff\31\3\4\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\13\uffff\2\3\10\uffff\1\3\3\uffff\1\3\1\uffff\31\3\4\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\13\uffff\2\3\10\uffff\1\3\3\uffff\1\3\1\uffff\31\3\4\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\13\uffff\2\3\10\uffff\1\3\3\uffff\1\3\1\uffff\31\3\4\uffff\2\3\1\uffff\2\3",
             ""
     };
 
@@ -69880,11 +71467,11 @@
     static final short[] dfa_26 = DFA.unpackEncodedString(dfa_26s);
     static final short[][] dfa_27 = unpackEncodedStringArray(dfa_27s);
 
-    class DFA24 extends DFA {
+    class DFA25 extends DFA {
 
-        public DFA24(BaseRecognizer recognizer) {
+        public DFA25(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 24;
+            this.decisionNumber = 25;
             this.eot = dfa_21;
             this.eof = dfa_22;
             this.min = dfa_23;
@@ -69894,15 +71481,15 @@
             this.transition = dfa_27;
         }
         public String getDescription() {
-            return "3127:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+            return "3175:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
         }
     }
     static final String dfa_28s = "\1\4\2\0\40\uffff";
-    static final String dfa_29s = "\1\160\2\0\40\uffff";
+    static final String dfa_29s = "\1\157\2\0\40\uffff";
     static final String dfa_30s = "\3\uffff\1\1\1\uffff\1\2\35\uffff";
     static final String dfa_31s = "\1\uffff\1\0\1\1\40\uffff}>";
     static final String[] dfa_32s = {
-            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\14\uffff\1\5\20\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\2\uffff\11\5\1\uffff\1\5\6\uffff\1\3\1\uffff\1\5",
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\13\uffff\1\5\17\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\2\uffff\11\5\1\uffff\1\5\7\uffff\1\3\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -69944,11 +71531,11 @@
     static final short[] dfa_31 = DFA.unpackEncodedString(dfa_31s);
     static final short[][] dfa_32 = unpackEncodedStringArray(dfa_32s);
 
-    class DFA27 extends DFA {
+    class DFA28 extends DFA {
 
-        public DFA27(BaseRecognizer recognizer) {
+        public DFA28(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 27;
+            this.decisionNumber = 28;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_28;
@@ -69958,57 +71545,57 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3196:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
+            return "3244:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA27_1 = input.LA(1);
+                        int LA28_1 = input.LA(1);
 
                          
-                        int index27_1 = input.index();
+                        int index28_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred53_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred54_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index27_1);
+                        input.seek(index28_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA27_2 = input.LA(1);
+                        int LA28_2 = input.LA(1);
 
                          
-                        int index27_2 = input.index();
+                        int index28_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred53_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred54_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index27_2);
+                        input.seek(index28_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 27, _s, input);
+                new NoViableAltException(getDescription(), 28, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_33s = "\40\uffff";
     static final String dfa_34s = "\1\4\26\uffff\1\0\10\uffff";
-    static final String dfa_35s = "\1\160\26\uffff\1\0\10\uffff";
+    static final String dfa_35s = "\1\157\26\uffff\1\0\10\uffff";
     static final String dfa_36s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
     static final String dfa_37s = "\27\uffff\1\0\10\uffff}>";
     static final String[] dfa_38s = {
-            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\14\uffff\1\2\20\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\2\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\10\uffff\1\14",
+            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\13\uffff\1\2\17\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\2\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\11\uffff\1\14",
             "",
             "",
             "",
@@ -70049,11 +71636,11 @@
     static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
     static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
 
-    class DFA28 extends DFA {
+    class DFA29 extends DFA {
 
-        public DFA28(BaseRecognizer recognizer) {
+        public DFA29(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 28;
+            this.decisionNumber = 29;
             this.eot = dfa_33;
             this.eof = dfa_33;
             this.min = dfa_34;
@@ -70063,37 +71650,37 @@
             this.transition = dfa_38;
         }
         public String getDescription() {
-            return "3217:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
+            return "3265:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA28_23 = input.LA(1);
+                        int LA29_23 = input.LA(1);
 
                          
-                        int index28_23 = input.index();
+                        int index29_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred61_InternalSignalDSL()) ) {s = 30;}
+                        if ( (synpred62_InternalSignalDSL()) ) {s = 30;}
 
-                        else if ( (synpred62_InternalSignalDSL()) ) {s = 31;}
+                        else if ( (synpred63_InternalSignalDSL()) ) {s = 31;}
 
                          
-                        input.seek(index28_23);
+                        input.seek(index29_23);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 28, _s, input);
+                new NoViableAltException(getDescription(), 29, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_39s = {
-            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\14\uffff\1\2\20\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\10\uffff\1\2",
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\13\uffff\1\2\17\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\11\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -70131,11 +71718,11 @@
     };
     static final short[][] dfa_39 = unpackEncodedStringArray(dfa_39s);
 
-    class DFA31 extends DFA {
+    class DFA32 extends DFA {
 
-        public DFA31(BaseRecognizer recognizer) {
+        public DFA32(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 31;
+            this.decisionNumber = 32;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_9;
@@ -70145,41 +71732,41 @@
             this.transition = dfa_39;
         }
         public String getDescription() {
-            return "3388:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
+            return "3436:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA31_1 = input.LA(1);
+                        int LA32_1 = input.LA(1);
 
                          
-                        int index31_1 = input.index();
+                        int index32_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred75_InternalSignalDSL()) ) {s = 34;}
+                        if ( (synpred76_InternalSignalDSL()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index31_1);
+                        input.seek(index32_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 31, _s, input);
+                new NoViableAltException(getDescription(), 32, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA36 extends DFA {
+    class DFA37 extends DFA {
 
-        public DFA36(BaseRecognizer recognizer) {
+        public DFA37(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 36;
+            this.decisionNumber = 37;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_28;
@@ -70189,56 +71776,56 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3493:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
+            return "3541:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA36_1 = input.LA(1);
+                        int LA37_1 = input.LA(1);
 
                          
-                        int index36_1 = input.index();
+                        int index37_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred80_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred81_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index36_1);
+                        input.seek(index37_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA36_2 = input.LA(1);
+                        int LA37_2 = input.LA(1);
 
                          
-                        int index36_2 = input.index();
+                        int index37_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred80_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred81_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index36_2);
+                        input.seek(index37_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 36, _s, input);
+                new NoViableAltException(getDescription(), 37, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA39 extends DFA {
+    class DFA40 extends DFA {
 
-        public DFA39(BaseRecognizer recognizer) {
+        public DFA40(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 39;
+            this.decisionNumber = 40;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_28;
@@ -70248,57 +71835,57 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3574:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
+            return "3622:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA39_1 = input.LA(1);
+                        int LA40_1 = input.LA(1);
 
                          
-                        int index39_1 = input.index();
+                        int index40_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred86_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred87_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index39_1);
+                        input.seek(index40_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA39_2 = input.LA(1);
+                        int LA40_2 = input.LA(1);
 
                          
-                        int index39_2 = input.index();
+                        int index40_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred86_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred87_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index39_2);
+                        input.seek(index40_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 39, _s, input);
+                new NoViableAltException(getDescription(), 40, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_40s = "\1\10\11\uffff";
     static final String dfa_41s = "\1\4\7\0\2\uffff";
-    static final String dfa_42s = "\1\160\7\0\2\uffff";
+    static final String dfa_42s = "\1\157\7\0\2\uffff";
     static final String dfa_43s = "\10\uffff\1\2\1\1";
-    static final String dfa_44s = "\1\uffff\1\2\1\5\1\6\1\1\1\3\1\4\1\0\2\uffff}>";
+    static final String dfa_44s = "\1\uffff\1\1\1\0\1\6\1\3\1\2\1\4\1\5\2\uffff}>";
     static final String[] dfa_45s = {
-            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\14\uffff\2\10\10\uffff\1\10\4\uffff\1\10\1\uffff\31\10\3\uffff\2\10\1\uffff\2\10",
+            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\13\uffff\2\10\10\uffff\1\10\3\uffff\1\10\1\uffff\31\10\4\uffff\2\10\1\uffff\2\10",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -70316,11 +71903,11 @@
     static final short[] dfa_44 = DFA.unpackEncodedString(dfa_44s);
     static final short[][] dfa_45 = unpackEncodedStringArray(dfa_45s);
 
-    class DFA67 extends DFA {
+    class DFA70 extends DFA {
 
-        public DFA67(BaseRecognizer recognizer) {
+        public DFA70(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 67;
+            this.decisionNumber = 70;
             this.eot = dfa_21;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -70330,132 +71917,132 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "6851:2: ( rule__XAssignment__Group_1_1__0 )?";
+            return "7250:2: ( rule__XAssignment__Group_1_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA67_7 = input.LA(1);
+                        int LA70_2 = input.LA(1);
 
                          
-                        int index67_7 = input.index();
+                        int index70_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred122_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index67_7);
+                        input.seek(index70_2);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA67_4 = input.LA(1);
+                        int LA70_1 = input.LA(1);
 
                          
-                        int index67_4 = input.index();
+                        int index70_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred122_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index67_4);
+                        input.seek(index70_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA67_1 = input.LA(1);
+                        int LA70_5 = input.LA(1);
 
                          
-                        int index67_1 = input.index();
+                        int index70_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred122_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index67_1);
+                        input.seek(index70_5);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA67_5 = input.LA(1);
+                        int LA70_4 = input.LA(1);
 
                          
-                        int index67_5 = input.index();
+                        int index70_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred122_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index67_5);
+                        input.seek(index70_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA67_6 = input.LA(1);
+                        int LA70_6 = input.LA(1);
 
                          
-                        int index67_6 = input.index();
+                        int index70_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred122_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index67_6);
+                        input.seek(index70_6);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA67_2 = input.LA(1);
+                        int LA70_7 = input.LA(1);
 
                          
-                        int index67_2 = input.index();
+                        int index70_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred122_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index67_2);
+                        input.seek(index70_7);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA67_3 = input.LA(1);
+                        int LA70_3 = input.LA(1);
 
                          
-                        int index67_3 = input.index();
+                        int index70_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred122_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index67_3);
+                        input.seek(index70_3);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 67, _s, input);
+                new NoViableAltException(getDescription(), 70, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_46s = "\1\1\12\uffff";
     static final String dfa_47s = "\1\4\1\uffff\10\0\1\uffff";
-    static final String dfa_48s = "\1\160\1\uffff\10\0\1\uffff";
+    static final String dfa_48s = "\1\157\1\uffff\10\0\1\uffff";
     static final String dfa_49s = "\1\uffff\1\2\10\uffff\1\1";
-    static final String dfa_50s = "\2\uffff\1\0\1\7\1\6\1\1\1\4\1\3\1\5\1\2\1\uffff}>";
+    static final String dfa_50s = "\2\uffff\1\2\1\0\1\1\1\3\1\5\1\6\1\7\1\4\1\uffff}>";
     static final String[] dfa_51s = {
-            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\14\uffff\2\1\10\uffff\1\1\4\uffff\1\1\1\uffff\31\1\3\uffff\2\1\1\uffff\2\1",
+            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\13\uffff\2\1\10\uffff\1\1\3\uffff\1\1\1\uffff\31\1\4\uffff\2\1\1\uffff\2\1",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -70474,11 +72061,11 @@
     static final short[] dfa_50 = DFA.unpackEncodedString(dfa_50s);
     static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
 
-    class DFA73 extends DFA {
+    class DFA76 extends DFA {
 
-        public DFA73(BaseRecognizer recognizer) {
+        public DFA76(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 73;
+            this.decisionNumber = 76;
             this.eot = dfa_15;
             this.eof = dfa_46;
             this.min = dfa_47;
@@ -70488,136 +72075,136 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "()* loopback of 8147:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
+            return "()* loopback of 8546:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA73_2 = input.LA(1);
+                        int LA76_3 = input.LA(1);
 
                          
-                        int index73_2 = input.index();
+                        int index76_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_2);
+                        input.seek(index76_3);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA73_5 = input.LA(1);
+                        int LA76_4 = input.LA(1);
 
                          
-                        int index73_5 = input.index();
+                        int index76_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_5);
+                        input.seek(index76_4);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA73_9 = input.LA(1);
+                        int LA76_2 = input.LA(1);
 
                          
-                        int index73_9 = input.index();
+                        int index76_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_9);
+                        input.seek(index76_2);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA73_7 = input.LA(1);
+                        int LA76_5 = input.LA(1);
 
                          
-                        int index73_7 = input.index();
+                        int index76_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_7);
+                        input.seek(index76_5);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA73_6 = input.LA(1);
+                        int LA76_9 = input.LA(1);
 
                          
-                        int index73_6 = input.index();
+                        int index76_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_6);
+                        input.seek(index76_9);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA73_8 = input.LA(1);
+                        int LA76_6 = input.LA(1);
 
                          
-                        int index73_8 = input.index();
+                        int index76_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_8);
+                        input.seek(index76_6);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA73_4 = input.LA(1);
+                        int LA76_7 = input.LA(1);
 
                          
-                        int index73_4 = input.index();
+                        int index76_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_4);
+                        input.seek(index76_7);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA73_3 = input.LA(1);
+                        int LA76_8 = input.LA(1);
 
                          
-                        int index73_3 = input.index();
+                        int index76_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred128_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index73_3);
+                        input.seek(index76_8);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 73, _s, input);
+                new NoViableAltException(getDescription(), 76, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -70625,11 +72212,11 @@
     static final String dfa_52s = "\116\uffff";
     static final String dfa_53s = "\1\2\115\uffff";
     static final String dfa_54s = "\1\4\1\0\114\uffff";
-    static final String dfa_55s = "\1\160\1\0\114\uffff";
+    static final String dfa_55s = "\1\157\1\0\114\uffff";
     static final String dfa_56s = "\2\uffff\1\2\112\uffff\1\1";
     static final String dfa_57s = "\1\uffff\1\0\114\uffff}>";
     static final String[] dfa_58s = {
-            "\5\2\5\uffff\45\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\1\1\30\2\3\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\45\2\13\uffff\2\2\10\uffff\1\2\3\uffff\1\2\1\uffff\1\1\30\2\4\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -70717,11 +72304,11 @@
     static final short[] dfa_57 = DFA.unpackEncodedString(dfa_57s);
     static final short[][] dfa_58 = unpackEncodedStringArray(dfa_58s);
 
-    class DFA80 extends DFA {
+    class DFA83 extends DFA {
 
-        public DFA80(BaseRecognizer recognizer) {
+        public DFA83(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 80;
+            this.decisionNumber = 83;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -70731,37 +72318,37 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "9741:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
+            return "10140:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA80_1 = input.LA(1);
+                        int LA83_1 = input.LA(1);
 
                          
-                        int index80_1 = input.index();
+                        int index83_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred132_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred135_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index80_1);
+                        input.seek(index83_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 80, _s, input);
+                new NoViableAltException(getDescription(), 83, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_59s = {
-            "\5\2\5\uffff\45\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\5\2\1\1\23\2\3\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\45\2\13\uffff\2\2\10\uffff\1\2\3\uffff\1\2\1\uffff\5\2\1\1\23\2\4\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -70842,11 +72429,11 @@
     };
     static final short[][] dfa_59 = unpackEncodedStringArray(dfa_59s);
 
-    class DFA81 extends DFA {
+    class DFA84 extends DFA {
 
-        public DFA81(BaseRecognizer recognizer) {
+        public DFA84(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 81;
+            this.decisionNumber = 84;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -70856,42 +72443,42 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "9767:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
+            return "10166:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA81_1 = input.LA(1);
+                        int LA84_1 = input.LA(1);
 
                          
-                        int index81_1 = input.index();
+                        int index84_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred133_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred136_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index81_1);
+                        input.seek(index84_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 81, _s, input);
+                new NoViableAltException(getDescription(), 84, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_60s = "\46\uffff";
     static final String dfa_61s = "\1\4\2\0\43\uffff";
-    static final String dfa_62s = "\1\160\2\0\43\uffff";
+    static final String dfa_62s = "\1\157\2\0\43\uffff";
     static final String dfa_63s = "\3\uffff\1\1\1\uffff\1\2\40\uffff";
     static final String dfa_64s = "\1\uffff\1\0\1\1\43\uffff}>";
     static final String[] dfa_65s = {
-            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\14\uffff\1\5\20\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\2\uffff\11\5\1\uffff\1\5\6\uffff\1\3\2\5",
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\13\uffff\1\5\17\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\2\uffff\11\5\1\uffff\1\5\7\uffff\1\3\2\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -70938,11 +72525,11 @@
     static final short[] dfa_64 = DFA.unpackEncodedString(dfa_64s);
     static final short[][] dfa_65 = unpackEncodedStringArray(dfa_65s);
 
-    class DFA89 extends DFA {
+    class DFA92 extends DFA {
 
-        public DFA89(BaseRecognizer recognizer) {
+        public DFA92(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 89;
+            this.decisionNumber = 92;
             this.eot = dfa_60;
             this.eof = dfa_60;
             this.min = dfa_61;
@@ -70952,57 +72539,57 @@
             this.transition = dfa_65;
         }
         public String getDescription() {
-            return "10740:2: ( rule__XClosure__Group_1__0 )?";
+            return "11139:2: ( rule__XClosure__Group_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA89_1 = input.LA(1);
+                        int LA92_1 = input.LA(1);
 
                          
-                        int index89_1 = input.index();
+                        int index92_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred141_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred144_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index89_1);
+                        input.seek(index92_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA89_2 = input.LA(1);
+                        int LA92_2 = input.LA(1);
 
                          
-                        int index89_2 = input.index();
+                        int index92_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred141_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred144_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index89_2);
+                        input.seek(index92_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 89, _s, input);
+                new NoViableAltException(getDescription(), 92, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_66s = "\42\uffff";
     static final String dfa_67s = "\1\4\2\0\37\uffff";
-    static final String dfa_68s = "\1\160\2\0\37\uffff";
+    static final String dfa_68s = "\1\157\2\0\37\uffff";
     static final String dfa_69s = "\3\uffff\1\1\1\2\35\uffff";
     static final String dfa_70s = "\1\uffff\1\0\1\1\37\uffff}>";
     static final String[] dfa_71s = {
-            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\14\uffff\1\4\20\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\2\uffff\11\4\1\uffff\1\4\10\uffff\1\4",
+            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\13\uffff\1\4\17\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\2\uffff\11\4\1\uffff\1\4\11\uffff\1\4",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -71045,11 +72632,11 @@
     static final short[] dfa_70 = DFA.unpackEncodedString(dfa_70s);
     static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
 
-    class DFA99 extends DFA {
+    class DFA102 extends DFA {
 
-        public DFA99(BaseRecognizer recognizer) {
+        public DFA102(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 99;
+            this.decisionNumber = 102;
             this.eot = dfa_66;
             this.eof = dfa_66;
             this.min = dfa_67;
@@ -71059,56 +72646,56 @@
             this.transition = dfa_71;
         }
         public String getDescription() {
-            return "12171:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
+            return "12570:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA99_1 = input.LA(1);
+                        int LA102_1 = input.LA(1);
 
                          
-                        int index99_1 = input.index();
+                        int index102_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred151_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred154_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index99_1);
+                        input.seek(index102_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA99_2 = input.LA(1);
+                        int LA102_2 = input.LA(1);
 
                          
-                        int index99_2 = input.index();
+                        int index102_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred151_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred154_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index99_2);
+                        input.seek(index102_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 99, _s, input);
+                new NoViableAltException(getDescription(), 102, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA112 extends DFA {
+    class DFA115 extends DFA {
 
-        public DFA112(BaseRecognizer recognizer) {
+        public DFA115(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 112;
+            this.decisionNumber = 115;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -71118,41 +72705,41 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "14304:2: ( rule__XFeatureCall__Group_3__0 )?";
+            return "14703:2: ( rule__XFeatureCall__Group_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA112_1 = input.LA(1);
+                        int LA115_1 = input.LA(1);
 
                          
-                        int index112_1 = input.index();
+                        int index115_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred164_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred167_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index112_1);
+                        input.seek(index115_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 112, _s, input);
+                new NoViableAltException(getDescription(), 115, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA113 extends DFA {
+    class DFA116 extends DFA {
 
-        public DFA113(BaseRecognizer recognizer) {
+        public DFA116(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 113;
+            this.decisionNumber = 116;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -71162,37 +72749,37 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "14330:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
+            return "14729:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA113_1 = input.LA(1);
+                        int LA116_1 = input.LA(1);
 
                          
-                        int index113_1 = input.index();
+                        int index116_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred165_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred168_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index113_1);
+                        input.seek(index116_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 113, _s, input);
+                new NoViableAltException(getDescription(), 116, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_72s = {
-            "\5\2\5\uffff\15\2\1\1\27\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\31\2\3\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\15\2\1\1\27\2\13\uffff\2\2\10\uffff\1\2\3\uffff\1\2\1\uffff\31\2\4\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -71273,11 +72860,11 @@
     };
     static final short[][] dfa_72 = unpackEncodedStringArray(dfa_72s);
 
-    class DFA117 extends DFA {
+    class DFA120 extends DFA {
 
-        public DFA117(BaseRecognizer recognizer) {
+        public DFA120(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 117;
+            this.decisionNumber = 120;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -71287,41 +72874,41 @@
             this.transition = dfa_72;
         }
         public String getDescription() {
-            return "14790:2: ( rule__XConstructorCall__Group_3__0 )?";
+            return "15189:2: ( rule__XConstructorCall__Group_3__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA117_1 = input.LA(1);
+                        int LA120_1 = input.LA(1);
 
                          
-                        int index117_1 = input.index();
+                        int index120_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred169_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred172_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index117_1);
+                        input.seek(index120_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 117, _s, input);
+                new NoViableAltException(getDescription(), 120, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA118 extends DFA {
+    class DFA121 extends DFA {
 
-        public DFA118(BaseRecognizer recognizer) {
+        public DFA121(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 118;
+            this.decisionNumber = 121;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -71331,41 +72918,41 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "14817:2: ( rule__XConstructorCall__Group_4__0 )?";
+            return "15216:2: ( rule__XConstructorCall__Group_4__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA118_1 = input.LA(1);
+                        int LA121_1 = input.LA(1);
 
                          
-                        int index118_1 = input.index();
+                        int index121_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred173_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index118_1);
+                        input.seek(index121_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 118, _s, input);
+                new NoViableAltException(getDescription(), 121, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA119 extends DFA {
+    class DFA122 extends DFA {
 
-        public DFA119(BaseRecognizer recognizer) {
+        public DFA122(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 119;
+            this.decisionNumber = 122;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -71375,42 +72962,42 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "14843:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
+            return "15242:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA119_1 = input.LA(1);
+                        int LA122_1 = input.LA(1);
 
                          
-                        int index119_1 = input.index();
+                        int index122_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred171_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred174_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index119_1);
+                        input.seek(index122_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 119, _s, input);
+                new NoViableAltException(getDescription(), 122, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_73s = "\1\41\115\uffff";
     static final String dfa_74s = "\1\4\40\0\55\uffff";
-    static final String dfa_75s = "\1\160\40\0\55\uffff";
+    static final String dfa_75s = "\1\157\40\0\55\uffff";
     static final String dfa_76s = "\41\uffff\1\2\53\uffff\1\1";
     static final String dfa_77s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
     static final String[] dfa_78s = {
-            "\1\1\1\23\1\24\1\25\1\27\5\uffff\15\41\1\15\6\41\1\10\1\7\4\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\14\uffff\1\12\1\41\10\uffff\1\41\4\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\2\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\3\uffff\2\41\1\uffff\1\41\1\22",
+            "\1\1\1\23\1\24\1\25\1\27\5\uffff\15\41\1\15\6\41\1\10\1\7\4\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\13\uffff\1\12\1\41\10\uffff\1\41\3\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\2\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\4\uffff\2\41\1\uffff\1\41\1\22",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -71496,11 +73083,11 @@
     static final short[] dfa_77 = DFA.unpackEncodedString(dfa_77s);
     static final short[][] dfa_78 = unpackEncodedStringArray(dfa_78s);
 
-    class DFA124 extends DFA {
+    class DFA127 extends DFA {
 
-        public DFA124(BaseRecognizer recognizer) {
+        public DFA127(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 124;
+            this.decisionNumber = 127;
             this.eot = dfa_52;
             this.eof = dfa_73;
             this.min = dfa_74;
@@ -71510,496 +73097,496 @@
             this.transition = dfa_78;
         }
         public String getDescription() {
-            return "15734:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
+            return "16133:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA124_1 = input.LA(1);
+                        int LA127_1 = input.LA(1);
 
                          
-                        int index124_1 = input.index();
+                        int index127_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_1);
+                        input.seek(index127_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA124_2 = input.LA(1);
+                        int LA127_2 = input.LA(1);
 
                          
-                        int index124_2 = input.index();
+                        int index127_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_2);
+                        input.seek(index127_2);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA124_3 = input.LA(1);
+                        int LA127_3 = input.LA(1);
 
                          
-                        int index124_3 = input.index();
+                        int index127_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_3);
+                        input.seek(index127_3);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA124_4 = input.LA(1);
+                        int LA127_4 = input.LA(1);
 
                          
-                        int index124_4 = input.index();
+                        int index127_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_4);
+                        input.seek(index127_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA124_5 = input.LA(1);
+                        int LA127_5 = input.LA(1);
 
                          
-                        int index124_5 = input.index();
+                        int index127_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_5);
+                        input.seek(index127_5);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA124_6 = input.LA(1);
+                        int LA127_6 = input.LA(1);
 
                          
-                        int index124_6 = input.index();
+                        int index127_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_6);
+                        input.seek(index127_6);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA124_7 = input.LA(1);
+                        int LA127_7 = input.LA(1);
 
                          
-                        int index124_7 = input.index();
+                        int index127_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_7);
+                        input.seek(index127_7);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA124_8 = input.LA(1);
+                        int LA127_8 = input.LA(1);
 
                          
-                        int index124_8 = input.index();
+                        int index127_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_8);
+                        input.seek(index127_8);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA124_9 = input.LA(1);
+                        int LA127_9 = input.LA(1);
 
                          
-                        int index124_9 = input.index();
+                        int index127_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_9);
+                        input.seek(index127_9);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA124_10 = input.LA(1);
+                        int LA127_10 = input.LA(1);
 
                          
-                        int index124_10 = input.index();
+                        int index127_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_10);
+                        input.seek(index127_10);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA124_11 = input.LA(1);
+                        int LA127_11 = input.LA(1);
 
                          
-                        int index124_11 = input.index();
+                        int index127_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_11);
+                        input.seek(index127_11);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA124_12 = input.LA(1);
+                        int LA127_12 = input.LA(1);
 
                          
-                        int index124_12 = input.index();
+                        int index127_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_12);
+                        input.seek(index127_12);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA124_13 = input.LA(1);
+                        int LA127_13 = input.LA(1);
 
                          
-                        int index124_13 = input.index();
+                        int index127_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_13);
+                        input.seek(index127_13);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA124_14 = input.LA(1);
+                        int LA127_14 = input.LA(1);
 
                          
-                        int index124_14 = input.index();
+                        int index127_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_14);
+                        input.seek(index127_14);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA124_15 = input.LA(1);
+                        int LA127_15 = input.LA(1);
 
                          
-                        int index124_15 = input.index();
+                        int index127_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_15);
+                        input.seek(index127_15);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA124_16 = input.LA(1);
+                        int LA127_16 = input.LA(1);
 
                          
-                        int index124_16 = input.index();
+                        int index127_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_16);
+                        input.seek(index127_16);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA124_17 = input.LA(1);
+                        int LA127_17 = input.LA(1);
 
                          
-                        int index124_17 = input.index();
+                        int index127_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_17);
+                        input.seek(index127_17);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA124_18 = input.LA(1);
+                        int LA127_18 = input.LA(1);
 
                          
-                        int index124_18 = input.index();
+                        int index127_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_18);
+                        input.seek(index127_18);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA124_19 = input.LA(1);
+                        int LA127_19 = input.LA(1);
 
                          
-                        int index124_19 = input.index();
+                        int index127_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_19);
+                        input.seek(index127_19);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA124_20 = input.LA(1);
+                        int LA127_20 = input.LA(1);
 
                          
-                        int index124_20 = input.index();
+                        int index127_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_20);
+                        input.seek(index127_20);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA124_21 = input.LA(1);
+                        int LA127_21 = input.LA(1);
 
                          
-                        int index124_21 = input.index();
+                        int index127_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_21);
+                        input.seek(index127_21);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA124_22 = input.LA(1);
+                        int LA127_22 = input.LA(1);
 
                          
-                        int index124_22 = input.index();
+                        int index127_22 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_22);
+                        input.seek(index127_22);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA124_23 = input.LA(1);
+                        int LA127_23 = input.LA(1);
 
                          
-                        int index124_23 = input.index();
+                        int index127_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_23);
+                        input.seek(index127_23);
                         if ( s>=0 ) return s;
                         break;
                     case 23 : 
-                        int LA124_24 = input.LA(1);
+                        int LA127_24 = input.LA(1);
 
                          
-                        int index124_24 = input.index();
+                        int index127_24 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_24);
+                        input.seek(index127_24);
                         if ( s>=0 ) return s;
                         break;
                     case 24 : 
-                        int LA124_25 = input.LA(1);
+                        int LA127_25 = input.LA(1);
 
                          
-                        int index124_25 = input.index();
+                        int index127_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_25);
+                        input.seek(index127_25);
                         if ( s>=0 ) return s;
                         break;
                     case 25 : 
-                        int LA124_26 = input.LA(1);
+                        int LA127_26 = input.LA(1);
 
                          
-                        int index124_26 = input.index();
+                        int index127_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_26);
+                        input.seek(index127_26);
                         if ( s>=0 ) return s;
                         break;
                     case 26 : 
-                        int LA124_27 = input.LA(1);
+                        int LA127_27 = input.LA(1);
 
                          
-                        int index124_27 = input.index();
+                        int index127_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_27);
+                        input.seek(index127_27);
                         if ( s>=0 ) return s;
                         break;
                     case 27 : 
-                        int LA124_28 = input.LA(1);
+                        int LA127_28 = input.LA(1);
 
                          
-                        int index124_28 = input.index();
+                        int index127_28 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_28);
+                        input.seek(index127_28);
                         if ( s>=0 ) return s;
                         break;
                     case 28 : 
-                        int LA124_29 = input.LA(1);
+                        int LA127_29 = input.LA(1);
 
                          
-                        int index124_29 = input.index();
+                        int index127_29 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_29);
+                        input.seek(index127_29);
                         if ( s>=0 ) return s;
                         break;
                     case 29 : 
-                        int LA124_30 = input.LA(1);
+                        int LA127_30 = input.LA(1);
 
                          
-                        int index124_30 = input.index();
+                        int index127_30 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_30);
+                        input.seek(index127_30);
                         if ( s>=0 ) return s;
                         break;
                     case 30 : 
-                        int LA124_31 = input.LA(1);
+                        int LA127_31 = input.LA(1);
 
                          
-                        int index124_31 = input.index();
+                        int index127_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_31);
+                        input.seek(index127_31);
                         if ( s>=0 ) return s;
                         break;
                     case 31 : 
-                        int LA124_32 = input.LA(1);
+                        int LA127_32 = input.LA(1);
 
                          
-                        int index124_32 = input.index();
+                        int index127_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred179_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index124_32);
+                        input.seek(index127_32);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 124, _s, input);
+                new NoViableAltException(getDescription(), 127, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -72007,11 +73594,11 @@
     static final String dfa_79s = "\117\uffff";
     static final String dfa_80s = "\1\2\116\uffff";
     static final String dfa_81s = "\1\4\1\0\115\uffff";
-    static final String dfa_82s = "\1\160\1\0\115\uffff";
+    static final String dfa_82s = "\1\157\1\0\115\uffff";
     static final String dfa_83s = "\2\uffff\1\2\113\uffff\1\1";
     static final String dfa_84s = "\1\uffff\1\0\115\uffff}>";
     static final String[] dfa_85s = {
-            "\5\2\5\uffff\15\2\1\1\27\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\31\2\1\uffff\1\2\1\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\15\2\1\1\27\2\13\uffff\2\2\10\uffff\1\2\3\uffff\1\2\1\uffff\31\2\1\uffff\1\2\2\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -72100,50 +73687,6 @@
     static final short[] dfa_84 = DFA.unpackEncodedString(dfa_84s);
     static final short[][] dfa_85 = unpackEncodedStringArray(dfa_85s);
 
-    class DFA133 extends DFA {
-
-        public DFA133(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 133;
-            this.eot = dfa_79;
-            this.eof = dfa_80;
-            this.min = dfa_81;
-            this.max = dfa_82;
-            this.accept = dfa_83;
-            this.special = dfa_84;
-            this.transition = dfa_85;
-        }
-        public String getDescription() {
-            return "17091:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA133_1 = input.LA(1);
-
-                         
-                        int index133_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred185_InternalSignalDSL()) ) {s = 78;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index133_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 133, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
     class DFA136 extends DFA {
 
         public DFA136(BaseRecognizer recognizer) {
@@ -72158,7 +73701,7 @@
             this.transition = dfa_85;
         }
         public String getDescription() {
-            return "17361:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+            return "17490:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -72187,125 +73730,172 @@
             throw nvae;
         }
     }
+
+    class DFA139 extends DFA {
+
+        public DFA139(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 139;
+            this.eot = dfa_79;
+            this.eof = dfa_80;
+            this.min = dfa_81;
+            this.max = dfa_82;
+            this.accept = dfa_83;
+            this.special = dfa_84;
+            this.transition = dfa_85;
+        }
+        public String getDescription() {
+            return "17760:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA139_1 = input.LA(1);
+
+                         
+                        int index139_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred191_InternalSignalDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index139_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 139, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
  
 
     public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
     public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000800000000002L});
     public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000012L});
-    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x2000000000000000L});
     public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x8000000000000000L});
-    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000003L});
-    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000009L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0078000000000000L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0018000000000002L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000030L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000000L,0x00000000000015C0L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000040L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x3F80000000000000L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000800000000000L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000400000000010L,0x0000080000000000L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0001000000000010L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000001000000010L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5338000L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5318000L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000002000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5398000L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0001E00000000010L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x000000000C1F0000L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000008000000L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000006000000L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000004002L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000008002L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000001E00000L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000001E00002L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x000000000E000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x000000000E000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000080000010L,0x0000000000010000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x00000003FC000000L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x00000003FC000002L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000088000000L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000C00000000L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000C00000002L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x000000F000000000L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x000000F000000002L});
-    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000010C00000000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000060000000000L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000080000000000L,0x0000300000000000L});
-    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000080000000002L,0x0000300000000000L});
-    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000080000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0003E00008000010L});
-    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000080000010L,0x0000020000010000L});
-    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000004000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x8007E10C880001F0L,0x000140BFE5338000L});
-    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5318001L});
-    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x8007F10C880001F0L,0x0001C0BFE5318000L});
-    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000080000010L,0x0000400000010000L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x8007F10C080001F2L,0x000180BFE5318000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000011L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000011L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000000L,0x000000000000000AL});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0030000000000000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0008800000000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x8000000000000000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x8008800000000000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0008800000000002L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000011L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000AE0L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0030000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x1FC0000000000000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000400000000010L,0x0000040000000000L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0001000000000010L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000001000000010L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x4007E10C080001F0L,0x0000802FF94CE000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000002L,0x0000000000010000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x4007E10C080001F0L,0x0000802FF94C6000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x4007E10C080001F0L,0x0000802FF94E6000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0001E00000000010L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x000000000C1F0000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000006000000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000008002L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000001E00000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000001E00002L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x000000000E000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x000000000E000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000080000010L,0x0000000000004000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x00000003FC000000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x00000003FC000002L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000088000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000C00000002L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x000000F000000000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x000000F000000002L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000010C00000000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000060000000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000080000000000L,0x0000180000000000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000080000000002L,0x0000180000000000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000080000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0003E00008000010L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000000000000L,0x0000000000084000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000080000010L,0x0000008000004000L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000004000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x4007E10C880001F0L,0x0000A02FF94CE000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0xC007E10C080001F0L,0x0000802FF94C6000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x4007F10C880001F0L,0x0000E02FF94C6000L});
     public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
-    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x8007E10C880001F0L,0x000100BFE5318000L});
-    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000080000010L,0x0000000018050201L});
-    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000080000012L,0x0000000010050200L});
-    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000080000010L,0x0000000010050200L});
-    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x8007F10C080001F0L,0x000180BFE531C000L});
-    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE531C000L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x8007F10C080001F0L,0x000180BFE5318000L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
-    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x8007F10C080001F0L,0x000180BFE5318001L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000100000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
-    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000008000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0004000000000000L,0x0001000000000000L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
-    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x00000000000000E0L});
-    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x00040000000001E0L,0x0001000600300000L});
-    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000220000L});
-    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
-    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
-    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
-    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000014000000000L});
-    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
-    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
-    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000080000000000L});
-    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000080000000002L});
-    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x00000000000000C0L});
-    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000080000010L,0x0000000000030000L});
-    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0002200000000000L});
-    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
-    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000080000010L,0x0000200000004000L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x4007F10C080001F2L,0x0000C02FF94C6000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x4007E10C880001F0L,0x0000802FF94C6000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x8000000080000010L,0x0000000006014100L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000080000012L,0x0000000004014100L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000080000010L,0x0000000004014100L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x4007F10C080001F0L,0x0000C02FF94C7000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x4007E10C080001F0L,0x0000802FF94C7000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x4007F10C080001F0L,0x0000C02FF94C6000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0xC007F10C080001F0L,0x0000C02FF94C6000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000100000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000008000000L,0x0000000000084000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0004000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x00000000000000E0L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x00040000000001E0L,0x00008001800C0000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000088000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000005000000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000080000000002L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x00000000000000C0L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000080000010L,0x000000000000C000L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0002200000000000L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000001000000000L});
 
 }
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java b/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java
index 248b322..83437f7 100644
--- a/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java
+++ b/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java
index dbee0e7..0d821cf 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java
@@ -42,34 +42,52 @@
 	public void completeSignalPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalPackage_Watchers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeSignalPackage_Signals(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeSignalWatcher_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalWatcher_Directory(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeSignalWatcher_Definition(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalWatcher_Handlers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeWatcherWithFileMask_Filemask(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalHandler_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeWatcherWithFileMask_Executiontype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalHandler_Interchanges(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeWatcherWithFileMask_Interchangegroup(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeWatcherWithFileMask_Interchange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalHandler_Executiontype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeWatcherWithFileName_Filename(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalHandler_Triggerpolicy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeWatcherWithFileName_Executiontype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeTriggerFile_Filemask(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeWatcherWithFileName_Interchangegroup(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeWatcherWithFileName_Interchanges(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalScheduler_Scheduler(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeSignalScheduler_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSignalScheduler_Schedulertype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSignalScheduler_Executiontype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSignalScheduler_Interchangegroup(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSignalScheduler_Interchanges(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeCronScheduler_Expression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
@@ -108,8 +126,8 @@
 	public void completeSignalDatainterchange_DataRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalDatainterchange_FileName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	public void completeSignalDatainterchange_Baseinterchange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
 	}
 
 	public void complete_SignalModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
@@ -118,22 +136,25 @@
 	public void complete_SignalPackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_SignalDefinition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_SignalWatcher(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_SignalHandler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_WatcherDefinition(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_TriggerPolicy(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_WatcherWithFileMask(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_TriggerFile(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_WatcherWithFileName(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_SignalScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_Scheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_SchedulerType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_CronScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
@@ -154,9 +175,6 @@
 	public void complete_SignalDatainterchange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_SignalProcessor(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_SignalActionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend
index a25d1fb..ece3dca 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend
@@ -22,16 +22,18 @@
 import java.net.MalformedURLException
 import java.net.URL
 import java.nio.file.Paths
+import org.eclipse.emf.common.util.EList
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.jface.viewers.StyledString
 import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
-import org.eclipse.osbp.xtext.signal.SignalHandler
-import org.eclipse.osbp.xtext.signal.SignalWatcher
+import org.eclipse.osbp.xtext.signal.SignalScheduler
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName
 import org.eclipse.osbp.xtext.signal.ui.SignalDSLDocumentationTranslator
 import org.eclipse.swt.widgets.DirectoryDialog
 import org.eclipse.wb.internal.core.nls.ui.ChooseLocaleDialog
-import org.eclipse.xtext.Assignment
 import org.eclipse.xtext.Keyword
 import org.eclipse.xtext.RuleCall
 import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider
@@ -39,6 +41,7 @@
 import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext
 import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor
 import org.eclipse.xtext.ui.editor.contentassist.ReplacementTextApplier
+import org.eclipse.osbp.xtext.signal.SignalWatcher
 
 class LocaleTextApplier extends ReplacementTextApplier {
 	var ContentAssistContext context
@@ -98,11 +101,6 @@
 		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
 	}
 
-	override completeSignalWatcher_Directory(EObject model, Assignment assignment, ContentAssistContext context,
-		ICompletionProposalAcceptor acceptor) {
-		directoryPickerProposal(model, context, acceptor)
-	}
-
 	def directoryPickerProposal(EObject model, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		var dirName = createCompletionProposal("Select directory...", context) as ConfigurableCompletionProposal
 		if (dirName !== null) {
@@ -118,29 +116,51 @@
 	 */
 	override protected boolean isValidProposal(String proposal, String prefix, ContentAssistContext context) {
 		var result = super.isValidProposal(proposal, prefix, context)
-		if (context.currentModel instanceof SignalHandler) {
-			result = isValidProposalSignalHandlerType(proposal, prefix, (context.currentModel as SignalHandler), result)
+	
+		if (context.currentModel instanceof SignalWatcher) {
+			result = isValidProposalForSignalWatcherType(proposal, prefix, (context.currentModel as SignalWatcher), result)
+		}
+		else if(context.currentModel instanceof SignalDatainterchange){
+			result = isValidProposalSignalDatainterchange(proposal, prefix, (context.currentModel as SignalDatainterchange), result)
 		}
 		return result
 	}
-
-	def private boolean isValidProposalSignalHandlerType(String proposal, String prefix, SignalHandler handler,
+	
+	def isValidProposalSignalDatainterchange(String proposal, String prefix, SignalDatainterchange interchange,
 		boolean result) {
-
-		if (handler !== null) {
-			// if the data block has not been defined yet
-			if (handler.name !== null) {
-				if(handler.eContainer instanceof SignalWatcher){
-					var watcher = handler.eContainer as SignalWatcher
-					var url = getDirectoryURL(watcher.directory)
-					if(url !== null && !url.protocol.equals("file") && (proposal.equals("forFileMask"))){
+			
+		if (proposal.equals("applyon") && interchange !== null) {
+			if(interchange.eContainer instanceof WatcherWithFileMask){
+				return false
+			}
+			else if(interchange.eContainer instanceof WatcherWithFileName){
+				var watcher = (interchange.eContainer as WatcherWithFileName)
+				if(watcher.interchanges.size > 1 ){					
+					if(watcher.interchanges.basedInterchangeDefined){
 						return false
 					}
-				}
-				if(handler.interchanges.size < 1 && (proposal.equals(SignalExecutionTypeEnum.NOSEQ.literal) || proposal.equals(SignalExecutionTypeEnum.SEQ.literal))){					
+				}				
+			}
+			else if(interchange.eContainer instanceof SignalScheduler){
+				return false
+			}
+		}
+		return result
+		
+	}
+	
+	def private boolean isValidProposalForSignalWatcherType(String proposal, String prefix, SignalWatcher signal,
+		boolean result) {
+		var watcher = signal.definition
+		if (watcher !== null) {
+			// if the data block has not been defined yet
+			if(watcher instanceof WatcherWithFileMask){
+				if (proposal.equals("applyon")) {
 					return false
 				}
-				if(handler.interchanges.size < 1 && (proposal.equals("forFileMask"))){					
+			}
+			else if(watcher instanceof WatcherWithFileName){
+				if(watcher.interchanges.size < 1 && (proposal.equals(SignalExecutionTypeEnum.NOSEQ.literal) || proposal.equals(SignalExecutionTypeEnum.SEQ.literal))){					
 					return false
 				}
 			}
@@ -148,6 +168,16 @@
 		return result
 	}
 	
+	def boolean basedInterchangeDefined(EList<SignalDatainterchange> interchanges){
+		for(unit : interchanges){
+			if(unit.baseinterchange){
+				return true
+			}
+		}
+		return false
+	}
+	
+	
 	def getDirectoryURL(String directory) {
 	    try {
 			return new URL(directory);
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java
index 00c677e..fe7572c 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java
index 4e2eafd..58c767a 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java
index 95ec750..506c80c 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
@@ -19,17 +19,21 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.nio.file.Paths;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.jface.viewers.StyledString;
 import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
-import org.eclipse.osbp.xtext.signal.SignalHandler;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
+import org.eclipse.osbp.xtext.signal.WatcherDefinition;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
 import org.eclipse.osbp.xtext.signal.ui.SignalDSLDocumentationTranslator;
 import org.eclipse.osbp.xtext.signal.ui.contentassist.AbstractSignalDSLProposalProvider;
 import org.eclipse.osbp.xtext.signal.ui.contentassist.DirectoryNameTextApplier;
-import org.eclipse.xtext.Assignment;
 import org.eclipse.xtext.Keyword;
 import org.eclipse.xtext.RuleCall;
 import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
@@ -65,11 +69,6 @@
     this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
   }
   
-  @Override
-  public void completeSignalWatcher_Directory(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
-    this.directoryPickerProposal(model, context, acceptor);
-  }
-  
   public void directoryPickerProposal(final EObject model, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     ICompletionProposal _createCompletionProposal = this.createCompletionProposal("Select directory...", context);
     ConfigurableCompletionProposal dirName = ((ConfigurableCompletionProposal) _createCompletionProposal);
@@ -88,38 +87,77 @@
   protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
     boolean result = super.isValidProposal(proposal, prefix, context);
     EObject _currentModel = context.getCurrentModel();
-    if ((_currentModel instanceof SignalHandler)) {
+    if ((_currentModel instanceof SignalWatcher)) {
       EObject _currentModel_1 = context.getCurrentModel();
-      result = this.isValidProposalSignalHandlerType(proposal, prefix, ((SignalHandler) _currentModel_1), result);
+      result = this.isValidProposalForSignalWatcherType(proposal, prefix, ((SignalWatcher) _currentModel_1), result);
+    } else {
+      EObject _currentModel_2 = context.getCurrentModel();
+      if ((_currentModel_2 instanceof SignalDatainterchange)) {
+        EObject _currentModel_3 = context.getCurrentModel();
+        result = this.isValidProposalSignalDatainterchange(proposal, prefix, ((SignalDatainterchange) _currentModel_3), result);
+      }
     }
     return result;
   }
   
-  private boolean isValidProposalSignalHandlerType(final String proposal, final String prefix, final SignalHandler handler, final boolean result) {
-    if ((handler != null)) {
-      String _name = handler.getName();
-      boolean _tripleNotEquals = (_name != null);
-      if (_tripleNotEquals) {
-        EObject _eContainer = handler.eContainer();
-        if ((_eContainer instanceof SignalWatcher)) {
-          EObject _eContainer_1 = handler.eContainer();
-          SignalWatcher watcher = ((SignalWatcher) _eContainer_1);
-          URL url = this.getDirectoryURL(watcher.getDirectory());
-          if ((((url != null) && (!url.getProtocol().equals("file"))) && proposal.equals("forFileMask"))) {
+  public boolean isValidProposalSignalDatainterchange(final String proposal, final String prefix, final SignalDatainterchange interchange, final boolean result) {
+    if ((proposal.equals("applyon") && (interchange != null))) {
+      EObject _eContainer = interchange.eContainer();
+      if ((_eContainer instanceof WatcherWithFileMask)) {
+        return false;
+      } else {
+        EObject _eContainer_1 = interchange.eContainer();
+        if ((_eContainer_1 instanceof WatcherWithFileName)) {
+          EObject _eContainer_2 = interchange.eContainer();
+          WatcherWithFileName watcher = ((WatcherWithFileName) _eContainer_2);
+          int _size = watcher.getInterchanges().size();
+          boolean _greaterThan = (_size > 1);
+          if (_greaterThan) {
+            boolean _basedInterchangeDefined = this.basedInterchangeDefined(watcher.getInterchanges());
+            if (_basedInterchangeDefined) {
+              return false;
+            }
+          }
+        } else {
+          EObject _eContainer_3 = interchange.eContainer();
+          if ((_eContainer_3 instanceof SignalScheduler)) {
             return false;
           }
         }
-        if (((handler.getInterchanges().size() < 1) && (proposal.equals(SignalExecutionTypeEnum.NOSEQ.getLiteral()) || proposal.equals(SignalExecutionTypeEnum.SEQ.getLiteral())))) {
-          return false;
-        }
-        if (((handler.getInterchanges().size() < 1) && proposal.equals("forFileMask"))) {
-          return false;
-        }
       }
     }
     return result;
   }
   
+  private boolean isValidProposalForSignalWatcherType(final String proposal, final String prefix, final SignalWatcher signal, final boolean result) {
+    WatcherDefinition watcher = signal.getDefinition();
+    if ((watcher != null)) {
+      if ((watcher instanceof WatcherWithFileMask)) {
+        boolean _equals = proposal.equals("applyon");
+        if (_equals) {
+          return false;
+        }
+      } else {
+        if ((watcher instanceof WatcherWithFileName)) {
+          if (((((WatcherWithFileName)watcher).getInterchanges().size() < 1) && (proposal.equals(SignalExecutionTypeEnum.NOSEQ.getLiteral()) || proposal.equals(SignalExecutionTypeEnum.SEQ.getLiteral())))) {
+            return false;
+          }
+        }
+      }
+    }
+    return result;
+  }
+  
+  public boolean basedInterchangeDefined(final EList<SignalDatainterchange> interchanges) {
+    for (final SignalDatainterchange unit : interchanges) {
+      boolean _isBaseinterchange = unit.isBaseinterchange();
+      if (_isBaseinterchange) {
+        return true;
+      }
+    }
+    return false;
+  }
+  
   public URL getDirectoryURL(final String directory) {
     try {
       return new URL(directory);
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java
index 5523f76..f31f680 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java
index e1f0eb4..6f6d5ad 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java
index e7c72ad..2470953 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java
index 4494c0b..83d7fce 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/CronScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/CronScheduler.java
index 4f557ec..06f2638 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/CronScheduler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/CronScheduler.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -33,7 +33,7 @@
  * @model
  * @generated
  */
-public interface CronScheduler extends Scheduler {
+public interface CronScheduler extends SchedulerType {
 	/**
 	 * Returns the value of the '<em><b>Expression</b></em>' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DailyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DailyScheduler.java
index ee57730..752bbcc 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DailyScheduler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DailyScheduler.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -34,7 +34,7 @@
  * @model
  * @generated
  */
-public interface DailyScheduler extends Scheduler {
+public interface DailyScheduler extends SchedulerType {
 	/**
 	 * Returns the value of the '<em><b>Hour</b></em>' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DayOfWeekEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DayOfWeekEnum.java
index 640df4f..3d1e880 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DayOfWeekEnum.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DayOfWeekEnum.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/HourlyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/HourlyScheduler.java
index b4a1a50..cf22bd1 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/HourlyScheduler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/HourlyScheduler.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -33,7 +33,7 @@
  * @model
  * @generated
  */
-public interface HourlyScheduler extends Scheduler {
+public interface HourlyScheduler extends SchedulerType {
 	/**
 	 * Returns the value of the '<em><b>Minute</b></em>' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/MonthlyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/MonthlyScheduler.java
index c2b2ef7..9a52596 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/MonthlyScheduler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/MonthlyScheduler.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -35,7 +35,7 @@
  * @model
  * @generated
  */
-public interface MonthlyScheduler extends Scheduler {
+public interface MonthlyScheduler extends SchedulerType {
 	/**
 	 * Returns the value of the '<em><b>Dayofmonth</b></em>' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/Scheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SchedulerType.java
similarity index 81%
rename from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/Scheduler.java
rename to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SchedulerType.java
index ee1202f..e4fd5fd 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/Scheduler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SchedulerType.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -19,13 +19,13 @@
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Scheduler</b></em>'.
+ * A representation of the model object '<em><b>Scheduler Type</b></em>'.
  * <!-- end-user-doc -->
  *
  *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getScheduler()
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSchedulerType()
  * @model
  * @generated
  */
-public interface Scheduler extends SignalLazyResolver {
-} // Scheduler
+public interface SchedulerType extends SignalLazyResolver {
+} // SchedulerType
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java
index 4b1ccda..3b0d472 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -40,7 +40,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	DATAIMPORT(0, "DATAIMPORT", "Import"),
+	DATAIMPORT(0, "DATAIMPORT", "import"),
 
 	/**
 	 * The '<em><b>DATAEXPORT</b></em>' literal object.
@@ -50,7 +50,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	DATAEXPORT(0, "DATAEXPORT", "Export"),
+	DATAEXPORT(0, "DATAEXPORT", "export"),
 
 	/**
 	 * The '<em><b>NONE</b></em>' literal object.
@@ -60,7 +60,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	NONE(0, "NONE", "None");
+	NONE(0, "NONE", "none");
 
 	/**
 	 * The '<em><b>DATAIMPORT</b></em>' literal value.
@@ -71,7 +71,7 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #DATAIMPORT
-	 * @model literal="Import"
+	 * @model literal="import"
 	 * @generated
 	 * @ordered
 	 */
@@ -86,7 +86,7 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #DATAEXPORT
-	 * @model literal="Export"
+	 * @model literal="export"
 	 * @generated
 	 * @ordered
 	 */
@@ -101,7 +101,7 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #NONE
-	 * @model literal="None"
+	 * @model literal="none"
 	 * @generated
 	 * @ordered
 	 */
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java
index 6863388..df7f686 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -63,13 +63,13 @@
 	SignalPackage createSignalPackage();
 
 	/**
-	 * Returns a new object of class '<em>Signal Base</em>'.
+	 * Returns a new object of class '<em>Signal Definition</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Signal Base</em>'.
+	 * @return a new object of class '<em>Signal Definition</em>'.
 	 * @generated
 	 */
-	SignalBase createSignalBase();
+	SignalDefinition createSignalDefinition();
 
 	/**
 	 * Returns a new object of class '<em>Signal Watcher</em>'.
@@ -81,31 +81,40 @@
 	SignalWatcher createSignalWatcher();
 
 	/**
-	 * Returns a new object of class '<em>Signal Handler</em>'.
+	 * Returns a new object of class '<em>Watcher Definition</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Signal Handler</em>'.
+	 * @return a new object of class '<em>Watcher Definition</em>'.
 	 * @generated
 	 */
-	SignalHandler createSignalHandler();
+	WatcherDefinition createWatcherDefinition();
 
 	/**
-	 * Returns a new object of class '<em>Trigger Policy</em>'.
+	 * Returns a new object of class '<em>Watcher With File Mask</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Trigger Policy</em>'.
+	 * @return a new object of class '<em>Watcher With File Mask</em>'.
 	 * @generated
 	 */
-	TriggerPolicy createTriggerPolicy();
+	WatcherWithFileMask createWatcherWithFileMask();
 
 	/**
-	 * Returns a new object of class '<em>Trigger File</em>'.
+	 * Returns a new object of class '<em>Watcher With File Name</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Trigger File</em>'.
+	 * @return a new object of class '<em>Watcher With File Name</em>'.
 	 * @generated
 	 */
-	TriggerFile createTriggerFile();
+	WatcherWithFileName createWatcherWithFileName();
+
+	/**
+	 * Returns a new object of class '<em>Scheduler Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Scheduler Type</em>'.
+	 * @generated
+	 */
+	SchedulerType createSchedulerType();
 
 	/**
 	 * Returns a new object of class '<em>Signal Scheduler</em>'.
@@ -117,15 +126,6 @@
 	SignalScheduler createSignalScheduler();
 
 	/**
-	 * Returns a new object of class '<em>Scheduler</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Scheduler</em>'.
-	 * @generated
-	 */
-	Scheduler createScheduler();
-
-	/**
 	 * Returns a new object of class '<em>Cron Scheduler</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java
index 9c62266..144f18a 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -40,7 +40,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.signal.SignalDSLFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='signal' modelName='SignalDSL' prefix='SignalDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License 2.0 \r\n which accompanies this distribution, and is available at\r\n http://www.eclipse.org/legal/epl-v10.html\r\n \r\n Contributors:                                                      \r\n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\r\n \r\n generated from SignalDSL.xcore\r\n\r\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='signal' modelName='SignalDSL' prefix='SignalDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License 2.0 \r\n which accompanies this distribution, and is available at\r\n https://www.eclipse.org/legal/epl-2.0/\r\n\r\n SPDX-License-Identifier: EPL-2.0\r\n \r\n Contributors:                                                      \r\n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\r\n \r\n generated from SignalDSL.xcore\r\n\r\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='signaldsl'"
  * @generated
  */
@@ -180,13 +180,13 @@
 	int SIGNAL_PACKAGE__NAME = OSBPTypesPackage.LPACKAGE__NAME;
 
 	/**
-	 * The feature id for the '<em><b>Watchers</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Signals</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_PACKAGE__WATCHERS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
+	int SIGNAL_PACKAGE__SIGNALS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Signal Package</em>' class.
@@ -216,14 +216,14 @@
 	int SIGNAL_PACKAGE_OPERATION_COUNT = OSBPTypesPackage.LPACKAGE_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalBaseImpl <em>Signal Base</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalDefinitionImpl <em>Signal Definition</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalBaseImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalBase()
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDefinitionImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalDefinition()
 	 * @generated
 	 */
-	int SIGNAL_BASE = 3;
+	int SIGNAL_DEFINITION = 3;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -232,16 +232,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_BASE__NAME = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
+	int SIGNAL_DEFINITION__NAME = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of structural features of the '<em>Signal Base</em>' class.
+	 * The number of structural features of the '<em>Signal Definition</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_BASE_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 1;
+	int SIGNAL_DEFINITION_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 1;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -250,16 +250,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_BASE___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int SIGNAL_DEFINITION___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
-	 * The number of operations of the '<em>Signal Base</em>' class.
+	 * The number of operations of the '<em>Signal Definition</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_BASE_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
+	int SIGNAL_DEFINITION_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl <em>Signal Watcher</em>}' class.
@@ -278,25 +278,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_WATCHER__NAME = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
+	int SIGNAL_WATCHER__NAME = SIGNAL_DEFINITION__NAME;
 
 	/**
-	 * The feature id for the '<em><b>Directory</b></em>' attribute.
+	 * The feature id for the '<em><b>Definition</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_WATCHER__DIRECTORY = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Handlers</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SIGNAL_WATCHER__HANDLERS = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 2;
+	int SIGNAL_WATCHER__DEFINITION = SIGNAL_DEFINITION_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Signal Watcher</em>' class.
@@ -305,7 +296,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_WATCHER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 3;
+	int SIGNAL_WATCHER_FEATURE_COUNT = SIGNAL_DEFINITION_FEATURE_COUNT + 1;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -314,7 +305,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_WATCHER___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int SIGNAL_WATCHER___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_DEFINITION___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Signal Watcher</em>' class.
@@ -323,26 +314,26 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_WATCHER_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
+	int SIGNAL_WATCHER_OPERATION_COUNT = SIGNAL_DEFINITION_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl <em>Signal Handler</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.WatcherDefinitionImpl <em>Watcher Definition</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalHandler()
+	 * @see org.eclipse.osbp.xtext.signal.impl.WatcherDefinitionImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWatcherDefinition()
 	 * @generated
 	 */
-	int SIGNAL_HANDLER = 5;
+	int WATCHER_DEFINITION = 5;
 
 	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * The feature id for the '<em><b>Interchangegroup</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER__NAME = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
+	int WATCHER_DEFINITION__INTERCHANGEGROUP = 0;
 
 	/**
 	 * The feature id for the '<em><b>Executiontype</b></em>' attribute.
@@ -351,99 +342,53 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER__EXECUTIONTYPE = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 1;
+	int WATCHER_DEFINITION__EXECUTIONTYPE = 1;
 
 	/**
-	 * The feature id for the '<em><b>Interchanges</b></em>' containment reference list.
+	 * The number of structural features of the '<em>Watcher Definition</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER__INTERCHANGES = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 2;
+	int WATCHER_DEFINITION_FEATURE_COUNT = 2;
 
 	/**
-	 * The feature id for the '<em><b>Triggerpolicy</b></em>' containment reference.
+	 * The number of operations of the '<em>Watcher Definition</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER__TRIGGERPOLICY = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 3;
+	int WATCHER_DEFINITION_OPERATION_COUNT = 0;
 
 	/**
-	 * The number of structural features of the '<em>Signal Handler</em>' class.
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileMaskImpl <em>Watcher With File Mask</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.WatcherWithFileMaskImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWatcherWithFileMask()
+	 * @generated
+	 */
+	int WATCHER_WITH_FILE_MASK = 6;
+
+	/**
+	 * The feature id for the '<em><b>Interchangegroup</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 4;
+	int WATCHER_WITH_FILE_MASK__INTERCHANGEGROUP = WATCHER_DEFINITION__INTERCHANGEGROUP;
 
 	/**
-	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * The feature id for the '<em><b>Executiontype</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
-
-	/**
-	 * The number of operations of the '<em>Signal Handler</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SIGNAL_HANDLER_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl <em>Trigger Policy</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerPolicy()
-	 * @generated
-	 */
-	int TRIGGER_POLICY = 6;
-
-	/**
-	 * The number of structural features of the '<em>Trigger Policy</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TRIGGER_POLICY_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
-
-	/**
-	 * The operation id for the '<em>EResolve Proxy</em>' operation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TRIGGER_POLICY___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
-
-	/**
-	 * The number of operations of the '<em>Trigger Policy</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TRIGGER_POLICY_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl <em>Trigger File</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerFile()
-	 * @generated
-	 */
-	int TRIGGER_FILE = 7;
+	int WATCHER_WITH_FILE_MASK__EXECUTIONTYPE = WATCHER_DEFINITION__EXECUTIONTYPE;
 
 	/**
 	 * The feature id for the '<em><b>Filemask</b></em>' attribute.
@@ -452,16 +397,117 @@
 	 * @generated
 	 * @ordered
 	 */
-	int TRIGGER_FILE__FILEMASK = TRIGGER_POLICY_FEATURE_COUNT + 0;
+	int WATCHER_WITH_FILE_MASK__FILEMASK = WATCHER_DEFINITION_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of structural features of the '<em>Trigger File</em>' class.
+	 * The feature id for the '<em><b>Interchange</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TRIGGER_FILE_FEATURE_COUNT = TRIGGER_POLICY_FEATURE_COUNT + 1;
+	int WATCHER_WITH_FILE_MASK__INTERCHANGE = WATCHER_DEFINITION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Watcher With File Mask</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_MASK_FEATURE_COUNT = WATCHER_DEFINITION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Watcher With File Mask</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_MASK_OPERATION_COUNT = WATCHER_DEFINITION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileNameImpl <em>Watcher With File Name</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.WatcherWithFileNameImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWatcherWithFileName()
+	 * @generated
+	 */
+	int WATCHER_WITH_FILE_NAME = 7;
+
+	/**
+	 * The feature id for the '<em><b>Interchangegroup</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_NAME__INTERCHANGEGROUP = WATCHER_DEFINITION__INTERCHANGEGROUP;
+
+	/**
+	 * The feature id for the '<em><b>Executiontype</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_NAME__EXECUTIONTYPE = WATCHER_DEFINITION__EXECUTIONTYPE;
+
+	/**
+	 * The feature id for the '<em><b>Filename</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_NAME__FILENAME = WATCHER_DEFINITION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Interchanges</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_NAME__INTERCHANGES = WATCHER_DEFINITION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Watcher With File Name</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_NAME_FEATURE_COUNT = WATCHER_DEFINITION_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Watcher With File Name</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WATCHER_WITH_FILE_NAME_OPERATION_COUNT = WATCHER_DEFINITION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SchedulerTypeImpl <em>Scheduler Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.SchedulerTypeImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSchedulerType()
+	 * @generated
+	 */
+	int SCHEDULER_TYPE = 8;
+
+	/**
+	 * The number of structural features of the '<em>Scheduler Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCHEDULER_TYPE_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -470,16 +516,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int TRIGGER_FILE___ERESOLVE_PROXY__INTERNALEOBJECT = TRIGGER_POLICY___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int SCHEDULER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
-	 * The number of operations of the '<em>Trigger File</em>' class.
+	 * The number of operations of the '<em>Scheduler Type</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int TRIGGER_FILE_OPERATION_COUNT = TRIGGER_POLICY_OPERATION_COUNT + 0;
+	int SCHEDULER_TYPE_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl <em>Signal Scheduler</em>}' class.
@@ -489,16 +535,52 @@
 	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalScheduler()
 	 * @generated
 	 */
-	int SIGNAL_SCHEDULER = 8;
+	int SIGNAL_SCHEDULER = 9;
 
 	/**
-	 * The feature id for the '<em><b>Scheduler</b></em>' containment reference.
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_SCHEDULER__SCHEDULER = TRIGGER_POLICY_FEATURE_COUNT + 0;
+	int SIGNAL_SCHEDULER__NAME = SIGNAL_DEFINITION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Interchangegroup</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER__INTERCHANGEGROUP = SIGNAL_DEFINITION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Executiontype</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER__EXECUTIONTYPE = SIGNAL_DEFINITION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Schedulertype</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER__SCHEDULERTYPE = SIGNAL_DEFINITION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Interchanges</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER__INTERCHANGES = SIGNAL_DEFINITION_FEATURE_COUNT + 3;
 
 	/**
 	 * The number of structural features of the '<em>Signal Scheduler</em>' class.
@@ -507,7 +589,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_SCHEDULER_FEATURE_COUNT = TRIGGER_POLICY_FEATURE_COUNT + 1;
+	int SIGNAL_SCHEDULER_FEATURE_COUNT = SIGNAL_DEFINITION_FEATURE_COUNT + 4;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -516,7 +598,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = TRIGGER_POLICY___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int SIGNAL_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_DEFINITION___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Signal Scheduler</em>' class.
@@ -525,44 +607,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_SCHEDULER_OPERATION_COUNT = TRIGGER_POLICY_OPERATION_COUNT + 0;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SchedulerImpl <em>Scheduler</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.SchedulerImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getScheduler()
-	 * @generated
-	 */
-	int SCHEDULER = 9;
-
-	/**
-	 * The number of structural features of the '<em>Scheduler</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SCHEDULER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
-
-	/**
-	 * The operation id for the '<em>EResolve Proxy</em>' operation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
-
-	/**
-	 * The number of operations of the '<em>Scheduler</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SCHEDULER_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
+	int SIGNAL_SCHEDULER_OPERATION_COUNT = SIGNAL_DEFINITION_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.CronSchedulerImpl <em>Cron Scheduler</em>}' class.
@@ -581,7 +626,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CRON_SCHEDULER__EXPRESSION = SCHEDULER_FEATURE_COUNT + 0;
+	int CRON_SCHEDULER__EXPRESSION = SCHEDULER_TYPE_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Cron Scheduler</em>' class.
@@ -590,7 +635,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CRON_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 1;
+	int CRON_SCHEDULER_FEATURE_COUNT = SCHEDULER_TYPE_FEATURE_COUNT + 1;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -599,7 +644,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CRON_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int CRON_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Cron Scheduler</em>' class.
@@ -608,7 +653,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CRON_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+	int CRON_SCHEDULER_OPERATION_COUNT = SCHEDULER_TYPE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.HourlySchedulerImpl <em>Hourly Scheduler</em>}' class.
@@ -627,7 +672,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int HOURLY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 0;
+	int HOURLY_SCHEDULER__MINUTE = SCHEDULER_TYPE_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Hourly Scheduler</em>' class.
@@ -636,7 +681,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int HOURLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 1;
+	int HOURLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_TYPE_FEATURE_COUNT + 1;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -645,7 +690,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int HOURLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int HOURLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Hourly Scheduler</em>' class.
@@ -654,7 +699,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int HOURLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+	int HOURLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_TYPE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.DailySchedulerImpl <em>Daily Scheduler</em>}' class.
@@ -673,7 +718,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DAILY_SCHEDULER__HOUR = SCHEDULER_FEATURE_COUNT + 0;
+	int DAILY_SCHEDULER__HOUR = SCHEDULER_TYPE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Minute</b></em>' attribute.
@@ -682,7 +727,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DAILY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 1;
+	int DAILY_SCHEDULER__MINUTE = SCHEDULER_TYPE_FEATURE_COUNT + 1;
 
 	/**
 	 * The number of structural features of the '<em>Daily Scheduler</em>' class.
@@ -691,7 +736,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DAILY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 2;
+	int DAILY_SCHEDULER_FEATURE_COUNT = SCHEDULER_TYPE_FEATURE_COUNT + 2;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -700,7 +745,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DAILY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int DAILY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Daily Scheduler</em>' class.
@@ -709,7 +754,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DAILY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+	int DAILY_SCHEDULER_OPERATION_COUNT = SCHEDULER_TYPE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl <em>Weekly Scheduler</em>}' class.
@@ -728,7 +773,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int WEEKLY_SCHEDULER__DAYOFWEEK = SCHEDULER_FEATURE_COUNT + 0;
+	int WEEKLY_SCHEDULER__DAYOFWEEK = SCHEDULER_TYPE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Hour</b></em>' attribute.
@@ -737,7 +782,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int WEEKLY_SCHEDULER__HOUR = SCHEDULER_FEATURE_COUNT + 1;
+	int WEEKLY_SCHEDULER__HOUR = SCHEDULER_TYPE_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Minute</b></em>' attribute.
@@ -746,7 +791,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int WEEKLY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 2;
+	int WEEKLY_SCHEDULER__MINUTE = SCHEDULER_TYPE_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Weekly Scheduler</em>' class.
@@ -755,7 +800,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int WEEKLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 3;
+	int WEEKLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_TYPE_FEATURE_COUNT + 3;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -764,7 +809,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int WEEKLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int WEEKLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Weekly Scheduler</em>' class.
@@ -773,7 +818,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int WEEKLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+	int WEEKLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_TYPE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl <em>Monthly Scheduler</em>}' class.
@@ -792,7 +837,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int MONTHLY_SCHEDULER__DAYOFMONTH = SCHEDULER_FEATURE_COUNT + 0;
+	int MONTHLY_SCHEDULER__DAYOFMONTH = SCHEDULER_TYPE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Hour</b></em>' attribute.
@@ -801,7 +846,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int MONTHLY_SCHEDULER__HOUR = SCHEDULER_FEATURE_COUNT + 1;
+	int MONTHLY_SCHEDULER__HOUR = SCHEDULER_TYPE_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Minute</b></em>' attribute.
@@ -810,7 +855,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int MONTHLY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 2;
+	int MONTHLY_SCHEDULER__MINUTE = SCHEDULER_TYPE_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Monthly Scheduler</em>' class.
@@ -819,7 +864,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int MONTHLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 3;
+	int MONTHLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_TYPE_FEATURE_COUNT + 3;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -828,7 +873,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int MONTHLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int MONTHLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Monthly Scheduler</em>' class.
@@ -837,7 +882,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int MONTHLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+	int MONTHLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_TYPE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.SignalProcessor <em>Signal Processor</em>}' class.
@@ -905,13 +950,13 @@
 	int SIGNAL_DATAINTERCHANGE__DATA_REF = SIGNAL_PROCESSOR_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>File Name</b></em>' attribute.
+	 * The feature id for the '<em><b>Baseinterchange</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_DATAINTERCHANGE__FILE_NAME = SIGNAL_PROCESSOR_FEATURE_COUNT + 2;
+	int SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE = SIGNAL_PROCESSOR_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Signal Datainterchange</em>' class.
@@ -1044,36 +1089,36 @@
 	EClass getSignalPackage();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalPackage#getWatchers <em>Watchers</em>}'.
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalPackage#getSignals <em>Signals</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Watchers</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalPackage#getWatchers()
+	 * @return the meta object for the containment reference list '<em>Signals</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalPackage#getSignals()
 	 * @see #getSignalPackage()
 	 * @generated
 	 */
-	EReference getSignalPackage_Watchers();
+	EReference getSignalPackage_Signals();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SignalBase <em>Signal Base</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SignalDefinition <em>Signal Definition</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Signal Base</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalBase
+	 * @return the meta object for class '<em>Signal Definition</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalDefinition
 	 * @generated
 	 */
-	EClass getSignalBase();
+	EClass getSignalDefinition();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalBase#getName <em>Name</em>}'.
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalDefinition#getName <em>Name</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalBase#getName()
-	 * @see #getSignalBase()
+	 * @see org.eclipse.osbp.xtext.signal.SignalDefinition#getName()
+	 * @see #getSignalDefinition()
 	 * @generated
 	 */
-	EAttribute getSignalBase_Name();
+	EAttribute getSignalDefinition_Name();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SignalWatcher <em>Signal Watcher</em>}'.
@@ -1086,122 +1131,121 @@
 	EClass getSignalWatcher();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getName <em>Name</em>}'.
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getDefinition <em>Definition</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalWatcher#getName()
+	 * @return the meta object for the containment reference '<em>Definition</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalWatcher#getDefinition()
 	 * @see #getSignalWatcher()
 	 * @generated
 	 */
-	EAttribute getSignalWatcher_Name();
+	EReference getSignalWatcher_Definition();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getDirectory <em>Directory</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.WatcherDefinition <em>Watcher Definition</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Directory</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalWatcher#getDirectory()
-	 * @see #getSignalWatcher()
+	 * @return the meta object for class '<em>Watcher Definition</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WatcherDefinition
 	 * @generated
 	 */
-	EAttribute getSignalWatcher_Directory();
+	EClass getWatcherDefinition();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getHandlers <em>Handlers</em>}'.
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.signal.WatcherDefinition#getInterchangegroup <em>Interchangegroup</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Handlers</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalWatcher#getHandlers()
-	 * @see #getSignalWatcher()
+	 * @return the meta object for the reference '<em>Interchangegroup</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WatcherDefinition#getInterchangegroup()
+	 * @see #getWatcherDefinition()
 	 * @generated
 	 */
-	EReference getSignalWatcher_Handlers();
+	EReference getWatcherDefinition_Interchangegroup();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SignalHandler <em>Signal Handler</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Signal Handler</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler
-	 * @generated
-	 */
-	EClass getSignalHandler();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getName <em>Name</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Name</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getName()
-	 * @see #getSignalHandler()
-	 * @generated
-	 */
-	EAttribute getSignalHandler_Name();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getExecutiontype <em>Executiontype</em>}'.
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.WatcherDefinition#getExecutiontype <em>Executiontype</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the attribute '<em>Executiontype</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getExecutiontype()
-	 * @see #getSignalHandler()
+	 * @see org.eclipse.osbp.xtext.signal.WatcherDefinition#getExecutiontype()
+	 * @see #getWatcherDefinition()
 	 * @generated
 	 */
-	EAttribute getSignalHandler_Executiontype();
+	EAttribute getWatcherDefinition_Executiontype();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getInterchanges <em>Interchanges</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask <em>Watcher With File Mask</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Interchanges</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getInterchanges()
-	 * @see #getSignalHandler()
+	 * @return the meta object for class '<em>Watcher With File Mask</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileMask
 	 * @generated
 	 */
-	EReference getSignalHandler_Interchanges();
+	EClass getWatcherWithFileMask();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy <em>Triggerpolicy</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Triggerpolicy</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy()
-	 * @see #getSignalHandler()
-	 * @generated
-	 */
-	EReference getSignalHandler_Triggerpolicy();
-
-	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.TriggerPolicy <em>Trigger Policy</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Trigger Policy</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.TriggerPolicy
-	 * @generated
-	 */
-	EClass getTriggerPolicy();
-
-	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.TriggerFile <em>Trigger File</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Trigger File</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.TriggerFile
-	 * @generated
-	 */
-	EClass getTriggerFile();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask <em>Filemask</em>}'.
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getFilemask <em>Filemask</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the attribute '<em>Filemask</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask()
-	 * @see #getTriggerFile()
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getFilemask()
+	 * @see #getWatcherWithFileMask()
 	 * @generated
 	 */
-	EAttribute getTriggerFile_Filemask();
+	EAttribute getWatcherWithFileMask_Filemask();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getInterchange <em>Interchange</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Interchange</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getInterchange()
+	 * @see #getWatcherWithFileMask()
+	 * @generated
+	 */
+	EReference getWatcherWithFileMask_Interchange();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileName <em>Watcher With File Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Watcher With File Name</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileName
+	 * @generated
+	 */
+	EClass getWatcherWithFileName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileName#getFilename <em>Filename</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filename</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileName#getFilename()
+	 * @see #getWatcherWithFileName()
+	 * @generated
+	 */
+	EAttribute getWatcherWithFileName_Filename();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileName#getInterchanges <em>Interchanges</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Interchanges</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileName#getInterchanges()
+	 * @see #getWatcherWithFileName()
+	 * @generated
+	 */
+	EReference getWatcherWithFileName_Interchanges();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SchedulerType <em>Scheduler Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Scheduler Type</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SchedulerType
+	 * @generated
+	 */
+	EClass getSchedulerType();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SignalScheduler <em>Signal Scheduler</em>}'.
@@ -1214,25 +1258,48 @@
 	EClass getSignalScheduler();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler <em>Scheduler</em>}'.
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getInterchangegroup <em>Interchangegroup</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Scheduler</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler()
+	 * @return the meta object for the reference '<em>Interchangegroup</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalScheduler#getInterchangegroup()
 	 * @see #getSignalScheduler()
 	 * @generated
 	 */
-	EReference getSignalScheduler_Scheduler();
+	EReference getSignalScheduler_Interchangegroup();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.Scheduler <em>Scheduler</em>}'.
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getExecutiontype <em>Executiontype</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Scheduler</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.Scheduler
+	 * @return the meta object for the attribute '<em>Executiontype</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalScheduler#getExecutiontype()
+	 * @see #getSignalScheduler()
 	 * @generated
 	 */
-	EClass getScheduler();
+	EAttribute getSignalScheduler_Executiontype();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getSchedulertype <em>Schedulertype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Schedulertype</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalScheduler#getSchedulertype()
+	 * @see #getSignalScheduler()
+	 * @generated
+	 */
+	EReference getSignalScheduler_Schedulertype();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getInterchanges <em>Interchanges</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Interchanges</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalScheduler#getInterchanges()
+	 * @see #getSignalScheduler()
+	 * @generated
+	 */
+	EReference getSignalScheduler_Interchanges();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.CronScheduler <em>Cron Scheduler</em>}'.
@@ -1437,15 +1504,15 @@
 	EReference getSignalDatainterchange_DataRef();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#getFileName <em>File Name</em>}'.
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#isBaseinterchange <em>Baseinterchange</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>File Name</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalDatainterchange#getFileName()
+	 * @return the meta object for the attribute '<em>Baseinterchange</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalDatainterchange#isBaseinterchange()
 	 * @see #getSignalDatainterchange()
 	 * @generated
 	 */
-	EAttribute getSignalDatainterchange_FileName();
+	EAttribute getSignalDatainterchange_Baseinterchange();
 
 	/**
 	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.signal.SignalActionEnum <em>Signal Action Enum</em>}'.
@@ -1566,22 +1633,22 @@
 		EClass SIGNAL_PACKAGE = eINSTANCE.getSignalPackage();
 
 		/**
-		 * The meta object literal for the '<em><b>Watchers</b></em>' containment reference list feature.
+		 * The meta object literal for the '<em><b>Signals</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference SIGNAL_PACKAGE__WATCHERS = eINSTANCE.getSignalPackage_Watchers();
+		EReference SIGNAL_PACKAGE__SIGNALS = eINSTANCE.getSignalPackage_Signals();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalBaseImpl <em>Signal Base</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalDefinitionImpl <em>Signal Definition</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalBaseImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalBase()
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDefinitionImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalDefinition()
 		 * @generated
 		 */
-		EClass SIGNAL_BASE = eINSTANCE.getSignalBase();
+		EClass SIGNAL_DEFINITION = eINSTANCE.getSignalDefinition();
 
 		/**
 		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
@@ -1589,7 +1656,7 @@
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute SIGNAL_BASE__NAME = eINSTANCE.getSignalBase_Name();
+		EAttribute SIGNAL_DEFINITION__NAME = eINSTANCE.getSignalDefinition_Name();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl <em>Signal Watcher</em>}' class.
@@ -1602,46 +1669,30 @@
 		EClass SIGNAL_WATCHER = eINSTANCE.getSignalWatcher();
 
 		/**
-		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Definition</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute SIGNAL_WATCHER__NAME = eINSTANCE.getSignalWatcher_Name();
+		EReference SIGNAL_WATCHER__DEFINITION = eINSTANCE.getSignalWatcher_Definition();
 
 		/**
-		 * The meta object literal for the '<em><b>Directory</b></em>' attribute feature.
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.WatcherDefinitionImpl <em>Watcher Definition</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.WatcherDefinitionImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWatcherDefinition()
 		 * @generated
 		 */
-		EAttribute SIGNAL_WATCHER__DIRECTORY = eINSTANCE.getSignalWatcher_Directory();
+		EClass WATCHER_DEFINITION = eINSTANCE.getWatcherDefinition();
 
 		/**
-		 * The meta object literal for the '<em><b>Handlers</b></em>' containment reference list feature.
+		 * The meta object literal for the '<em><b>Interchangegroup</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference SIGNAL_WATCHER__HANDLERS = eINSTANCE.getSignalWatcher_Handlers();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl <em>Signal Handler</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalHandler()
-		 * @generated
-		 */
-		EClass SIGNAL_HANDLER = eINSTANCE.getSignalHandler();
-
-		/**
-		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute SIGNAL_HANDLER__NAME = eINSTANCE.getSignalHandler_Name();
+		EReference WATCHER_DEFINITION__INTERCHANGEGROUP = eINSTANCE.getWatcherDefinition_Interchangegroup();
 
 		/**
 		 * The meta object literal for the '<em><b>Executiontype</b></em>' attribute feature.
@@ -1649,43 +1700,17 @@
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute SIGNAL_HANDLER__EXECUTIONTYPE = eINSTANCE.getSignalHandler_Executiontype();
+		EAttribute WATCHER_DEFINITION__EXECUTIONTYPE = eINSTANCE.getWatcherDefinition_Executiontype();
 
 		/**
-		 * The meta object literal for the '<em><b>Interchanges</b></em>' containment reference list feature.
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileMaskImpl <em>Watcher With File Mask</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.WatcherWithFileMaskImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWatcherWithFileMask()
 		 * @generated
 		 */
-		EReference SIGNAL_HANDLER__INTERCHANGES = eINSTANCE.getSignalHandler_Interchanges();
-
-		/**
-		 * The meta object literal for the '<em><b>Triggerpolicy</b></em>' containment reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference SIGNAL_HANDLER__TRIGGERPOLICY = eINSTANCE.getSignalHandler_Triggerpolicy();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl <em>Trigger Policy</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerPolicy()
-		 * @generated
-		 */
-		EClass TRIGGER_POLICY = eINSTANCE.getTriggerPolicy();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl <em>Trigger File</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerFile()
-		 * @generated
-		 */
-		EClass TRIGGER_FILE = eINSTANCE.getTriggerFile();
+		EClass WATCHER_WITH_FILE_MASK = eINSTANCE.getWatcherWithFileMask();
 
 		/**
 		 * The meta object literal for the '<em><b>Filemask</b></em>' attribute feature.
@@ -1693,7 +1718,51 @@
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute TRIGGER_FILE__FILEMASK = eINSTANCE.getTriggerFile_Filemask();
+		EAttribute WATCHER_WITH_FILE_MASK__FILEMASK = eINSTANCE.getWatcherWithFileMask_Filemask();
+
+		/**
+		 * The meta object literal for the '<em><b>Interchange</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference WATCHER_WITH_FILE_MASK__INTERCHANGE = eINSTANCE.getWatcherWithFileMask_Interchange();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileNameImpl <em>Watcher With File Name</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.WatcherWithFileNameImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWatcherWithFileName()
+		 * @generated
+		 */
+		EClass WATCHER_WITH_FILE_NAME = eINSTANCE.getWatcherWithFileName();
+
+		/**
+		 * The meta object literal for the '<em><b>Filename</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute WATCHER_WITH_FILE_NAME__FILENAME = eINSTANCE.getWatcherWithFileName_Filename();
+
+		/**
+		 * The meta object literal for the '<em><b>Interchanges</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference WATCHER_WITH_FILE_NAME__INTERCHANGES = eINSTANCE.getWatcherWithFileName_Interchanges();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SchedulerTypeImpl <em>Scheduler Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.SchedulerTypeImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSchedulerType()
+		 * @generated
+		 */
+		EClass SCHEDULER_TYPE = eINSTANCE.getSchedulerType();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl <em>Signal Scheduler</em>}' class.
@@ -1706,22 +1775,36 @@
 		EClass SIGNAL_SCHEDULER = eINSTANCE.getSignalScheduler();
 
 		/**
-		 * The meta object literal for the '<em><b>Scheduler</b></em>' containment reference feature.
+		 * The meta object literal for the '<em><b>Interchangegroup</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference SIGNAL_SCHEDULER__SCHEDULER = eINSTANCE.getSignalScheduler_Scheduler();
+		EReference SIGNAL_SCHEDULER__INTERCHANGEGROUP = eINSTANCE.getSignalScheduler_Interchangegroup();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SchedulerImpl <em>Scheduler</em>}' class.
+		 * The meta object literal for the '<em><b>Executiontype</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.SchedulerImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getScheduler()
 		 * @generated
 		 */
-		EClass SCHEDULER = eINSTANCE.getScheduler();
+		EAttribute SIGNAL_SCHEDULER__EXECUTIONTYPE = eINSTANCE.getSignalScheduler_Executiontype();
+
+		/**
+		 * The meta object literal for the '<em><b>Schedulertype</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SIGNAL_SCHEDULER__SCHEDULERTYPE = eINSTANCE.getSignalScheduler_Schedulertype();
+
+		/**
+		 * The meta object literal for the '<em><b>Interchanges</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SIGNAL_SCHEDULER__INTERCHANGES = eINSTANCE.getSignalScheduler_Interchanges();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.CronSchedulerImpl <em>Cron Scheduler</em>}' class.
@@ -1890,12 +1973,12 @@
 		EReference SIGNAL_DATAINTERCHANGE__DATA_REF = eINSTANCE.getSignalDatainterchange_DataRef();
 
 		/**
-		 * The meta object literal for the '<em><b>File Name</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Baseinterchange</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute SIGNAL_DATAINTERCHANGE__FILE_NAME = eINSTANCE.getSignalDatainterchange_FileName();
+		EAttribute SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE = eINSTANCE.getSignalDatainterchange_Baseinterchange();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.SignalActionEnum <em>Signal Action Enum</em>}' enum.
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java
index dd15ff6..6600a0f 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -29,7 +29,7 @@
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#getDataAction <em>Data Action</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#getDataRef <em>Data Ref</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#getFileName <em>File Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#isBaseinterchange <em>Baseinterchange</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalDatainterchange()
@@ -93,29 +93,29 @@
 	void setDataRef(DataInterchange value);
 
 	/**
-	 * Returns the value of the '<em><b>File Name</b></em>' attribute.
+	 * Returns the value of the '<em><b>Baseinterchange</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>File Name</em>' attribute isn't clear,
+	 * If the meaning of the '<em>Baseinterchange</em>' attribute isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>File Name</em>' attribute.
-	 * @see #setFileName(String)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalDatainterchange_FileName()
+	 * @return the value of the '<em>Baseinterchange</em>' attribute.
+	 * @see #setBaseinterchange(boolean)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalDatainterchange_Baseinterchange()
 	 * @model unique="false"
 	 * @generated
 	 */
-	String getFileName();
+	boolean isBaseinterchange();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#getFileName <em>File Name</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalDatainterchange#isBaseinterchange <em>Baseinterchange</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>File Name</em>' attribute.
-	 * @see #getFileName()
+	 * @param value the new value of the '<em>Baseinterchange</em>' attribute.
+	 * @see #isBaseinterchange()
 	 * @generated
 	 */
-	void setFileName(String value);
+	void setBaseinterchange(boolean value);
 
 } // SignalDatainterchange
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalBase.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDefinition.java
similarity index 81%
rename from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalBase.java
rename to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDefinition.java
index bab48d8..92e35f7 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalBase.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDefinition.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -19,21 +19,21 @@
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Signal Base</b></em>'.
+ * A representation of the model object '<em><b>Signal Definition</b></em>'.
  * <!-- end-user-doc -->
  *
  * <p>
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalBase#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalDefinition#getName <em>Name</em>}</li>
  * </ul>
  *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalBase()
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalDefinition()
  * @model
  * @generated
  */
-public interface SignalBase extends SignalLazyResolver {
+public interface SignalDefinition extends SignalLazyResolver {
 	/**
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -44,14 +44,14 @@
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Name</em>' attribute.
 	 * @see #setName(String)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalBase_Name()
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalDefinition_Name()
 	 * @model unique="false"
 	 * @generated
 	 */
 	String getName();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalBase#getName <em>Name</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalDefinition#getName <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param value the new value of the '<em>Name</em>' attribute.
@@ -60,4 +60,4 @@
 	 */
 	void setName(String value);
 
-} // SignalBase
+} // SignalDefinition
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java
index 96d3408..39552c1 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandler.java
deleted file mode 100644
index 43125b9..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandler.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
- *  which accompanies this distribution, and is available at
- *  https://www.eclipse.org/legal/epl-2.0/
- *
- *  SPDX-License-Identifier: EPL-2.0
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal;
-
-import org.eclipse.emf.common.util.EList;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Signal Handler</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getExecutiontype <em>Executiontype</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getInterchanges <em>Interchanges</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy <em>Triggerpolicy</em>}</li>
- * </ul>
- *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler()
- * @model
- * @generated
- */
-public interface SignalHandler extends SignalLazyResolver {
-	/**
-	 * Returns the value of the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Name</em>' attribute.
-	 * @see #setName(String)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Name()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getName();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getName <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Name</em>' attribute.
-	 * @see #getName()
-	 * @generated
-	 */
-	void setName(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Executiontype</b></em>' attribute.
-	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Executiontype</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Executiontype</em>' attribute.
-	 * @see org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
-	 * @see #setExecutiontype(SignalExecutionTypeEnum)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Executiontype()
-	 * @model unique="false"
-	 * @generated
-	 */
-	SignalExecutionTypeEnum getExecutiontype();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getExecutiontype <em>Executiontype</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Executiontype</em>' attribute.
-	 * @see org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
-	 * @see #getExecutiontype()
-	 * @generated
-	 */
-	void setExecutiontype(SignalExecutionTypeEnum value);
-
-	/**
-	 * Returns the value of the '<em><b>Interchanges</b></em>' containment reference list.
-	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalDatainterchange}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Interchanges</em>' containment reference list isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Interchanges</em>' containment reference list.
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Interchanges()
-	 * @model containment="true"
-	 * @generated
-	 */
-	EList<SignalDatainterchange> getInterchanges();
-
-	/**
-	 * Returns the value of the '<em><b>Triggerpolicy</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Triggerpolicy</em>' containment reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Triggerpolicy</em>' containment reference.
-	 * @see #setTriggerpolicy(TriggerPolicy)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Triggerpolicy()
-	 * @model containment="true"
-	 * @generated
-	 */
-	TriggerPolicy getTriggerpolicy();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy <em>Triggerpolicy</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Triggerpolicy</em>' containment reference.
-	 * @see #getTriggerpolicy()
-	 * @generated
-	 */
-	void setTriggerpolicy(TriggerPolicy value);
-
-} // SignalHandler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java
index bef6da0..14c91ea 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java
index b4c910a..587174c 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java
index f5579b3..2605866 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -29,7 +29,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalPackage#getWatchers <em>Watchers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalPackage#getSignals <em>Signals</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalPackage()
@@ -38,19 +38,19 @@
  */
 public interface SignalPackage extends LPackage {
 	/**
-	 * Returns the value of the '<em><b>Watchers</b></em>' containment reference list.
-	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalWatcher}.
+	 * Returns the value of the '<em><b>Signals</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalDefinition}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Watchers</em>' containment reference list isn't clear,
+	 * If the meaning of the '<em>Signals</em>' containment reference list isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Watchers</em>' containment reference list.
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalPackage_Watchers()
+	 * @return the value of the '<em>Signals</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalPackage_Signals()
 	 * @model containment="true"
 	 * @generated
 	 */
-	EList<SignalWatcher> getWatchers();
+	EList<SignalDefinition> getSignals();
 
 } // SignalPackage
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java
index 3da5966..602b649 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalScheduler.java
index 3286cd8..9036bf9 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalScheduler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalScheduler.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -16,6 +16,9 @@
  */
 package org.eclipse.osbp.xtext.signal;
 
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
 
 /**
  * <!-- begin-user-doc -->
@@ -26,38 +29,112 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler <em>Scheduler</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getInterchangegroup <em>Interchangegroup</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getExecutiontype <em>Executiontype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getSchedulertype <em>Schedulertype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getInterchanges <em>Interchanges</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler()
  * @model
  * @generated
  */
-public interface SignalScheduler extends TriggerPolicy {
+public interface SignalScheduler extends SignalDefinition {
 	/**
-	 * Returns the value of the '<em><b>Scheduler</b></em>' containment reference.
+	 * Returns the value of the '<em><b>Interchangegroup</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Scheduler</em>' containment reference isn't clear,
+	 * If the meaning of the '<em>Interchangegroup</em>' reference isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Scheduler</em>' containment reference.
-	 * @see #setScheduler(Scheduler)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler_Scheduler()
+	 * @return the value of the '<em>Interchangegroup</em>' reference.
+	 * @see #setInterchangegroup(DataInterchangeGroup)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler_Interchangegroup()
+	 * @model
+	 * @generated
+	 */
+	DataInterchangeGroup getInterchangegroup();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getInterchangegroup <em>Interchangegroup</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Interchangegroup</em>' reference.
+	 * @see #getInterchangegroup()
+	 * @generated
+	 */
+	void setInterchangegroup(DataInterchangeGroup value);
+
+	/**
+	 * Returns the value of the '<em><b>Executiontype</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Executiontype</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Executiontype</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
+	 * @see #setExecutiontype(SignalExecutionTypeEnum)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler_Executiontype()
+	 * @model unique="false"
+	 * @generated
+	 */
+	SignalExecutionTypeEnum getExecutiontype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getExecutiontype <em>Executiontype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Executiontype</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
+	 * @see #getExecutiontype()
+	 * @generated
+	 */
+	void setExecutiontype(SignalExecutionTypeEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Schedulertype</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Schedulertype</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Schedulertype</em>' containment reference.
+	 * @see #setSchedulertype(SchedulerType)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler_Schedulertype()
 	 * @model containment="true"
 	 * @generated
 	 */
-	Scheduler getScheduler();
+	SchedulerType getSchedulertype();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler <em>Scheduler</em>}' containment reference.
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getSchedulertype <em>Schedulertype</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Scheduler</em>' containment reference.
-	 * @see #getScheduler()
+	 * @param value the new value of the '<em>Schedulertype</em>' containment reference.
+	 * @see #getSchedulertype()
 	 * @generated
 	 */
-	void setScheduler(Scheduler value);
+	void setSchedulertype(SchedulerType value);
+
+	/**
+	 * Returns the value of the '<em><b>Interchanges</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalDatainterchange}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Interchanges</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Interchanges</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler_Interchanges()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<SignalDatainterchange> getInterchanges();
 
 } // SignalScheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java
index be7628f..a17c1a2 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -16,7 +16,6 @@
  */
 package org.eclipse.osbp.xtext.signal;
 
-import org.eclipse.emf.common.util.EList;
 
 /**
  * <!-- begin-user-doc -->
@@ -27,82 +26,38 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getDirectory <em>Directory</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getHandlers <em>Handlers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getDefinition <em>Definition</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalWatcher()
  * @model
  * @generated
  */
-public interface SignalWatcher extends SignalLazyResolver {
+public interface SignalWatcher extends SignalDefinition {
 	/**
-	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * Returns the value of the '<em><b>Definition</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * If the meaning of the '<em>Definition</em>' containment reference isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Name</em>' attribute.
-	 * @see #setName(String)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalWatcher_Name()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getName();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getName <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Name</em>' attribute.
-	 * @see #getName()
-	 * @generated
-	 */
-	void setName(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Directory</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Directory</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Directory</em>' attribute.
-	 * @see #setDirectory(String)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalWatcher_Directory()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getDirectory();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getDirectory <em>Directory</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Directory</em>' attribute.
-	 * @see #getDirectory()
-	 * @generated
-	 */
-	void setDirectory(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Handlers</b></em>' containment reference list.
-	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalHandler}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Handlers</em>' containment reference list isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Handlers</em>' containment reference list.
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalWatcher_Handlers()
+	 * @return the value of the '<em>Definition</em>' containment reference.
+	 * @see #setDefinition(WatcherDefinition)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalWatcher_Definition()
 	 * @model containment="true"
 	 * @generated
 	 */
-	EList<SignalHandler> getHandlers();
+	WatcherDefinition getDefinition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getDefinition <em>Definition</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Definition</em>' containment reference.
+	 * @see #getDefinition()
+	 * @generated
+	 */
+	void setDefinition(WatcherDefinition value);
 
 } // SignalWatcher
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerFile.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerFile.java
deleted file mode 100644
index d329229..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerFile.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
- *  which accompanies this distribution, and is available at
- *  https://www.eclipse.org/legal/epl-2.0/
- *
- *  SPDX-License-Identifier: EPL-2.0
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Trigger File</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask <em>Filemask</em>}</li>
- * </ul>
- *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getTriggerFile()
- * @model
- * @generated
- */
-public interface TriggerFile extends TriggerPolicy {
-	/**
-	 * Returns the value of the '<em><b>Filemask</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Filemask</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Filemask</em>' attribute.
-	 * @see #setFilemask(String)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getTriggerFile_Filemask()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getFilemask();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask <em>Filemask</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Filemask</em>' attribute.
-	 * @see #getFilemask()
-	 * @generated
-	 */
-	void setFilemask(String value);
-
-} // TriggerFile
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerPolicy.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerPolicy.java
deleted file mode 100644
index 6a1ddae..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerPolicy.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
- *  which accompanies this distribution, and is available at
- *  https://www.eclipse.org/legal/epl-2.0/
- *
- *  SPDX-License-Identifier: EPL-2.0
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Trigger Policy</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getTriggerPolicy()
- * @model
- * @generated
- */
-public interface TriggerPolicy extends SignalLazyResolver {
-} // TriggerPolicy
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherDefinition.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherDefinition.java
new file mode 100644
index 0000000..abb6ae3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherDefinition.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Watcher Definition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WatcherDefinition#getInterchangegroup <em>Interchangegroup</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WatcherDefinition#getExecutiontype <em>Executiontype</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherDefinition()
+ * @model
+ * @generated
+ */
+public interface WatcherDefinition extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Interchangegroup</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Interchangegroup</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Interchangegroup</em>' reference.
+	 * @see #setInterchangegroup(DataInterchangeGroup)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherDefinition_Interchangegroup()
+	 * @model
+	 * @generated
+	 */
+	DataInterchangeGroup getInterchangegroup();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WatcherDefinition#getInterchangegroup <em>Interchangegroup</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Interchangegroup</em>' reference.
+	 * @see #getInterchangegroup()
+	 * @generated
+	 */
+	void setInterchangegroup(DataInterchangeGroup value);
+
+	/**
+	 * Returns the value of the '<em><b>Executiontype</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Executiontype</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Executiontype</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
+	 * @see #setExecutiontype(SignalExecutionTypeEnum)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherDefinition_Executiontype()
+	 * @model unique="false"
+	 * @generated
+	 */
+	SignalExecutionTypeEnum getExecutiontype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WatcherDefinition#getExecutiontype <em>Executiontype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Executiontype</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
+	 * @see #getExecutiontype()
+	 * @generated
+	 */
+	void setExecutiontype(SignalExecutionTypeEnum value);
+
+} // WatcherDefinition
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherWithFileMask.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherWithFileMask.java
new file mode 100644
index 0000000..7ad1b6b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherWithFileMask.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Watcher With File Mask</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getFilemask <em>Filemask</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getInterchange <em>Interchange</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherWithFileMask()
+ * @model
+ * @generated
+ */
+public interface WatcherWithFileMask extends WatcherDefinition {
+	/**
+	 * Returns the value of the '<em><b>Filemask</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filemask</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filemask</em>' attribute.
+	 * @see #setFilemask(String)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherWithFileMask_Filemask()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getFilemask();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getFilemask <em>Filemask</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filemask</em>' attribute.
+	 * @see #getFilemask()
+	 * @generated
+	 */
+	void setFilemask(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Interchange</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Interchange</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Interchange</em>' containment reference.
+	 * @see #setInterchange(SignalDatainterchange)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherWithFileMask_Interchange()
+	 * @model containment="true"
+	 * @generated
+	 */
+	SignalDatainterchange getInterchange();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask#getInterchange <em>Interchange</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Interchange</em>' containment reference.
+	 * @see #getInterchange()
+	 * @generated
+	 */
+	void setInterchange(SignalDatainterchange value);
+
+} // WatcherWithFileMask
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherWithFileName.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherWithFileName.java
new file mode 100644
index 0000000..ab78b15
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WatcherWithFileName.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Watcher With File Name</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WatcherWithFileName#getFilename <em>Filename</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WatcherWithFileName#getInterchanges <em>Interchanges</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherWithFileName()
+ * @model
+ * @generated
+ */
+public interface WatcherWithFileName extends WatcherDefinition {
+	/**
+	 * Returns the value of the '<em><b>Filename</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filename</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filename</em>' attribute.
+	 * @see #setFilename(String)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherWithFileName_Filename()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getFilename();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileName#getFilename <em>Filename</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filename</em>' attribute.
+	 * @see #getFilename()
+	 * @generated
+	 */
+	void setFilename(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Interchanges</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalDatainterchange}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Interchanges</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Interchanges</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWatcherWithFileName_Interchanges()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<SignalDatainterchange> getInterchanges();
+
+} // WatcherWithFileName
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WeeklyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WeeklyScheduler.java
index dcc3003..47f44d3 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WeeklyScheduler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WeeklyScheduler.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -35,7 +35,7 @@
  * @model
  * @generated
  */
-public interface WeeklyScheduler extends Scheduler {
+public interface WeeklyScheduler extends SchedulerType {
 	/**
 	 * Returns the value of the '<em><b>Dayofweek</b></em>' attribute.
 	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.DayOfWeekEnum}.
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/CronSchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/CronSchedulerImpl.java
index 6363a30..0ad21bf 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/CronSchedulerImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/CronSchedulerImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -38,7 +38,7 @@
  *
  * @generated
  */
-public class CronSchedulerImpl extends SchedulerImpl implements CronScheduler {
+public class CronSchedulerImpl extends SchedulerTypeImpl implements CronScheduler {
 	/**
 	 * The default value of the '{@link #getExpression() <em>Expression</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DailySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DailySchedulerImpl.java
index 6862609..8372ad8 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DailySchedulerImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DailySchedulerImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -39,7 +39,7 @@
  *
  * @generated
  */
-public class DailySchedulerImpl extends SchedulerImpl implements DailyScheduler {
+public class DailySchedulerImpl extends SchedulerTypeImpl implements DailyScheduler {
 	/**
 	 * The default value of the '{@link #getHour() <em>Hour</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/HourlySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/HourlySchedulerImpl.java
index c0c28d8..3d213eb 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/HourlySchedulerImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/HourlySchedulerImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -38,7 +38,7 @@
  *
  * @generated
  */
-public class HourlySchedulerImpl extends SchedulerImpl implements HourlyScheduler {
+public class HourlySchedulerImpl extends SchedulerTypeImpl implements HourlyScheduler {
 	/**
 	 * The default value of the '{@link #getMinute() <em>Minute</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/MonthlySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/MonthlySchedulerImpl.java
index 89f117a..5f835ab 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/MonthlySchedulerImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/MonthlySchedulerImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -40,7 +40,7 @@
  *
  * @generated
  */
-public class MonthlySchedulerImpl extends SchedulerImpl implements MonthlyScheduler {
+public class MonthlySchedulerImpl extends SchedulerTypeImpl implements MonthlyScheduler {
 	/**
 	 * The default value of the '{@link #getDayofmonth() <em>Dayofmonth</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerImpl.java
deleted file mode 100644
index 07f16db..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
- *  which accompanies this distribution, and is available at
- *  https://www.eclipse.org/legal/epl-2.0/
- *
- *  SPDX-License-Identifier: EPL-2.0
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal.impl;
-
-import org.eclipse.emf.ecore.EClass;
-
-import org.eclipse.osbp.xtext.signal.Scheduler;
-import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Scheduler</b></em>'.
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public class SchedulerImpl extends SignalLazyResolverImpl implements Scheduler {
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected SchedulerImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.SCHEDULER;
-	}
-
-} //SchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerPolicyImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerTypeImpl.java
similarity index 76%
rename from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerPolicyImpl.java
rename to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerTypeImpl.java
index 0364e57..e5fb205 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerPolicyImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerTypeImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -18,23 +18,23 @@
 
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.osbp.xtext.signal.SchedulerType;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
-import org.eclipse.osbp.xtext.signal.TriggerPolicy;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Trigger Policy</b></em>'.
+ * An implementation of the model object '<em><b>Scheduler Type</b></em>'.
  * <!-- end-user-doc -->
  *
  * @generated
  */
-public class TriggerPolicyImpl extends SignalLazyResolverImpl implements TriggerPolicy {
+public class SchedulerTypeImpl extends SignalLazyResolverImpl implements SchedulerType {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected TriggerPolicyImpl() {
+	protected SchedulerTypeImpl() {
 		super();
 	}
 
@@ -45,7 +45,7 @@
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.TRIGGER_POLICY;
+		return SignalDSLPackage.Literals.SCHEDULER_TYPE;
 	}
 
-} //TriggerPolicyImpl
+} //SchedulerTypeImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java
index 1dd9f7a..06443a1 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -75,13 +75,13 @@
 			case SignalDSLPackage.SIGNAL_MODEL: return createSignalModel();
 			case SignalDSLPackage.SIGNAL_LAZY_RESOLVER: return createSignalLazyResolver();
 			case SignalDSLPackage.SIGNAL_PACKAGE: return createSignalPackage();
-			case SignalDSLPackage.SIGNAL_BASE: return createSignalBase();
+			case SignalDSLPackage.SIGNAL_DEFINITION: return createSignalDefinition();
 			case SignalDSLPackage.SIGNAL_WATCHER: return createSignalWatcher();
-			case SignalDSLPackage.SIGNAL_HANDLER: return createSignalHandler();
-			case SignalDSLPackage.TRIGGER_POLICY: return createTriggerPolicy();
-			case SignalDSLPackage.TRIGGER_FILE: return createTriggerFile();
+			case SignalDSLPackage.WATCHER_DEFINITION: return createWatcherDefinition();
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK: return createWatcherWithFileMask();
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME: return createWatcherWithFileName();
+			case SignalDSLPackage.SCHEDULER_TYPE: return createSchedulerType();
 			case SignalDSLPackage.SIGNAL_SCHEDULER: return createSignalScheduler();
-			case SignalDSLPackage.SCHEDULER: return createScheduler();
 			case SignalDSLPackage.CRON_SCHEDULER: return createCronScheduler();
 			case SignalDSLPackage.HOURLY_SCHEDULER: return createHourlyScheduler();
 			case SignalDSLPackage.DAILY_SCHEDULER: return createDailyScheduler();
@@ -170,9 +170,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public SignalBase createSignalBase() {
-		SignalBaseImpl signalBase = new SignalBaseImpl();
-		return signalBase;
+	public SignalDefinition createSignalDefinition() {
+		SignalDefinitionImpl signalDefinition = new SignalDefinitionImpl();
+		return signalDefinition;
 	}
 
 	/**
@@ -190,9 +190,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public SignalHandler createSignalHandler() {
-		SignalHandlerImpl signalHandler = new SignalHandlerImpl();
-		return signalHandler;
+	public WatcherDefinition createWatcherDefinition() {
+		WatcherDefinitionImpl watcherDefinition = new WatcherDefinitionImpl();
+		return watcherDefinition;
 	}
 
 	/**
@@ -200,9 +200,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public TriggerPolicy createTriggerPolicy() {
-		TriggerPolicyImpl triggerPolicy = new TriggerPolicyImpl();
-		return triggerPolicy;
+	public WatcherWithFileMask createWatcherWithFileMask() {
+		WatcherWithFileMaskImpl watcherWithFileMask = new WatcherWithFileMaskImpl();
+		return watcherWithFileMask;
 	}
 
 	/**
@@ -210,9 +210,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public TriggerFile createTriggerFile() {
-		TriggerFileImpl triggerFile = new TriggerFileImpl();
-		return triggerFile;
+	public WatcherWithFileName createWatcherWithFileName() {
+		WatcherWithFileNameImpl watcherWithFileName = new WatcherWithFileNameImpl();
+		return watcherWithFileName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SchedulerType createSchedulerType() {
+		SchedulerTypeImpl schedulerType = new SchedulerTypeImpl();
+		return schedulerType;
 	}
 
 	/**
@@ -230,16 +240,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Scheduler createScheduler() {
-		SchedulerImpl scheduler = new SchedulerImpl();
-		return scheduler;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public CronScheduler createCronScheduler() {
 		CronSchedulerImpl cronScheduler = new CronSchedulerImpl();
 		return cronScheduler;
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java
index f06f899..f9b90b4 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -37,22 +37,22 @@
 import org.eclipse.osbp.xtext.signal.DayOfWeekEnum;
 import org.eclipse.osbp.xtext.signal.HourlyScheduler;
 import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
-import org.eclipse.osbp.xtext.signal.Scheduler;
+import org.eclipse.osbp.xtext.signal.SchedulerType;
 import org.eclipse.osbp.xtext.signal.SignalActionEnum;
-import org.eclipse.osbp.xtext.signal.SignalBase;
 import org.eclipse.osbp.xtext.signal.SignalDSLFactory;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
+import org.eclipse.osbp.xtext.signal.SignalDefinition;
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
-import org.eclipse.osbp.xtext.signal.SignalHandler;
 import org.eclipse.osbp.xtext.signal.SignalLazyResolver;
 import org.eclipse.osbp.xtext.signal.SignalModel;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
 import org.eclipse.osbp.xtext.signal.SignalProcessor;
 import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
-import org.eclipse.osbp.xtext.signal.TriggerFile;
-import org.eclipse.osbp.xtext.signal.TriggerPolicy;
+import org.eclipse.osbp.xtext.signal.WatcherDefinition;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
 import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
 
 import org.eclipse.xtext.xtype.XtypePackage;
@@ -90,7 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass signalBaseEClass = null;
+	private EClass signalDefinitionEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -104,21 +104,28 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass signalHandlerEClass = null;
+	private EClass watcherDefinitionEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass triggerPolicyEClass = null;
+	private EClass watcherWithFileMaskEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass triggerFileEClass = null;
+	private EClass watcherWithFileNameEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass schedulerTypeEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -132,13 +139,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass schedulerEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	private EClass cronSchedulerEClass = null;
 
 	/**
@@ -334,7 +334,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getSignalPackage_Watchers() {
+	public EReference getSignalPackage_Signals() {
 		return (EReference)signalPackageEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -343,8 +343,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getSignalBase() {
-		return signalBaseEClass;
+	public EClass getSignalDefinition() {
+		return signalDefinitionEClass;
 	}
 
 	/**
@@ -352,8 +352,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalBase_Name() {
-		return (EAttribute)signalBaseEClass.getEStructuralFeatures().get(0);
+	public EAttribute getSignalDefinition_Name() {
+		return (EAttribute)signalDefinitionEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -370,8 +370,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalWatcher_Name() {
-		return (EAttribute)signalWatcherEClass.getEStructuralFeatures().get(0);
+	public EReference getSignalWatcher_Definition() {
+		return (EReference)signalWatcherEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -379,8 +379,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalWatcher_Directory() {
-		return (EAttribute)signalWatcherEClass.getEStructuralFeatures().get(1);
+	public EClass getWatcherDefinition() {
+		return watcherDefinitionEClass;
 	}
 
 	/**
@@ -388,8 +388,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getSignalWatcher_Handlers() {
-		return (EReference)signalWatcherEClass.getEStructuralFeatures().get(2);
+	public EReference getWatcherDefinition_Interchangegroup() {
+		return (EReference)watcherDefinitionEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -397,8 +397,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getSignalHandler() {
-		return signalHandlerEClass;
+	public EAttribute getWatcherDefinition_Executiontype() {
+		return (EAttribute)watcherDefinitionEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -406,8 +406,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalHandler_Name() {
-		return (EAttribute)signalHandlerEClass.getEStructuralFeatures().get(0);
+	public EClass getWatcherWithFileMask() {
+		return watcherWithFileMaskEClass;
 	}
 
 	/**
@@ -415,8 +415,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalHandler_Executiontype() {
-		return (EAttribute)signalHandlerEClass.getEStructuralFeatures().get(1);
+	public EAttribute getWatcherWithFileMask_Filemask() {
+		return (EAttribute)watcherWithFileMaskEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -424,8 +424,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getSignalHandler_Interchanges() {
-		return (EReference)signalHandlerEClass.getEStructuralFeatures().get(2);
+	public EReference getWatcherWithFileMask_Interchange() {
+		return (EReference)watcherWithFileMaskEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -433,8 +433,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getSignalHandler_Triggerpolicy() {
-		return (EReference)signalHandlerEClass.getEStructuralFeatures().get(3);
+	public EClass getWatcherWithFileName() {
+		return watcherWithFileNameEClass;
 	}
 
 	/**
@@ -442,8 +442,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getTriggerPolicy() {
-		return triggerPolicyEClass;
+	public EAttribute getWatcherWithFileName_Filename() {
+		return (EAttribute)watcherWithFileNameEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -451,8 +451,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getTriggerFile() {
-		return triggerFileEClass;
+	public EReference getWatcherWithFileName_Interchanges() {
+		return (EReference)watcherWithFileNameEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -460,8 +460,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getTriggerFile_Filemask() {
-		return (EAttribute)triggerFileEClass.getEStructuralFeatures().get(0);
+	public EClass getSchedulerType() {
+		return schedulerTypeEClass;
 	}
 
 	/**
@@ -478,7 +478,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getSignalScheduler_Scheduler() {
+	public EReference getSignalScheduler_Interchangegroup() {
 		return (EReference)signalSchedulerEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -487,8 +487,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getScheduler() {
-		return schedulerEClass;
+	public EAttribute getSignalScheduler_Executiontype() {
+		return (EAttribute)signalSchedulerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSignalScheduler_Schedulertype() {
+		return (EReference)signalSchedulerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSignalScheduler_Interchanges() {
+		return (EReference)signalSchedulerEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -667,7 +685,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalDatainterchange_FileName() {
+	public EAttribute getSignalDatainterchange_Baseinterchange() {
 		return (EAttribute)signalDatainterchangeEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -743,31 +761,33 @@
 		createEOperation(signalLazyResolverEClass, SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT);
 
 		signalPackageEClass = createEClass(SIGNAL_PACKAGE);
-		createEReference(signalPackageEClass, SIGNAL_PACKAGE__WATCHERS);
+		createEReference(signalPackageEClass, SIGNAL_PACKAGE__SIGNALS);
 
-		signalBaseEClass = createEClass(SIGNAL_BASE);
-		createEAttribute(signalBaseEClass, SIGNAL_BASE__NAME);
+		signalDefinitionEClass = createEClass(SIGNAL_DEFINITION);
+		createEAttribute(signalDefinitionEClass, SIGNAL_DEFINITION__NAME);
 
 		signalWatcherEClass = createEClass(SIGNAL_WATCHER);
-		createEAttribute(signalWatcherEClass, SIGNAL_WATCHER__NAME);
-		createEAttribute(signalWatcherEClass, SIGNAL_WATCHER__DIRECTORY);
-		createEReference(signalWatcherEClass, SIGNAL_WATCHER__HANDLERS);
+		createEReference(signalWatcherEClass, SIGNAL_WATCHER__DEFINITION);
 
-		signalHandlerEClass = createEClass(SIGNAL_HANDLER);
-		createEAttribute(signalHandlerEClass, SIGNAL_HANDLER__NAME);
-		createEAttribute(signalHandlerEClass, SIGNAL_HANDLER__EXECUTIONTYPE);
-		createEReference(signalHandlerEClass, SIGNAL_HANDLER__INTERCHANGES);
-		createEReference(signalHandlerEClass, SIGNAL_HANDLER__TRIGGERPOLICY);
+		watcherDefinitionEClass = createEClass(WATCHER_DEFINITION);
+		createEReference(watcherDefinitionEClass, WATCHER_DEFINITION__INTERCHANGEGROUP);
+		createEAttribute(watcherDefinitionEClass, WATCHER_DEFINITION__EXECUTIONTYPE);
 
-		triggerPolicyEClass = createEClass(TRIGGER_POLICY);
+		watcherWithFileMaskEClass = createEClass(WATCHER_WITH_FILE_MASK);
+		createEAttribute(watcherWithFileMaskEClass, WATCHER_WITH_FILE_MASK__FILEMASK);
+		createEReference(watcherWithFileMaskEClass, WATCHER_WITH_FILE_MASK__INTERCHANGE);
 
-		triggerFileEClass = createEClass(TRIGGER_FILE);
-		createEAttribute(triggerFileEClass, TRIGGER_FILE__FILEMASK);
+		watcherWithFileNameEClass = createEClass(WATCHER_WITH_FILE_NAME);
+		createEAttribute(watcherWithFileNameEClass, WATCHER_WITH_FILE_NAME__FILENAME);
+		createEReference(watcherWithFileNameEClass, WATCHER_WITH_FILE_NAME__INTERCHANGES);
+
+		schedulerTypeEClass = createEClass(SCHEDULER_TYPE);
 
 		signalSchedulerEClass = createEClass(SIGNAL_SCHEDULER);
-		createEReference(signalSchedulerEClass, SIGNAL_SCHEDULER__SCHEDULER);
-
-		schedulerEClass = createEClass(SCHEDULER);
+		createEReference(signalSchedulerEClass, SIGNAL_SCHEDULER__INTERCHANGEGROUP);
+		createEAttribute(signalSchedulerEClass, SIGNAL_SCHEDULER__EXECUTIONTYPE);
+		createEReference(signalSchedulerEClass, SIGNAL_SCHEDULER__SCHEDULERTYPE);
+		createEReference(signalSchedulerEClass, SIGNAL_SCHEDULER__INTERCHANGES);
 
 		cronSchedulerEClass = createEClass(CRON_SCHEDULER);
 		createEAttribute(cronSchedulerEClass, CRON_SCHEDULER__EXPRESSION);
@@ -794,7 +814,7 @@
 		signalDatainterchangeEClass = createEClass(SIGNAL_DATAINTERCHANGE);
 		createEAttribute(signalDatainterchangeEClass, SIGNAL_DATAINTERCHANGE__DATA_ACTION);
 		createEReference(signalDatainterchangeEClass, SIGNAL_DATAINTERCHANGE__DATA_REF);
-		createEAttribute(signalDatainterchangeEClass, SIGNAL_DATAINTERCHANGE__FILE_NAME);
+		createEAttribute(signalDatainterchangeEClass, SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE);
 
 		// Create enums
 		signalActionEnumEEnum = createEEnum(SIGNAL_ACTION_ENUM);
@@ -840,18 +860,17 @@
 
 		// Add supertypes to classes
 		signalPackageEClass.getESuperTypes().add(theOSBPTypesPackage.getLPackage());
-		signalBaseEClass.getESuperTypes().add(this.getSignalLazyResolver());
-		signalWatcherEClass.getESuperTypes().add(this.getSignalLazyResolver());
-		signalHandlerEClass.getESuperTypes().add(this.getSignalLazyResolver());
-		triggerPolicyEClass.getESuperTypes().add(this.getSignalLazyResolver());
-		triggerFileEClass.getESuperTypes().add(this.getTriggerPolicy());
-		signalSchedulerEClass.getESuperTypes().add(this.getTriggerPolicy());
-		schedulerEClass.getESuperTypes().add(this.getSignalLazyResolver());
-		cronSchedulerEClass.getESuperTypes().add(this.getScheduler());
-		hourlySchedulerEClass.getESuperTypes().add(this.getScheduler());
-		dailySchedulerEClass.getESuperTypes().add(this.getScheduler());
-		weeklySchedulerEClass.getESuperTypes().add(this.getScheduler());
-		monthlySchedulerEClass.getESuperTypes().add(this.getScheduler());
+		signalDefinitionEClass.getESuperTypes().add(this.getSignalLazyResolver());
+		signalWatcherEClass.getESuperTypes().add(this.getSignalDefinition());
+		watcherWithFileMaskEClass.getESuperTypes().add(this.getWatcherDefinition());
+		watcherWithFileNameEClass.getESuperTypes().add(this.getWatcherDefinition());
+		schedulerTypeEClass.getESuperTypes().add(this.getSignalLazyResolver());
+		signalSchedulerEClass.getESuperTypes().add(this.getSignalDefinition());
+		cronSchedulerEClass.getESuperTypes().add(this.getSchedulerType());
+		hourlySchedulerEClass.getESuperTypes().add(this.getSchedulerType());
+		dailySchedulerEClass.getESuperTypes().add(this.getSchedulerType());
+		weeklySchedulerEClass.getESuperTypes().add(this.getSchedulerType());
+		monthlySchedulerEClass.getESuperTypes().add(this.getSchedulerType());
 		signalProcessorEClass.getESuperTypes().add(this.getSignalLazyResolver());
 		signalDatainterchangeEClass.getESuperTypes().add(this.getSignalProcessor());
 
@@ -866,31 +885,33 @@
 		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
 
 		initEClass(signalPackageEClass, SignalPackage.class, "SignalPackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getSignalPackage_Watchers(), this.getSignalWatcher(), null, "watchers", null, 0, -1, SignalPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSignalPackage_Signals(), this.getSignalDefinition(), null, "signals", null, 0, -1, SignalPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(signalBaseEClass, SignalBase.class, "SignalBase", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getSignalBase_Name(), theEcorePackage.getEString(), "name", null, 0, 1, SignalBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(signalDefinitionEClass, SignalDefinition.class, "SignalDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getSignalDefinition_Name(), theEcorePackage.getEString(), "name", null, 0, 1, SignalDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(signalWatcherEClass, SignalWatcher.class, "SignalWatcher", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getSignalWatcher_Name(), theEcorePackage.getEString(), "name", null, 0, 1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getSignalWatcher_Directory(), theEcorePackage.getEString(), "directory", null, 0, 1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getSignalWatcher_Handlers(), this.getSignalHandler(), null, "handlers", null, 0, -1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSignalWatcher_Definition(), this.getWatcherDefinition(), null, "definition", null, 0, 1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(signalHandlerEClass, SignalHandler.class, "SignalHandler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getSignalHandler_Name(), theEcorePackage.getEString(), "name", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getSignalHandler_Executiontype(), this.getSignalExecutionTypeEnum(), "executiontype", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getSignalHandler_Interchanges(), this.getSignalDatainterchange(), null, "interchanges", null, 0, -1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getSignalHandler_Triggerpolicy(), this.getTriggerPolicy(), null, "triggerpolicy", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(watcherDefinitionEClass, WatcherDefinition.class, "WatcherDefinition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getWatcherDefinition_Interchangegroup(), theDataDSLPackage.getDataInterchangeGroup(), null, "interchangegroup", null, 0, 1, WatcherDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getWatcherDefinition_Executiontype(), this.getSignalExecutionTypeEnum(), "executiontype", null, 0, 1, WatcherDefinition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(triggerPolicyEClass, TriggerPolicy.class, "TriggerPolicy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEClass(watcherWithFileMaskEClass, WatcherWithFileMask.class, "WatcherWithFileMask", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getWatcherWithFileMask_Filemask(), theEcorePackage.getEString(), "filemask", null, 0, 1, WatcherWithFileMask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getWatcherWithFileMask_Interchange(), this.getSignalDatainterchange(), null, "interchange", null, 0, 1, WatcherWithFileMask.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(triggerFileEClass, TriggerFile.class, "TriggerFile", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getTriggerFile_Filemask(), theEcorePackage.getEString(), "filemask", null, 0, 1, TriggerFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(watcherWithFileNameEClass, WatcherWithFileName.class, "WatcherWithFileName", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getWatcherWithFileName_Filename(), theEcorePackage.getEString(), "filename", null, 0, 1, WatcherWithFileName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getWatcherWithFileName_Interchanges(), this.getSignalDatainterchange(), null, "interchanges", null, 0, -1, WatcherWithFileName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(schedulerTypeEClass, SchedulerType.class, "SchedulerType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(signalSchedulerEClass, SignalScheduler.class, "SignalScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getSignalScheduler_Scheduler(), this.getScheduler(), null, "scheduler", null, 0, 1, SignalScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
-		initEClass(schedulerEClass, Scheduler.class, "Scheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSignalScheduler_Interchangegroup(), theDataDSLPackage.getDataInterchangeGroup(), null, "interchangegroup", null, 0, 1, SignalScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSignalScheduler_Executiontype(), this.getSignalExecutionTypeEnum(), "executiontype", null, 0, 1, SignalScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSignalScheduler_Schedulertype(), this.getSchedulerType(), null, "schedulertype", null, 0, 1, SignalScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSignalScheduler_Interchanges(), this.getSignalDatainterchange(), null, "interchanges", null, 0, -1, SignalScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(cronSchedulerEClass, CronScheduler.class, "CronScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getCronScheduler_Expression(), theEcorePackage.getEString(), "expression", null, 0, 1, CronScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -917,7 +938,7 @@
 		initEClass(signalDatainterchangeEClass, SignalDatainterchange.class, "SignalDatainterchange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getSignalDatainterchange_DataAction(), this.getSignalActionEnum(), "dataAction", null, 0, 1, SignalDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getSignalDatainterchange_DataRef(), theDataDSLPackage.getDataInterchange(), null, "dataRef", null, 0, 1, SignalDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getSignalDatainterchange_FileName(), theEcorePackage.getEString(), "fileName", null, 0, 1, SignalDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getSignalDatainterchange_Baseinterchange(), theEcorePackage.getEBoolean(), "baseinterchange", null, 0, 1, SignalDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		// Initialize enums and add enum literals
 		initEEnum(signalActionEnumEEnum, SignalActionEnum.class, "SignalActionEnum");
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java
index 75b6371..e1414f5 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -39,7 +39,7 @@
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalDatainterchangeImpl#getDataAction <em>Data Action</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalDatainterchangeImpl#getDataRef <em>Data Ref</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalDatainterchangeImpl#getFileName <em>File Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalDatainterchangeImpl#isBaseinterchange <em>Baseinterchange</em>}</li>
  * </ul>
  *
  * @generated
@@ -76,24 +76,24 @@
 	protected DataInterchange dataRef;
 
 	/**
-	 * The default value of the '{@link #getFileName() <em>File Name</em>}' attribute.
+	 * The default value of the '{@link #isBaseinterchange() <em>Baseinterchange</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getFileName()
+	 * @see #isBaseinterchange()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String FILE_NAME_EDEFAULT = null;
+	protected static final boolean BASEINTERCHANGE_EDEFAULT = false;
 
 	/**
-	 * The cached value of the '{@link #getFileName() <em>File Name</em>}' attribute.
+	 * The cached value of the '{@link #isBaseinterchange() <em>Baseinterchange</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getFileName()
+	 * @see #isBaseinterchange()
 	 * @generated
 	 * @ordered
 	 */
-	protected String fileName = FILE_NAME_EDEFAULT;
+	protected boolean baseinterchange = BASEINTERCHANGE_EDEFAULT;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -178,8 +178,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public String getFileName() {
-		return fileName;
+	public boolean isBaseinterchange() {
+		return baseinterchange;
 	}
 
 	/**
@@ -187,11 +187,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setFileName(String newFileName) {
-		String oldFileName = fileName;
-		fileName = newFileName;
+	public void setBaseinterchange(boolean newBaseinterchange) {
+		boolean oldBaseinterchange = baseinterchange;
+		baseinterchange = newBaseinterchange;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_DATAINTERCHANGE__FILE_NAME, oldFileName, fileName));
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE, oldBaseinterchange, baseinterchange));
 	}
 
 	/**
@@ -207,8 +207,8 @@
 			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__DATA_REF:
 				if (resolve) return getDataRef();
 				return basicGetDataRef();
-			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__FILE_NAME:
-				return getFileName();
+			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE:
+				return isBaseinterchange();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -227,8 +227,8 @@
 			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__DATA_REF:
 				setDataRef((DataInterchange)newValue);
 				return;
-			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__FILE_NAME:
-				setFileName((String)newValue);
+			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE:
+				setBaseinterchange((Boolean)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -248,8 +248,8 @@
 			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__DATA_REF:
 				setDataRef((DataInterchange)null);
 				return;
-			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__FILE_NAME:
-				setFileName(FILE_NAME_EDEFAULT);
+			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE:
+				setBaseinterchange(BASEINTERCHANGE_EDEFAULT);
 				return;
 		}
 		super.eUnset(featureID);
@@ -267,8 +267,8 @@
 				return dataAction != DATA_ACTION_EDEFAULT;
 			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__DATA_REF:
 				return dataRef != null;
-			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__FILE_NAME:
-				return FILE_NAME_EDEFAULT == null ? fileName != null : !FILE_NAME_EDEFAULT.equals(fileName);
+			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE__BASEINTERCHANGE:
+				return baseinterchange != BASEINTERCHANGE_EDEFAULT;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -285,8 +285,8 @@
 		StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (dataAction: ");
 		result.append(dataAction);
-		result.append(", fileName: ");
-		result.append(fileName);
+		result.append(", baseinterchange: ");
+		result.append(baseinterchange);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalBaseImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDefinitionImpl.java
similarity index 82%
rename from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalBaseImpl.java
rename to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDefinitionImpl.java
index 934ace4..c632736 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalBaseImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDefinitionImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -22,23 +22,23 @@
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
-import org.eclipse.osbp.xtext.signal.SignalBase;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalDefinition;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Signal Base</b></em>'.
+ * An implementation of the model object '<em><b>Signal Definition</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalBaseImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalDefinitionImpl#getName <em>Name</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class SignalBaseImpl extends SignalLazyResolverImpl implements SignalBase {
+public class SignalDefinitionImpl extends SignalLazyResolverImpl implements SignalDefinition {
 	/**
 	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -64,7 +64,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected SignalBaseImpl() {
+	protected SignalDefinitionImpl() {
 		super();
 	}
 
@@ -75,7 +75,7 @@
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.SIGNAL_BASE;
+		return SignalDSLPackage.Literals.SIGNAL_DEFINITION;
 	}
 
 	/**
@@ -96,7 +96,7 @@
 		String oldName = name;
 		name = newName;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_BASE__NAME, oldName, name));
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_DEFINITION__NAME, oldName, name));
 	}
 
 	/**
@@ -107,7 +107,7 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_BASE__NAME:
+			case SignalDSLPackage.SIGNAL_DEFINITION__NAME:
 				return getName();
 		}
 		return super.eGet(featureID, resolve, coreType);
@@ -121,7 +121,7 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_BASE__NAME:
+			case SignalDSLPackage.SIGNAL_DEFINITION__NAME:
 				setName((String)newValue);
 				return;
 		}
@@ -136,7 +136,7 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_BASE__NAME:
+			case SignalDSLPackage.SIGNAL_DEFINITION__NAME:
 				setName(NAME_EDEFAULT);
 				return;
 		}
@@ -151,7 +151,7 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_BASE__NAME:
+			case SignalDSLPackage.SIGNAL_DEFINITION__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 		}
 		return super.eIsSet(featureID);
@@ -173,4 +173,4 @@
 		return result.toString();
 	}
 
-} //SignalBaseImpl
+} //SignalDefinitionImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalHandlerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalHandlerImpl.java
deleted file mode 100644
index 822017d..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalHandlerImpl.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
- *  which accompanies this distribution, and is available at
- *  https://www.eclipse.org/legal/epl-2.0/
- *
- *  SPDX-License-Identifier: EPL-2.0
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal.impl;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
-
-import org.eclipse.emf.common.util.EList;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
-import org.eclipse.emf.ecore.util.EObjectContainmentEList;
-import org.eclipse.emf.ecore.util.InternalEList;
-
-import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
-import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
-import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
-import org.eclipse.osbp.xtext.signal.SignalHandler;
-import org.eclipse.osbp.xtext.signal.TriggerPolicy;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Signal Handler</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getExecutiontype <em>Executiontype</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getInterchanges <em>Interchanges</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getTriggerpolicy <em>Triggerpolicy</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class SignalHandlerImpl extends SignalLazyResolverImpl implements SignalHandler {
-	/**
-	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String NAME_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected String name = NAME_EDEFAULT;
-
-	/**
-	 * The default value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getExecutiontype()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final SignalExecutionTypeEnum EXECUTIONTYPE_EDEFAULT = SignalExecutionTypeEnum.SEQ;
-
-	/**
-	 * The cached value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getExecutiontype()
-	 * @generated
-	 * @ordered
-	 */
-	protected SignalExecutionTypeEnum executiontype = EXECUTIONTYPE_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getInterchanges() <em>Interchanges</em>}' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getInterchanges()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<SignalDatainterchange> interchanges;
-
-	/**
-	 * The cached value of the '{@link #getTriggerpolicy() <em>Triggerpolicy</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getTriggerpolicy()
-	 * @generated
-	 * @ordered
-	 */
-	protected TriggerPolicy triggerpolicy;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected SignalHandlerImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.SIGNAL_HANDLER;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setName(String newName) {
-		String oldName = name;
-		name = newName;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__NAME, oldName, name));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SignalExecutionTypeEnum getExecutiontype() {
-		return executiontype;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setExecutiontype(SignalExecutionTypeEnum newExecutiontype) {
-		SignalExecutionTypeEnum oldExecutiontype = executiontype;
-		executiontype = newExecutiontype == null ? EXECUTIONTYPE_EDEFAULT : newExecutiontype;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE, oldExecutiontype, executiontype));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EList<SignalDatainterchange> getInterchanges() {
-		if (interchanges == null) {
-			interchanges = new EObjectContainmentEList<SignalDatainterchange>(SignalDatainterchange.class, this, SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES);
-		}
-		return interchanges;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public TriggerPolicy getTriggerpolicy() {
-		return triggerpolicy;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetTriggerpolicy(TriggerPolicy newTriggerpolicy, NotificationChain msgs) {
-		TriggerPolicy oldTriggerpolicy = triggerpolicy;
-		triggerpolicy = newTriggerpolicy;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, oldTriggerpolicy, newTriggerpolicy);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setTriggerpolicy(TriggerPolicy newTriggerpolicy) {
-		if (newTriggerpolicy != triggerpolicy) {
-			NotificationChain msgs = null;
-			if (triggerpolicy != null)
-				msgs = ((InternalEObject)triggerpolicy).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, null, msgs);
-			if (newTriggerpolicy != null)
-				msgs = ((InternalEObject)newTriggerpolicy).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, null, msgs);
-			msgs = basicSetTriggerpolicy(newTriggerpolicy, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, newTriggerpolicy, newTriggerpolicy));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
-				return ((InternalEList<?>)getInterchanges()).basicRemove(otherEnd, msgs);
-			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
-				return basicSetTriggerpolicy(null, msgs);
-		}
-		return super.eInverseRemove(otherEnd, featureID, msgs);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
-				return getName();
-			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
-				return getExecutiontype();
-			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
-				return getInterchanges();
-			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
-				return getTriggerpolicy();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@SuppressWarnings("unchecked")
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
-				setName((String)newValue);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
-				setExecutiontype((SignalExecutionTypeEnum)newValue);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
-				getInterchanges().clear();
-				getInterchanges().addAll((Collection<? extends SignalDatainterchange>)newValue);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
-				setTriggerpolicy((TriggerPolicy)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
-				setName(NAME_EDEFAULT);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
-				setExecutiontype(EXECUTIONTYPE_EDEFAULT);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
-				getInterchanges().clear();
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
-				setTriggerpolicy((TriggerPolicy)null);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
-				return executiontype != EXECUTIONTYPE_EDEFAULT;
-			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
-				return interchanges != null && !interchanges.isEmpty();
-			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
-				return triggerpolicy != null;
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy()) return super.toString();
-
-		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (name: ");
-		result.append(name);
-		result.append(", executiontype: ");
-		result.append(executiontype);
-		result.append(')');
-		return result.toString();
-	}
-
-} //SignalHandlerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java
index a3b6e76..8e921a0 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java
index dbdc928..f1792ac 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java
index 84d5739..90794b7 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -31,8 +31,8 @@
 import org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl;
 
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalDefinition;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
-import org.eclipse.osbp.xtext.signal.SignalWatcher;
 
 /**
  * <!-- begin-user-doc -->
@@ -42,21 +42,21 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalPackageImpl#getWatchers <em>Watchers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalPackageImpl#getSignals <em>Signals</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class SignalPackageImpl extends LPackageImpl implements SignalPackage {
 	/**
-	 * The cached value of the '{@link #getWatchers() <em>Watchers</em>}' containment reference list.
+	 * The cached value of the '{@link #getSignals() <em>Signals</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getWatchers()
+	 * @see #getSignals()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<SignalWatcher> watchers;
+	protected EList<SignalDefinition> signals;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -82,11 +82,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList<SignalWatcher> getWatchers() {
-		if (watchers == null) {
-			watchers = new EObjectContainmentEList<SignalWatcher>(SignalWatcher.class, this, SignalDSLPackage.SIGNAL_PACKAGE__WATCHERS);
+	public EList<SignalDefinition> getSignals() {
+		if (signals == null) {
+			signals = new EObjectContainmentEList<SignalDefinition>(SignalDefinition.class, this, SignalDSLPackage.SIGNAL_PACKAGE__SIGNALS);
 		}
-		return watchers;
+		return signals;
 	}
 
 	/**
@@ -97,8 +97,8 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_PACKAGE__WATCHERS:
-				return ((InternalEList<?>)getWatchers()).basicRemove(otherEnd, msgs);
+			case SignalDSLPackage.SIGNAL_PACKAGE__SIGNALS:
+				return ((InternalEList<?>)getSignals()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -111,8 +111,8 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_PACKAGE__WATCHERS:
-				return getWatchers();
+			case SignalDSLPackage.SIGNAL_PACKAGE__SIGNALS:
+				return getSignals();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -126,9 +126,9 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_PACKAGE__WATCHERS:
-				getWatchers().clear();
-				getWatchers().addAll((Collection<? extends SignalWatcher>)newValue);
+			case SignalDSLPackage.SIGNAL_PACKAGE__SIGNALS:
+				getSignals().clear();
+				getSignals().addAll((Collection<? extends SignalDefinition>)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -142,8 +142,8 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_PACKAGE__WATCHERS:
-				getWatchers().clear();
+			case SignalDSLPackage.SIGNAL_PACKAGE__SIGNALS:
+				getSignals().clear();
 				return;
 		}
 		super.eUnset(featureID);
@@ -157,8 +157,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_PACKAGE__WATCHERS:
-				return watchers != null && !watchers.isEmpty();
+			case SignalDSLPackage.SIGNAL_PACKAGE__SIGNALS:
+				return signals != null && !signals.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalSchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalSchedulerImpl.java
index 0b35485..5cb3dfc 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalSchedulerImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalSchedulerImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -16,16 +16,27 @@
  */
 package org.eclipse.osbp.xtext.signal.impl;
 
+import java.util.Collection;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
-import org.eclipse.osbp.xtext.signal.Scheduler;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
+
+import org.eclipse.osbp.xtext.signal.SchedulerType;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
+import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalScheduler;
 
 /**
@@ -36,21 +47,64 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl#getScheduler <em>Scheduler</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl#getInterchangegroup <em>Interchangegroup</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl#getExecutiontype <em>Executiontype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl#getSchedulertype <em>Schedulertype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl#getInterchanges <em>Interchanges</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class SignalSchedulerImpl extends TriggerPolicyImpl implements SignalScheduler {
+public class SignalSchedulerImpl extends SignalDefinitionImpl implements SignalScheduler {
 	/**
-	 * The cached value of the '{@link #getScheduler() <em>Scheduler</em>}' containment reference.
+	 * The cached value of the '{@link #getInterchangegroup() <em>Interchangegroup</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getScheduler()
+	 * @see #getInterchangegroup()
 	 * @generated
 	 * @ordered
 	 */
-	protected Scheduler scheduler;
+	protected DataInterchangeGroup interchangegroup;
+
+	/**
+	 * The default value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExecutiontype()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SignalExecutionTypeEnum EXECUTIONTYPE_EDEFAULT = SignalExecutionTypeEnum.SEQ;
+
+	/**
+	 * The cached value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExecutiontype()
+	 * @generated
+	 * @ordered
+	 */
+	protected SignalExecutionTypeEnum executiontype = EXECUTIONTYPE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getSchedulertype() <em>Schedulertype</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSchedulertype()
+	 * @generated
+	 * @ordered
+	 */
+	protected SchedulerType schedulertype;
+
+	/**
+	 * The cached value of the '{@link #getInterchanges() <em>Interchanges</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterchanges()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SignalDatainterchange> interchanges;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -76,8 +130,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Scheduler getScheduler() {
-		return scheduler;
+	public DataInterchangeGroup getInterchangegroup() {
+		if (interchangegroup != null && interchangegroup.eIsProxy()) {
+			InternalEObject oldInterchangegroup = (InternalEObject)interchangegroup;
+			interchangegroup = (DataInterchangeGroup)eResolveProxy(oldInterchangegroup);
+			if (interchangegroup != oldInterchangegroup) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGEGROUP, oldInterchangegroup, interchangegroup));
+			}
+		}
+		return interchangegroup;
 	}
 
 	/**
@@ -85,11 +147,62 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public NotificationChain basicSetScheduler(Scheduler newScheduler, NotificationChain msgs) {
-		Scheduler oldScheduler = scheduler;
-		scheduler = newScheduler;
+	public DataInterchangeGroup basicGetInterchangegroup() {
+		return interchangegroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInterchangegroup(DataInterchangeGroup newInterchangegroup) {
+		DataInterchangeGroup oldInterchangegroup = interchangegroup;
+		interchangegroup = newInterchangegroup;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGEGROUP, oldInterchangegroup, interchangegroup));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SignalExecutionTypeEnum getExecutiontype() {
+		return executiontype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExecutiontype(SignalExecutionTypeEnum newExecutiontype) {
+		SignalExecutionTypeEnum oldExecutiontype = executiontype;
+		executiontype = newExecutiontype == null ? EXECUTIONTYPE_EDEFAULT : newExecutiontype;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__EXECUTIONTYPE, oldExecutiontype, executiontype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SchedulerType getSchedulertype() {
+		return schedulertype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSchedulertype(SchedulerType newSchedulertype, NotificationChain msgs) {
+		SchedulerType oldSchedulertype = schedulertype;
+		schedulertype = newSchedulertype;
 		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, oldScheduler, newScheduler);
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE, oldSchedulertype, newSchedulertype);
 			if (msgs == null) msgs = notification; else msgs.add(notification);
 		}
 		return msgs;
@@ -100,18 +213,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setScheduler(Scheduler newScheduler) {
-		if (newScheduler != scheduler) {
+	public void setSchedulertype(SchedulerType newSchedulertype) {
+		if (newSchedulertype != schedulertype) {
 			NotificationChain msgs = null;
-			if (scheduler != null)
-				msgs = ((InternalEObject)scheduler).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, null, msgs);
-			if (newScheduler != null)
-				msgs = ((InternalEObject)newScheduler).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, null, msgs);
-			msgs = basicSetScheduler(newScheduler, msgs);
+			if (schedulertype != null)
+				msgs = ((InternalEObject)schedulertype).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE, null, msgs);
+			if (newSchedulertype != null)
+				msgs = ((InternalEObject)newSchedulertype).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE, null, msgs);
+			msgs = basicSetSchedulertype(newSchedulertype, msgs);
 			if (msgs != null) msgs.dispatch();
 		}
 		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, newScheduler, newScheduler));
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE, newSchedulertype, newSchedulertype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<SignalDatainterchange> getInterchanges() {
+		if (interchanges == null) {
+			interchanges = new EObjectContainmentEList<SignalDatainterchange>(SignalDatainterchange.class, this, SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGES);
+		}
+		return interchanges;
 	}
 
 	/**
@@ -122,8 +247,10 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
-				return basicSetScheduler(null, msgs);
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE:
+				return basicSetSchedulertype(null, msgs);
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGES:
+				return ((InternalEList<?>)getInterchanges()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -136,8 +263,15 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
-				return getScheduler();
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGEGROUP:
+				if (resolve) return getInterchangegroup();
+				return basicGetInterchangegroup();
+			case SignalDSLPackage.SIGNAL_SCHEDULER__EXECUTIONTYPE:
+				return getExecutiontype();
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE:
+				return getSchedulertype();
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGES:
+				return getInterchanges();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -147,11 +281,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
-				setScheduler((Scheduler)newValue);
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGEGROUP:
+				setInterchangegroup((DataInterchangeGroup)newValue);
+				return;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__EXECUTIONTYPE:
+				setExecutiontype((SignalExecutionTypeEnum)newValue);
+				return;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE:
+				setSchedulertype((SchedulerType)newValue);
+				return;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGES:
+				getInterchanges().clear();
+				getInterchanges().addAll((Collection<? extends SignalDatainterchange>)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -165,8 +310,17 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
-				setScheduler((Scheduler)null);
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGEGROUP:
+				setInterchangegroup((DataInterchangeGroup)null);
+				return;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__EXECUTIONTYPE:
+				setExecutiontype(EXECUTIONTYPE_EDEFAULT);
+				return;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE:
+				setSchedulertype((SchedulerType)null);
+				return;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGES:
+				getInterchanges().clear();
 				return;
 		}
 		super.eUnset(featureID);
@@ -180,10 +334,32 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
-				return scheduler != null;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGEGROUP:
+				return interchangegroup != null;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__EXECUTIONTYPE:
+				return executiontype != EXECUTIONTYPE_EDEFAULT;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULERTYPE:
+				return schedulertype != null;
+			case SignalDSLPackage.SIGNAL_SCHEDULER__INTERCHANGES:
+				return interchanges != null && !interchanges.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (executiontype: ");
+		result.append(executiontype);
+		result.append(')');
+		return result.toString();
+	}
+
 } //SignalSchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java
index 0695b1a..9d0388b 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -16,24 +16,17 @@
  */
 package org.eclipse.osbp.xtext.signal.impl;
 
-import java.util.Collection;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
-import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
-import org.eclipse.emf.ecore.util.EObjectContainmentEList;
-import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
-import org.eclipse.osbp.xtext.signal.SignalHandler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
+import org.eclipse.osbp.xtext.signal.WatcherDefinition;
 
 /**
  * <!-- begin-user-doc -->
@@ -43,63 +36,21 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getDirectory <em>Directory</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getHandlers <em>Handlers</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getDefinition <em>Definition</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class SignalWatcherImpl extends SignalLazyResolverImpl implements SignalWatcher {
+public class SignalWatcherImpl extends SignalDefinitionImpl implements SignalWatcher {
 	/**
-	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * The cached value of the '{@link #getDefinition() <em>Definition</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getName()
+	 * @see #getDefinition()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String NAME_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getName()
-	 * @generated
-	 * @ordered
-	 */
-	protected String name = NAME_EDEFAULT;
-
-	/**
-	 * The default value of the '{@link #getDirectory() <em>Directory</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDirectory()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String DIRECTORY_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getDirectory() <em>Directory</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDirectory()
-	 * @generated
-	 * @ordered
-	 */
-	protected String directory = DIRECTORY_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getHandlers() <em>Handlers</em>}' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getHandlers()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<SignalHandler> handlers;
+	protected WatcherDefinition definition;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -125,8 +76,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public String getName() {
-		return name;
+	public WatcherDefinition getDefinition() {
+		return definition;
 	}
 
 	/**
@@ -134,44 +85,33 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setName(String newName) {
-		String oldName = name;
-		name = newName;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_WATCHER__NAME, oldName, name));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getDirectory() {
-		return directory;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setDirectory(String newDirectory) {
-		String oldDirectory = directory;
-		directory = newDirectory;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY, oldDirectory, directory));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EList<SignalHandler> getHandlers() {
-		if (handlers == null) {
-			handlers = new EObjectContainmentEList<SignalHandler>(SignalHandler.class, this, SignalDSLPackage.SIGNAL_WATCHER__HANDLERS);
+	public NotificationChain basicSetDefinition(WatcherDefinition newDefinition, NotificationChain msgs) {
+		WatcherDefinition oldDefinition = definition;
+		definition = newDefinition;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_WATCHER__DEFINITION, oldDefinition, newDefinition);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
 		}
-		return handlers;
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDefinition(WatcherDefinition newDefinition) {
+		if (newDefinition != definition) {
+			NotificationChain msgs = null;
+			if (definition != null)
+				msgs = ((InternalEObject)definition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_WATCHER__DEFINITION, null, msgs);
+			if (newDefinition != null)
+				msgs = ((InternalEObject)newDefinition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_WATCHER__DEFINITION, null, msgs);
+			msgs = basicSetDefinition(newDefinition, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_WATCHER__DEFINITION, newDefinition, newDefinition));
 	}
 
 	/**
@@ -182,8 +122,8 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
-				return ((InternalEList<?>)getHandlers()).basicRemove(otherEnd, msgs);
+			case SignalDSLPackage.SIGNAL_WATCHER__DEFINITION:
+				return basicSetDefinition(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -196,12 +136,8 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_WATCHER__NAME:
-				return getName();
-			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
-				return getDirectory();
-			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
-				return getHandlers();
+			case SignalDSLPackage.SIGNAL_WATCHER__DEFINITION:
+				return getDefinition();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -211,19 +147,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_WATCHER__NAME:
-				setName((String)newValue);
-				return;
-			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
-				setDirectory((String)newValue);
-				return;
-			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
-				getHandlers().clear();
-				getHandlers().addAll((Collection<? extends SignalHandler>)newValue);
+			case SignalDSLPackage.SIGNAL_WATCHER__DEFINITION:
+				setDefinition((WatcherDefinition)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -237,14 +165,8 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_WATCHER__NAME:
-				setName(NAME_EDEFAULT);
-				return;
-			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
-				setDirectory(DIRECTORY_EDEFAULT);
-				return;
-			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
-				getHandlers().clear();
+			case SignalDSLPackage.SIGNAL_WATCHER__DEFINITION:
+				setDefinition((WatcherDefinition)null);
 				return;
 		}
 		super.eUnset(featureID);
@@ -258,32 +180,10 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_WATCHER__NAME:
-				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
-				return DIRECTORY_EDEFAULT == null ? directory != null : !DIRECTORY_EDEFAULT.equals(directory);
-			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
-				return handlers != null && !handlers.isEmpty();
+			case SignalDSLPackage.SIGNAL_WATCHER__DEFINITION:
+				return definition != null;
 		}
 		return super.eIsSet(featureID);
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy()) return super.toString();
-
-		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (name: ");
-		result.append(name);
-		result.append(", directory: ");
-		result.append(directory);
-		result.append(')');
-		return result.toString();
-	}
-
 } //SignalWatcherImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerFileImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerFileImpl.java
deleted file mode 100644
index 3986d0b..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerFileImpl.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
- *  which accompanies this distribution, and is available at
- *  https://www.eclipse.org/legal/epl-2.0/
- *
- *  SPDX-License-Identifier: EPL-2.0
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal.impl;
-
-import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.ecore.EClass;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
-
-import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
-import org.eclipse.osbp.xtext.signal.TriggerFile;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Trigger File</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl#getFilemask <em>Filemask</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class TriggerFileImpl extends TriggerPolicyImpl implements TriggerFile {
-	/**
-	 * The default value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getFilemask()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String FILEMASK_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getFilemask()
-	 * @generated
-	 * @ordered
-	 */
-	protected String filemask = FILEMASK_EDEFAULT;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected TriggerFileImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.TRIGGER_FILE;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getFilemask() {
-		return filemask;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setFilemask(String newFilemask) {
-		String oldFilemask = filemask;
-		filemask = newFilemask;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.TRIGGER_FILE__FILEMASK, oldFilemask, filemask));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
-				return getFilemask();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
-				setFilemask((String)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
-				setFilemask(FILEMASK_EDEFAULT);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
-				return FILEMASK_EDEFAULT == null ? filemask != null : !FILEMASK_EDEFAULT.equals(filemask);
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy()) return super.toString();
-
-		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (filemask: ");
-		result.append(filemask);
-		result.append(')');
-		return result.toString();
-	}
-
-} //TriggerFileImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherDefinitionImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherDefinitionImpl.java
new file mode 100644
index 0000000..e25ed53
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherDefinitionImpl.java
@@ -0,0 +1,241 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
+
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
+import org.eclipse.osbp.xtext.signal.WatcherDefinition;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Watcher Definition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WatcherDefinitionImpl#getInterchangegroup <em>Interchangegroup</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WatcherDefinitionImpl#getExecutiontype <em>Executiontype</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class WatcherDefinitionImpl extends MinimalEObjectImpl.Container implements WatcherDefinition {
+	/**
+	 * The cached value of the '{@link #getInterchangegroup() <em>Interchangegroup</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterchangegroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected DataInterchangeGroup interchangegroup;
+
+	/**
+	 * The default value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExecutiontype()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final SignalExecutionTypeEnum EXECUTIONTYPE_EDEFAULT = SignalExecutionTypeEnum.SEQ;
+
+	/**
+	 * The cached value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExecutiontype()
+	 * @generated
+	 * @ordered
+	 */
+	protected SignalExecutionTypeEnum executiontype = EXECUTIONTYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WatcherDefinitionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.WATCHER_DEFINITION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataInterchangeGroup getInterchangegroup() {
+		if (interchangegroup != null && interchangegroup.eIsProxy()) {
+			InternalEObject oldInterchangegroup = (InternalEObject)interchangegroup;
+			interchangegroup = (DataInterchangeGroup)eResolveProxy(oldInterchangegroup);
+			if (interchangegroup != oldInterchangegroup) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SignalDSLPackage.WATCHER_DEFINITION__INTERCHANGEGROUP, oldInterchangegroup, interchangegroup));
+			}
+		}
+		return interchangegroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataInterchangeGroup basicGetInterchangegroup() {
+		return interchangegroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInterchangegroup(DataInterchangeGroup newInterchangegroup) {
+		DataInterchangeGroup oldInterchangegroup = interchangegroup;
+		interchangegroup = newInterchangegroup;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WATCHER_DEFINITION__INTERCHANGEGROUP, oldInterchangegroup, interchangegroup));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SignalExecutionTypeEnum getExecutiontype() {
+		return executiontype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExecutiontype(SignalExecutionTypeEnum newExecutiontype) {
+		SignalExecutionTypeEnum oldExecutiontype = executiontype;
+		executiontype = newExecutiontype == null ? EXECUTIONTYPE_EDEFAULT : newExecutiontype;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WATCHER_DEFINITION__EXECUTIONTYPE, oldExecutiontype, executiontype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_DEFINITION__INTERCHANGEGROUP:
+				if (resolve) return getInterchangegroup();
+				return basicGetInterchangegroup();
+			case SignalDSLPackage.WATCHER_DEFINITION__EXECUTIONTYPE:
+				return getExecutiontype();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_DEFINITION__INTERCHANGEGROUP:
+				setInterchangegroup((DataInterchangeGroup)newValue);
+				return;
+			case SignalDSLPackage.WATCHER_DEFINITION__EXECUTIONTYPE:
+				setExecutiontype((SignalExecutionTypeEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_DEFINITION__INTERCHANGEGROUP:
+				setInterchangegroup((DataInterchangeGroup)null);
+				return;
+			case SignalDSLPackage.WATCHER_DEFINITION__EXECUTIONTYPE:
+				setExecutiontype(EXECUTIONTYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_DEFINITION__INTERCHANGEGROUP:
+				return interchangegroup != null;
+			case SignalDSLPackage.WATCHER_DEFINITION__EXECUTIONTYPE:
+				return executiontype != EXECUTIONTYPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (executiontype: ");
+		result.append(executiontype);
+		result.append(')');
+		return result.toString();
+	}
+
+} //WatcherDefinitionImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherWithFileMaskImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherWithFileMaskImpl.java
new file mode 100644
index 0000000..3ef07c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherWithFileMaskImpl.java
@@ -0,0 +1,257 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Watcher With File Mask</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileMaskImpl#getFilemask <em>Filemask</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileMaskImpl#getInterchange <em>Interchange</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class WatcherWithFileMaskImpl extends WatcherDefinitionImpl implements WatcherWithFileMask {
+	/**
+	 * The default value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilemask()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FILEMASK_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilemask()
+	 * @generated
+	 * @ordered
+	 */
+	protected String filemask = FILEMASK_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getInterchange() <em>Interchange</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterchange()
+	 * @generated
+	 * @ordered
+	 */
+	protected SignalDatainterchange interchange;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WatcherWithFileMaskImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFilemask() {
+		return filemask;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilemask(String newFilemask) {
+		String oldFilemask = filemask;
+		filemask = newFilemask;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WATCHER_WITH_FILE_MASK__FILEMASK, oldFilemask, filemask));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SignalDatainterchange getInterchange() {
+		return interchange;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInterchange(SignalDatainterchange newInterchange, NotificationChain msgs) {
+		SignalDatainterchange oldInterchange = interchange;
+		interchange = newInterchange;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE, oldInterchange, newInterchange);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInterchange(SignalDatainterchange newInterchange) {
+		if (newInterchange != interchange) {
+			NotificationChain msgs = null;
+			if (interchange != null)
+				msgs = ((InternalEObject)interchange).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE, null, msgs);
+			if (newInterchange != null)
+				msgs = ((InternalEObject)newInterchange).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE, null, msgs);
+			msgs = basicSetInterchange(newInterchange, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE, newInterchange, newInterchange));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE:
+				return basicSetInterchange(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__FILEMASK:
+				return getFilemask();
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE:
+				return getInterchange();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__FILEMASK:
+				setFilemask((String)newValue);
+				return;
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE:
+				setInterchange((SignalDatainterchange)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__FILEMASK:
+				setFilemask(FILEMASK_EDEFAULT);
+				return;
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE:
+				setInterchange((SignalDatainterchange)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__FILEMASK:
+				return FILEMASK_EDEFAULT == null ? filemask != null : !FILEMASK_EDEFAULT.equals(filemask);
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK__INTERCHANGE:
+				return interchange != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (filemask: ");
+		result.append(filemask);
+		result.append(')');
+		return result.toString();
+	}
+
+} //WatcherWithFileMaskImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherWithFileNameImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherWithFileNameImpl.java
new file mode 100644
index 0000000..1c14fb9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WatcherWithFileNameImpl.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ * 
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Watcher With File Name</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileNameImpl#getFilename <em>Filename</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WatcherWithFileNameImpl#getInterchanges <em>Interchanges</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class WatcherWithFileNameImpl extends WatcherDefinitionImpl implements WatcherWithFileName {
+	/**
+	 * The default value of the '{@link #getFilename() <em>Filename</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilename()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FILENAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFilename() <em>Filename</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilename()
+	 * @generated
+	 * @ordered
+	 */
+	protected String filename = FILENAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getInterchanges() <em>Interchanges</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterchanges()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SignalDatainterchange> interchanges;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WatcherWithFileNameImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFilename() {
+		return filename;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilename(String newFilename) {
+		String oldFilename = filename;
+		filename = newFilename;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WATCHER_WITH_FILE_NAME__FILENAME, oldFilename, filename));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<SignalDatainterchange> getInterchanges() {
+		if (interchanges == null) {
+			interchanges = new EObjectContainmentEList<SignalDatainterchange>(SignalDatainterchange.class, this, SignalDSLPackage.WATCHER_WITH_FILE_NAME__INTERCHANGES);
+		}
+		return interchanges;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__INTERCHANGES:
+				return ((InternalEList<?>)getInterchanges()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__FILENAME:
+				return getFilename();
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__INTERCHANGES:
+				return getInterchanges();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__FILENAME:
+				setFilename((String)newValue);
+				return;
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__INTERCHANGES:
+				getInterchanges().clear();
+				getInterchanges().addAll((Collection<? extends SignalDatainterchange>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__FILENAME:
+				setFilename(FILENAME_EDEFAULT);
+				return;
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__INTERCHANGES:
+				getInterchanges().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__FILENAME:
+				return FILENAME_EDEFAULT == null ? filename != null : !FILENAME_EDEFAULT.equals(filename);
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME__INTERCHANGES:
+				return interchanges != null && !interchanges.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (filename: ");
+		result.append(filename);
+		result.append(')');
+		return result.toString();
+	}
+
+} //WatcherWithFileNameImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WeeklySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WeeklySchedulerImpl.java
index 9674526..43da61e 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WeeklySchedulerImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WeeklySchedulerImpl.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -41,7 +41,7 @@
  *
  * @generated
  */
-public class WeeklySchedulerImpl extends SchedulerImpl implements WeeklyScheduler {
+public class WeeklySchedulerImpl extends SchedulerTypeImpl implements WeeklyScheduler {
 	/**
 	 * The default value of the '{@link #getDayofweek() <em>Dayofweek</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java
index e6c33b7..68d9d1d 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -97,34 +97,34 @@
 				return createSignalPackageAdapter();
 			}
 			@Override
-			public Adapter caseSignalBase(SignalBase object) {
-				return createSignalBaseAdapter();
+			public Adapter caseSignalDefinition(SignalDefinition object) {
+				return createSignalDefinitionAdapter();
 			}
 			@Override
 			public Adapter caseSignalWatcher(SignalWatcher object) {
 				return createSignalWatcherAdapter();
 			}
 			@Override
-			public Adapter caseSignalHandler(SignalHandler object) {
-				return createSignalHandlerAdapter();
+			public Adapter caseWatcherDefinition(WatcherDefinition object) {
+				return createWatcherDefinitionAdapter();
 			}
 			@Override
-			public Adapter caseTriggerPolicy(TriggerPolicy object) {
-				return createTriggerPolicyAdapter();
+			public Adapter caseWatcherWithFileMask(WatcherWithFileMask object) {
+				return createWatcherWithFileMaskAdapter();
 			}
 			@Override
-			public Adapter caseTriggerFile(TriggerFile object) {
-				return createTriggerFileAdapter();
+			public Adapter caseWatcherWithFileName(WatcherWithFileName object) {
+				return createWatcherWithFileNameAdapter();
+			}
+			@Override
+			public Adapter caseSchedulerType(SchedulerType object) {
+				return createSchedulerTypeAdapter();
 			}
 			@Override
 			public Adapter caseSignalScheduler(SignalScheduler object) {
 				return createSignalSchedulerAdapter();
 			}
 			@Override
-			public Adapter caseScheduler(Scheduler object) {
-				return createSchedulerAdapter();
-			}
-			@Override
 			public Adapter caseCronScheduler(CronScheduler object) {
 				return createCronSchedulerAdapter();
 			}
@@ -223,16 +223,16 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.SignalBase <em>Signal Base</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.SignalDefinition <em>Signal Definition</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see org.eclipse.osbp.xtext.signal.SignalBase
+	 * @see org.eclipse.osbp.xtext.signal.SignalDefinition
 	 * @generated
 	 */
-	public Adapter createSignalBaseAdapter() {
+	public Adapter createSignalDefinitionAdapter() {
 		return null;
 	}
 
@@ -251,44 +251,58 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.SignalHandler <em>Signal Handler</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.WatcherDefinition <em>Watcher Definition</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler
+	 * @see org.eclipse.osbp.xtext.signal.WatcherDefinition
 	 * @generated
 	 */
-	public Adapter createSignalHandlerAdapter() {
+	public Adapter createWatcherDefinitionAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.TriggerPolicy <em>Trigger Policy</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileMask <em>Watcher With File Mask</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see org.eclipse.osbp.xtext.signal.TriggerPolicy
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileMask
 	 * @generated
 	 */
-	public Adapter createTriggerPolicyAdapter() {
+	public Adapter createWatcherWithFileMaskAdapter() {
 		return null;
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.TriggerFile <em>Trigger File</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.WatcherWithFileName <em>Watcher With File Name</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
 	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
 	 * <!-- end-user-doc -->
 	 * @return the new adapter.
-	 * @see org.eclipse.osbp.xtext.signal.TriggerFile
+	 * @see org.eclipse.osbp.xtext.signal.WatcherWithFileName
 	 * @generated
 	 */
-	public Adapter createTriggerFileAdapter() {
+	public Adapter createWatcherWithFileNameAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.SchedulerType <em>Scheduler Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.signal.SchedulerType
+	 * @generated
+	 */
+	public Adapter createSchedulerTypeAdapter() {
 		return null;
 	}
 
@@ -307,20 +321,6 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.Scheduler <em>Scheduler</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.osbp.xtext.signal.Scheduler
-	 * @generated
-	 */
-	public Adapter createSchedulerAdapter() {
-		return null;
-	}
-
-	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.CronScheduler <em>Cron Scheduler</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java
index 9e8001f..7e6440a 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java
@@ -4,7 +4,7 @@
  *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
@@ -103,61 +103,60 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SignalDSLPackage.SIGNAL_BASE: {
-				SignalBase signalBase = (SignalBase)theEObject;
-				T result = caseSignalBase(signalBase);
-				if (result == null) result = caseSignalLazyResolver(signalBase);
+			case SignalDSLPackage.SIGNAL_DEFINITION: {
+				SignalDefinition signalDefinition = (SignalDefinition)theEObject;
+				T result = caseSignalDefinition(signalDefinition);
+				if (result == null) result = caseSignalLazyResolver(signalDefinition);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case SignalDSLPackage.SIGNAL_WATCHER: {
 				SignalWatcher signalWatcher = (SignalWatcher)theEObject;
 				T result = caseSignalWatcher(signalWatcher);
+				if (result == null) result = caseSignalDefinition(signalWatcher);
 				if (result == null) result = caseSignalLazyResolver(signalWatcher);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SignalDSLPackage.SIGNAL_HANDLER: {
-				SignalHandler signalHandler = (SignalHandler)theEObject;
-				T result = caseSignalHandler(signalHandler);
-				if (result == null) result = caseSignalLazyResolver(signalHandler);
+			case SignalDSLPackage.WATCHER_DEFINITION: {
+				WatcherDefinition watcherDefinition = (WatcherDefinition)theEObject;
+				T result = caseWatcherDefinition(watcherDefinition);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SignalDSLPackage.TRIGGER_POLICY: {
-				TriggerPolicy triggerPolicy = (TriggerPolicy)theEObject;
-				T result = caseTriggerPolicy(triggerPolicy);
-				if (result == null) result = caseSignalLazyResolver(triggerPolicy);
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK: {
+				WatcherWithFileMask watcherWithFileMask = (WatcherWithFileMask)theEObject;
+				T result = caseWatcherWithFileMask(watcherWithFileMask);
+				if (result == null) result = caseWatcherDefinition(watcherWithFileMask);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SignalDSLPackage.TRIGGER_FILE: {
-				TriggerFile triggerFile = (TriggerFile)theEObject;
-				T result = caseTriggerFile(triggerFile);
-				if (result == null) result = caseTriggerPolicy(triggerFile);
-				if (result == null) result = caseSignalLazyResolver(triggerFile);
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME: {
+				WatcherWithFileName watcherWithFileName = (WatcherWithFileName)theEObject;
+				T result = caseWatcherWithFileName(watcherWithFileName);
+				if (result == null) result = caseWatcherDefinition(watcherWithFileName);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.SCHEDULER_TYPE: {
+				SchedulerType schedulerType = (SchedulerType)theEObject;
+				T result = caseSchedulerType(schedulerType);
+				if (result == null) result = caseSignalLazyResolver(schedulerType);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case SignalDSLPackage.SIGNAL_SCHEDULER: {
 				SignalScheduler signalScheduler = (SignalScheduler)theEObject;
 				T result = caseSignalScheduler(signalScheduler);
-				if (result == null) result = caseTriggerPolicy(signalScheduler);
+				if (result == null) result = caseSignalDefinition(signalScheduler);
 				if (result == null) result = caseSignalLazyResolver(signalScheduler);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SignalDSLPackage.SCHEDULER: {
-				Scheduler scheduler = (Scheduler)theEObject;
-				T result = caseScheduler(scheduler);
-				if (result == null) result = caseSignalLazyResolver(scheduler);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case SignalDSLPackage.CRON_SCHEDULER: {
 				CronScheduler cronScheduler = (CronScheduler)theEObject;
 				T result = caseCronScheduler(cronScheduler);
-				if (result == null) result = caseScheduler(cronScheduler);
+				if (result == null) result = caseSchedulerType(cronScheduler);
 				if (result == null) result = caseSignalLazyResolver(cronScheduler);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -165,7 +164,7 @@
 			case SignalDSLPackage.HOURLY_SCHEDULER: {
 				HourlyScheduler hourlyScheduler = (HourlyScheduler)theEObject;
 				T result = caseHourlyScheduler(hourlyScheduler);
-				if (result == null) result = caseScheduler(hourlyScheduler);
+				if (result == null) result = caseSchedulerType(hourlyScheduler);
 				if (result == null) result = caseSignalLazyResolver(hourlyScheduler);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -173,7 +172,7 @@
 			case SignalDSLPackage.DAILY_SCHEDULER: {
 				DailyScheduler dailyScheduler = (DailyScheduler)theEObject;
 				T result = caseDailyScheduler(dailyScheduler);
-				if (result == null) result = caseScheduler(dailyScheduler);
+				if (result == null) result = caseSchedulerType(dailyScheduler);
 				if (result == null) result = caseSignalLazyResolver(dailyScheduler);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -181,7 +180,7 @@
 			case SignalDSLPackage.WEEKLY_SCHEDULER: {
 				WeeklyScheduler weeklyScheduler = (WeeklyScheduler)theEObject;
 				T result = caseWeeklyScheduler(weeklyScheduler);
-				if (result == null) result = caseScheduler(weeklyScheduler);
+				if (result == null) result = caseSchedulerType(weeklyScheduler);
 				if (result == null) result = caseSignalLazyResolver(weeklyScheduler);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -189,7 +188,7 @@
 			case SignalDSLPackage.MONTHLY_SCHEDULER: {
 				MonthlyScheduler monthlyScheduler = (MonthlyScheduler)theEObject;
 				T result = caseMonthlyScheduler(monthlyScheduler);
-				if (result == null) result = caseScheduler(monthlyScheduler);
+				if (result == null) result = caseSchedulerType(monthlyScheduler);
 				if (result == null) result = caseSignalLazyResolver(monthlyScheduler);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -259,17 +258,17 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Signal Base</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Signal Definition</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
 	 * <!-- end-user-doc -->
 	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Signal Base</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Signal Definition</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseSignalBase(SignalBase object) {
+	public T caseSignalDefinition(SignalDefinition object) {
 		return null;
 	}
 
@@ -289,47 +288,62 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Signal Handler</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Watcher Definition</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
 	 * <!-- end-user-doc -->
 	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Signal Handler</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Watcher Definition</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseSignalHandler(SignalHandler object) {
+	public T caseWatcherDefinition(WatcherDefinition object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Trigger Policy</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Watcher With File Mask</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
 	 * <!-- end-user-doc -->
 	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Trigger Policy</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Watcher With File Mask</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseTriggerPolicy(TriggerPolicy object) {
+	public T caseWatcherWithFileMask(WatcherWithFileMask object) {
 		return null;
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Trigger File</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Watcher With File Name</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
 	 * returning a non-null result will terminate the switch.
 	 * <!-- end-user-doc -->
 	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Trigger File</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Watcher With File Name</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseTriggerFile(TriggerFile object) {
+	public T caseWatcherWithFileName(WatcherWithFileName object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Scheduler Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Scheduler Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSchedulerType(SchedulerType object) {
 		return null;
 	}
 
@@ -349,21 +363,6 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Scheduler</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Scheduler</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseScheduler(Scheduler object) {
-		return null;
-	}
-
-	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Cron Scheduler</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore b/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore
index a9a19e1..4dd8bd8 100644
--- a/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore
+++ b/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore
@@ -28,9 +28,10 @@
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.InternalEObject
 import org.eclipse.osbp.dsl.semantic.common.types.LPackage
-import org.eclipse.osbp.xtext.datainterchange.DataInterchange
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup
 import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3
 import org.eclipse.xtext.xtype.XImportSection
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange
 
 class SignalModel{
 	contains XImportSection importSection
@@ -46,52 +47,57 @@
 }
 
 class SignalPackage extends LPackage {
-	contains SignalWatcher[] watchers
+	contains SignalDefinition[] signals
 }
 
-class SignalBase extends SignalLazyResolver{
+class SignalDefinition extends SignalLazyResolver{
 	String name
 }
 
-class SignalWatcher extends SignalLazyResolver {
-	String name
-	String directory
-	contains SignalHandler[] handlers
+class SignalWatcher extends SignalDefinition {
+	contains WatcherDefinition definition
 }
 
-class SignalHandler extends SignalLazyResolver {
-	String name
+class WatcherDefinition {
+	refers DataInterchangeGroup interchangegroup
 	SignalExecutionTypeEnum executiontype
-	contains SignalDatainterchange[] interchanges
-	contains TriggerPolicy triggerpolicy
 }
 
-class TriggerPolicy extends SignalLazyResolver{}
-class TriggerFile extends TriggerPolicy{
+class WatcherWithFileMask extends WatcherDefinition{
 	String filemask
+	contains SignalDatainterchange interchange
+}
+class WatcherWithFileName extends WatcherDefinition {
+	String filename
+	contains SignalDatainterchange[] interchanges
 }
 
-class SignalScheduler extends TriggerPolicy {
-	contains Scheduler scheduler
+class SchedulerType extends SignalLazyResolver {
 }
-class Scheduler extends SignalLazyResolver {
+
+class SignalScheduler extends SignalDefinition {
+	refers DataInterchangeGroup interchangegroup
+	SignalExecutionTypeEnum executiontype
+	contains SchedulerType schedulertype
+	contains SignalDatainterchange[] interchanges
 }
-class CronScheduler extends Scheduler {
+
+class CronScheduler extends SchedulerType {
 	String expression
 }
-class HourlyScheduler extends Scheduler {
+class HourlyScheduler extends SchedulerType {
 	int minute
 }
-class DailyScheduler extends Scheduler {
+class DailyScheduler extends SchedulerType {
 	int hour
 	int minute
 }
-class WeeklyScheduler extends Scheduler {
+class WeeklyScheduler extends SchedulerType {
 	DayOfWeekEnum dayofweek
 	int hour
 	int minute
 }
-class MonthlyScheduler extends Scheduler {
+class MonthlyScheduler extends SchedulerType {
 	int dayofmonth
 	int hour
 	int minute
@@ -102,13 +108,13 @@
 class SignalDatainterchange extends SignalProcessor {
 	SignalActionEnum dataAction
 	refers DataInterchange dataRef
-	String fileName
+	boolean baseinterchange
 }
 
 enum SignalActionEnum {
-	DATAIMPORT as 'Import'
-	DATAEXPORT as 'Export'
-	NONE as 'None'
+	DATAIMPORT as 'import'
+	DATAEXPORT as 'export'
+	NONE as 'none'
 }
 
 enum SignalExecutionTypeEnum {
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin
index 3d8b6d9..2e4a01d 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin
Binary files differ
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g
index 6aae9f5..d78e5c8 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -185,18 +187,18 @@
 			(
 				(
 					{
-						newCompositeNode(grammarAccess.getSignalPackageAccess().getWatchersSignalWatcherParserRuleCall_3_1_0());
+						newCompositeNode(grammarAccess.getSignalPackageAccess().getSignalsSignalDefinitionParserRuleCall_3_1_0());
 					}
-					lv_watchers_4_0=ruleSignalWatcher
+					lv_signals_4_0=ruleSignalDefinition
 					{
 						if ($current==null) {
 							$current = createModelElementForParent(grammarAccess.getSignalPackageRule());
 						}
 						add(
 							$current,
-							"watchers",
-							lv_watchers_4_0,
-							"org.eclipse.osbp.xtext.signal.SignalDSL.SignalWatcher");
+							"signals",
+							lv_signals_4_0,
+							"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDefinition");
 						afterParserOrEnumRuleCall();
 					}
 				)
@@ -209,6 +211,42 @@
 	)
 ;
 
+// Entry rule entryRuleSignalDefinition
+entryRuleSignalDefinition returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getSignalDefinitionRule()); }
+	iv_ruleSignalDefinition=ruleSignalDefinition
+	{ $current=$iv_ruleSignalDefinition.current; }
+	EOF;
+
+// Rule SignalDefinition
+ruleSignalDefinition returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getSignalDefinitionAccess().getSignalWatcherParserRuleCall_0());
+		}
+		this_SignalWatcher_0=ruleSignalWatcher
+		{
+			$current = $this_SignalWatcher_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getSignalDefinitionAccess().getSignalSchedulerParserRuleCall_1());
+		}
+		this_SignalScheduler_1=ruleSignalScheduler
+		{
+			$current = $this_SignalScheduler_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
+;
+
 // Entry rule entryRuleSignalWatcher
 entryRuleSignalWatcher returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getSignalWatcherRule()); }
@@ -255,67 +293,73 @@
 				}
 			)
 		)
-		otherlv_3='directory'
-		{
-			newLeafNode(otherlv_3, grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3());
-		}
-		(
-			(
-				lv_directory_4_0=RULE_STRING
-				{
-					newLeafNode(lv_directory_4_0, grammarAccess.getSignalWatcherAccess().getDirectorySTRINGTerminalRuleCall_4_0());
-				}
-				{
-					if ($current==null) {
-						$current = createModelElement(grammarAccess.getSignalWatcherRule());
-					}
-					setWithLastConsumed(
-						$current,
-						"directory",
-						lv_directory_4_0,
-						"org.eclipse.xtext.xbase.Xtype.STRING");
-				}
-			)
-		)
-		otherlv_5='{'
-		{
-			newLeafNode(otherlv_5, grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5());
-		}
 		(
 			(
 				{
-					newCompositeNode(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0());
+					newCompositeNode(grammarAccess.getSignalWatcherAccess().getDefinitionWatcherDefinitionParserRuleCall_3_0());
 				}
-				lv_handlers_6_0=ruleSignalHandler
+				lv_definition_3_0=ruleWatcherDefinition
 				{
 					if ($current==null) {
 						$current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
 					}
-					add(
+					set(
 						$current,
-						"handlers",
-						lv_handlers_6_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandler");
+						"definition",
+						lv_definition_3_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.WatcherDefinition");
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)*
-		otherlv_7='}'
+		)
+	)
+;
+
+// Entry rule entryRuleWatcherDefinition
+entryRuleWatcherDefinition returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getWatcherDefinitionRule()); }
+	iv_ruleWatcherDefinition=ruleWatcherDefinition
+	{ $current=$iv_ruleWatcherDefinition.current; }
+	EOF;
+
+// Rule WatcherDefinition
+ruleWatcherDefinition returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			newLeafNode(otherlv_7, grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7());
+			newCompositeNode(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileMaskParserRuleCall_0());
+		}
+		this_WatcherWithFileMask_0=ruleWatcherWithFileMask
+		{
+			$current = $this_WatcherWithFileMask_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileNameParserRuleCall_1());
+		}
+		this_WatcherWithFileName_1=ruleWatcherWithFileName
+		{
+			$current = $this_WatcherWithFileName_1.current;
+			afterParserOrEnumRuleCall();
 		}
 	)
 ;
 
-// Entry rule entryRuleSignalHandler
-entryRuleSignalHandler returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getSignalHandlerRule()); }
-	iv_ruleSignalHandler=ruleSignalHandler
-	{ $current=$iv_ruleSignalHandler.current; }
+// Entry rule entryRuleWatcherWithFileMask
+entryRuleWatcherWithFileMask returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getWatcherWithFileMaskRule()); }
+	iv_ruleWatcherWithFileMask=ruleWatcherWithFileMask
+	{ $current=$iv_ruleWatcherWithFileMask.current; }
 	EOF;
 
-// Rule SignalHandler
-ruleSignalHandler returns [EObject current=null]
+// Rule WatcherWithFileMask
+ruleWatcherWithFileMask returns [EObject current=null]
 @init {
 	enterRule();
 }
@@ -326,102 +370,107 @@
 		(
 			{
 				$current = forceCreateModelElement(
-					grammarAccess.getSignalHandlerAccess().getSignalHandlerAction_0(),
+					grammarAccess.getWatcherWithFileMaskAccess().getWatcherWithFileMaskAction_0(),
 					$current);
 			}
 		)
-		otherlv_1='handler'
+		otherlv_1='filemask'
 		{
-			newLeafNode(otherlv_1, grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1());
+			newLeafNode(otherlv_1, grammarAccess.getWatcherWithFileMaskAccess().getFilemaskKeyword_1());
 		}
 		(
 			(
+				lv_filemask_2_0=RULE_STRING
 				{
-					newCompositeNode(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+					newLeafNode(lv_filemask_2_0, grammarAccess.getWatcherWithFileMaskAccess().getFilemaskSTRINGTerminalRuleCall_2_0());
 				}
-				lv_name_2_0=ruleTRANSLATABLEID
 				{
 					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
+						$current = createModelElement(grammarAccess.getWatcherWithFileMaskRule());
 					}
-					set(
+					setWithLastConsumed(
 						$current,
-						"name",
-						lv_name_2_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.TRANSLATABLEID");
-					afterParserOrEnumRuleCall();
+						"filemask",
+						lv_filemask_2_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
 				}
 			)
 		)
 		(
 			(
 				{
-					newCompositeNode(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0());
+					newCompositeNode(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0());
 				}
-				lv_interchanges_3_0=ruleSignalDatainterchange
+				lv_executiontype_3_0=ruleSignalExecutionTypeEnum
 				{
 					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-					}
-					add(
-						$current,
-						"interchanges",
-						lv_interchanges_3_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
-					afterParserOrEnumRuleCall();
-				}
-			)
-		)*
-		(
-			(
-				{
-					newCompositeNode(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0());
-				}
-				lv_executiontype_4_0=ruleSignalExecutionTypeEnum
-				{
-					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
+						$current = createModelElementForParent(grammarAccess.getWatcherWithFileMaskRule());
 					}
 					set(
 						$current,
 						"executiontype",
-						lv_executiontype_4_0,
+						lv_executiontype_3_0,
 						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
 					afterParserOrEnumRuleCall();
 				}
 			)
 		)
+		otherlv_4='from'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getWatcherWithFileMaskAccess().getFromKeyword_4());
+		}
 		(
 			(
 				{
-					newCompositeNode(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0());
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getWatcherWithFileMaskRule());
+					}
 				}
-				lv_triggerpolicy_5_0=ruleTriggerPolicy
+				otherlv_5=RULE_ID
+				{
+					newLeafNode(otherlv_5, grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0());
+				}
+			)
+		)
+		otherlv_6='{'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getWatcherWithFileMaskAccess().getLeftCurlyBracketKeyword_6());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeSignalDatainterchangeParserRuleCall_7_0());
+				}
+				lv_interchange_7_0=ruleSignalDatainterchange
 				{
 					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
+						$current = createModelElementForParent(grammarAccess.getWatcherWithFileMaskRule());
 					}
 					set(
 						$current,
-						"triggerpolicy",
-						lv_triggerpolicy_5_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.TriggerPolicy");
+						"interchange",
+						lv_interchange_7_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
 					afterParserOrEnumRuleCall();
 				}
 			)
 		)
+		otherlv_8='}'
+		{
+			newLeafNode(otherlv_8, grammarAccess.getWatcherWithFileMaskAccess().getRightCurlyBracketKeyword_8());
+		}
 	)
 ;
 
-// Entry rule entryRuleTriggerPolicy
-entryRuleTriggerPolicy returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getTriggerPolicyRule()); }
-	iv_ruleTriggerPolicy=ruleTriggerPolicy
-	{ $current=$iv_ruleTriggerPolicy.current; }
+// Entry rule entryRuleWatcherWithFileName
+entryRuleWatcherWithFileName returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getWatcherWithFileNameRule()); }
+	iv_ruleWatcherWithFileName=ruleWatcherWithFileName
+	{ $current=$iv_ruleWatcherWithFileName.current; }
 	EOF;
 
-// Rule TriggerPolicy
-ruleTriggerPolicy returns [EObject current=null]
+// Rule WatcherWithFileName
+ruleWatcherWithFileName returns [EObject current=null]
 @init {
 	enterRule();
 }
@@ -429,64 +478,98 @@
 	leaveRule();
 }:
 	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getWatcherWithFileNameAccess().getWatcherWithFileNameAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='filename'
 		{
-			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0());
-		}
-		this_TriggerFile_0=ruleTriggerFile
-		{
-			$current = $this_TriggerFile_0.current;
-			afterParserOrEnumRuleCall();
-		}
-		    |
-		{
-			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1());
-		}
-		this_SignalScheduler_1=ruleSignalScheduler
-		{
-			$current = $this_SignalScheduler_1.current;
-			afterParserOrEnumRuleCall();
-		}
-	)
-;
-
-// Entry rule entryRuleTriggerFile
-entryRuleTriggerFile returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getTriggerFileRule()); }
-	iv_ruleTriggerFile=ruleTriggerFile
-	{ $current=$iv_ruleTriggerFile.current; }
-	EOF;
-
-// Rule TriggerFile
-ruleTriggerFile returns [EObject current=null]
-@init {
-	enterRule();
-}
-@after {
-	leaveRule();
-}:
-	(
-		otherlv_0='forFileMask'
-		{
-			newLeafNode(otherlv_0, grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0());
+			newLeafNode(otherlv_1, grammarAccess.getWatcherWithFileNameAccess().getFilenameKeyword_1());
 		}
 		(
 			(
-				lv_filemask_1_0=RULE_STRING
+				lv_filename_2_0=RULE_STRING
 				{
-					newLeafNode(lv_filemask_1_0, grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0());
+					newLeafNode(lv_filename_2_0, grammarAccess.getWatcherWithFileNameAccess().getFilenameSTRINGTerminalRuleCall_2_0());
 				}
 				{
 					if ($current==null) {
-						$current = createModelElement(grammarAccess.getTriggerFileRule());
+						$current = createModelElement(grammarAccess.getWatcherWithFileNameRule());
 					}
 					setWithLastConsumed(
 						$current,
-						"filemask",
-						lv_filemask_1_0,
+						"filename",
+						lv_filename_2_0,
 						"org.eclipse.xtext.xbase.Xtype.STRING");
 				}
 			)
 		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0());
+				}
+				lv_executiontype_3_0=ruleSignalExecutionTypeEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getWatcherWithFileNameRule());
+					}
+					set(
+						$current,
+						"executiontype",
+						lv_executiontype_3_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_4='from'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getWatcherWithFileNameAccess().getFromKeyword_4());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getWatcherWithFileNameRule());
+					}
+				}
+				otherlv_5=RULE_ID
+				{
+					newLeafNode(otherlv_5, grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0());
+				}
+			)
+		)
+		otherlv_6='{'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getWatcherWithFileNameAccess().getLeftCurlyBracketKeyword_6());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getWatcherWithFileNameAccess().getInterchangesSignalDatainterchangeParserRuleCall_7_0());
+				}
+				lv_interchanges_7_0=ruleSignalDatainterchange
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getWatcherWithFileNameRule());
+					}
+					add(
+						$current,
+						"interchanges",
+						lv_interchanges_7_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_8='}'
+		{
+			newLeafNode(otherlv_8, grammarAccess.getWatcherWithFileNameAccess().getRightCurlyBracketKeyword_8());
+		}
 	)
 ;
 
@@ -506,41 +589,130 @@
 	leaveRule();
 }:
 	(
-		otherlv_0='scheduleFor'
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getSignalSchedulerAccess().getSignalSchedulerAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='scheduler'
 		{
-			newLeafNode(otherlv_0, grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0());
+			newLeafNode(otherlv_1, grammarAccess.getSignalSchedulerAccess().getSchedulerKeyword_1());
 		}
 		(
 			(
 				{
-					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0());
+					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
 				}
-				lv_scheduler_1_0=ruleScheduler
+				lv_name_2_0=ruleTRANSLATABLEID
 				{
 					if ($current==null) {
 						$current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
 					}
 					set(
 						$current,
-						"scheduler",
-						lv_scheduler_1_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.Scheduler");
+						"name",
+						lv_name_2_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.TRANSLATABLEID");
 					afterParserOrEnumRuleCall();
 				}
 			)
 		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getSchedulertypeSchedulerTypeParserRuleCall_3_0());
+				}
+				lv_schedulertype_3_0=ruleSchedulerType
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+					}
+					set(
+						$current,
+						"schedulertype",
+						lv_schedulertype_3_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.SchedulerType");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0());
+				}
+				lv_executiontype_4_0=ruleSignalExecutionTypeEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+					}
+					set(
+						$current,
+						"executiontype",
+						lv_executiontype_4_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		otherlv_5='from'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getSignalSchedulerAccess().getFromKeyword_5());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getSignalSchedulerRule());
+					}
+				}
+				otherlv_6=RULE_ID
+				{
+					newLeafNode(otherlv_6, grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupCrossReference_6_0());
+				}
+			)
+		)
+		otherlv_7='{'
+		{
+			newLeafNode(otherlv_7, grammarAccess.getSignalSchedulerAccess().getLeftCurlyBracketKeyword_7());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getInterchangesSignalDatainterchangeParserRuleCall_8_0());
+				}
+				lv_interchanges_8_0=ruleSignalDatainterchange
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+					}
+					add(
+						$current,
+						"interchanges",
+						lv_interchanges_8_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_9='}'
+		{
+			newLeafNode(otherlv_9, grammarAccess.getSignalSchedulerAccess().getRightCurlyBracketKeyword_9());
+		}
 	)
 ;
 
-// Entry rule entryRuleScheduler
-entryRuleScheduler returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getSchedulerRule()); }
-	iv_ruleScheduler=ruleScheduler
-	{ $current=$iv_ruleScheduler.current; }
+// Entry rule entryRuleSchedulerType
+entryRuleSchedulerType returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getSchedulerTypeRule()); }
+	iv_ruleSchedulerType=ruleSchedulerType
+	{ $current=$iv_ruleSchedulerType.current; }
 	EOF;
 
-// Rule Scheduler
-ruleScheduler returns [EObject current=null]
+// Rule SchedulerType
+ruleSchedulerType returns [EObject current=null]
 @init {
 	enterRule();
 }
@@ -549,7 +721,7 @@
 }:
 	(
 		{
-			newCompositeNode(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0());
+			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getCronSchedulerParserRuleCall_0());
 		}
 		this_CronScheduler_0=ruleCronScheduler
 		{
@@ -558,7 +730,7 @@
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1());
+			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getHourlySchedulerParserRuleCall_1());
 		}
 		this_HourlyScheduler_1=ruleHourlyScheduler
 		{
@@ -567,7 +739,7 @@
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2());
+			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getDailySchedulerParserRuleCall_2());
 		}
 		this_DailyScheduler_2=ruleDailyScheduler
 		{
@@ -576,7 +748,7 @@
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3());
+			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getWeeklySchedulerParserRuleCall_3());
 		}
 		this_WeeklyScheduler_3=ruleWeeklyScheduler
 		{
@@ -585,7 +757,7 @@
 		}
 		    |
 		{
-			newCompositeNode(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4());
+			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getMonthlySchedulerParserRuleCall_4());
 		}
 		this_MonthlyScheduler_4=ruleMonthlyScheduler
 		{
@@ -652,9 +824,9 @@
 	leaveRule();
 }:
 	(
-		otherlv_0='hourlyAt'
+		otherlv_0='hourlyat'
 		{
-			newLeafNode(otherlv_0, grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0());
+			newLeafNode(otherlv_0, grammarAccess.getHourlySchedulerAccess().getHourlyatKeyword_0());
 		}
 		(
 			(
@@ -693,9 +865,9 @@
 	leaveRule();
 }:
 	(
-		otherlv_0='dailyAt'
+		otherlv_0='dailyat'
 		{
-			newLeafNode(otherlv_0, grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0());
+			newLeafNode(otherlv_0, grammarAccess.getDailySchedulerAccess().getDailyatKeyword_0());
 		}
 		(
 			(
@@ -756,9 +928,9 @@
 	leaveRule();
 }:
 	(
-		otherlv_0='weeklyOn'
+		otherlv_0='weeklyon'
 		{
-			newLeafNode(otherlv_0, grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0());
+			newLeafNode(otherlv_0, grammarAccess.getWeeklySchedulerAccess().getWeeklyonKeyword_0());
 		}
 		(
 			(
@@ -842,9 +1014,9 @@
 	leaveRule();
 }:
 	(
-		otherlv_0='monthlyOn'
+		otherlv_0='monthlyon'
 		{
-			newLeafNode(otherlv_0, grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0());
+			newLeafNode(otherlv_0, grammarAccess.getMonthlySchedulerAccess().getMonthlyonKeyword_0());
 		}
 		(
 			(
@@ -959,28 +1131,20 @@
 				}
 			)
 		)
-		otherlv_2='fileName'
-		{
-			newLeafNode(otherlv_2, grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2());
-		}
 		(
 			(
-				lv_fileName_3_0=RULE_STRING
+				lv_baseinterchange_2_0='applyon'
 				{
-					newLeafNode(lv_fileName_3_0, grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0());
+					newLeafNode(lv_baseinterchange_2_0, grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0());
 				}
 				{
 					if ($current==null) {
 						$current = createModelElement(grammarAccess.getSignalDatainterchangeRule());
 					}
-					setWithLastConsumed(
-						$current,
-						"fileName",
-						lv_fileName_3_0,
-						"org.eclipse.xtext.xbase.Xtype.STRING");
+					setWithLastConsumed($current, "baseinterchange", true, "applyon");
 				}
 			)
-		)
+		)?
 	)
 ;
 
@@ -7879,7 +8043,7 @@
 }:
 	(
 		(
-			enumLiteral_0='Import'
+			enumLiteral_0='import'
 			{
 				$current = grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
 				newLeafNode(enumLiteral_0, grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0());
@@ -7887,7 +8051,7 @@
 		)
 		    |
 		(
-			enumLiteral_1='Export'
+			enumLiteral_1='export'
 			{
 				$current = grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
 				newLeafNode(enumLiteral_1, grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1());
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens
index d0c6d23..fb70722 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens
@@ -39,60 +39,59 @@
 '?.'=75
 '?:'=63
 '@'=35
-'Export'=103
-'Import'=102
 '['=41
 ']'=42
+'applyon'=28
 'as'=70
 'at'=26
 'case'=81
 'catch'=99
 'cron'=21
-'dailyAt'=23
+'dailyat'=23
 'default'=80
-'directory'=17
 'do'=84
 'else'=78
+'export'=102
 'extends'=87
 'extension'=31
 'false'=90
-'fileName'=28
+'filemask'=17
+'filename'=19
 'finally'=97
 'for'=82
-'forFileMask'=19
-'friday'=111
-'handler'=18
-'hourlyAt'=22
+'friday'=110
+'from'=18
+'hourlyat'=22
 'if'=77
 'import'=29
 'instanceof'=57
-'monday'=107
-'monthlyOn'=27
+'monday'=106
+'monthlyon'=27
 'new'=89
 'ns'=33
 'null'=92
 'package'=13
-'parallel'=105
+'parallel'=104
 'return'=95
-'saturday'=112
-'scheduleFor'=20
-'sequential'=104
+'saturday'=111
+'scheduler'=20
+'sequential'=103
 'static'=30
-'sunday'=106
+'sunday'=105
 'super'=88
 'switch'=79
 'synchronized'=98
 'throw'=94
-'thursday'=110
+'thursday'=109
 'true'=91
 'try'=96
-'tuesday'=108
+'tuesday'=107
 'typeof'=93
 'val'=86
 'var'=85
 'watcher'=16
-'wednesday'=109
-'weeklyOn'=25
+'wednesday'=108
+'weeklyon'=25
 'while'=83
 '{'=14
 '|'=76
@@ -101,8 +100,8 @@
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
 RULE_HEX=7
-RULE_ID=6
-RULE_INT=5
+RULE_ID=5
+RULE_INT=6
 RULE_ML_COMMENT=9
 RULE_SL_COMMENT=10
 RULE_STRING=4
@@ -119,7 +118,6 @@
 T__109=109
 T__110=110
 T__111=111
-T__112=112
 T__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java
index 02770d8..b628445 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java
@@ -1,18 +1,3 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
 package org.eclipse.osbp.xtext.signal.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -40,8 +25,8 @@
     public static final int T__54=54;
     public static final int T__60=60;
     public static final int T__61=61;
-    public static final int RULE_ID=6;
-    public static final int RULE_INT=5;
+    public static final int RULE_ID=5;
+    public static final int RULE_INT=6;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
@@ -121,7 +106,6 @@
     public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
-    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
@@ -238,10 +222,10 @@
         try {
             int _type = T__17;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:15:7: ( 'directory' )
-            // InternalSignalDSL.g:15:9: 'directory'
+            // InternalSignalDSL.g:15:7: ( 'filemask' )
+            // InternalSignalDSL.g:15:9: 'filemask'
             {
-            match("directory"); 
+            match("filemask"); 
 
 
             }
@@ -259,10 +243,10 @@
         try {
             int _type = T__18;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:16:7: ( 'handler' )
-            // InternalSignalDSL.g:16:9: 'handler'
+            // InternalSignalDSL.g:16:7: ( 'from' )
+            // InternalSignalDSL.g:16:9: 'from'
             {
-            match("handler"); 
+            match("from"); 
 
 
             }
@@ -280,10 +264,10 @@
         try {
             int _type = T__19;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:17:7: ( 'forFileMask' )
-            // InternalSignalDSL.g:17:9: 'forFileMask'
+            // InternalSignalDSL.g:17:7: ( 'filename' )
+            // InternalSignalDSL.g:17:9: 'filename'
             {
-            match("forFileMask"); 
+            match("filename"); 
 
 
             }
@@ -301,10 +285,10 @@
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:18:7: ( 'scheduleFor' )
-            // InternalSignalDSL.g:18:9: 'scheduleFor'
+            // InternalSignalDSL.g:18:7: ( 'scheduler' )
+            // InternalSignalDSL.g:18:9: 'scheduler'
             {
-            match("scheduleFor"); 
+            match("scheduler"); 
 
 
             }
@@ -343,10 +327,10 @@
         try {
             int _type = T__22;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20:7: ( 'hourlyAt' )
-            // InternalSignalDSL.g:20:9: 'hourlyAt'
+            // InternalSignalDSL.g:20:7: ( 'hourlyat' )
+            // InternalSignalDSL.g:20:9: 'hourlyat'
             {
-            match("hourlyAt"); 
+            match("hourlyat"); 
 
 
             }
@@ -364,10 +348,10 @@
         try {
             int _type = T__23;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21:7: ( 'dailyAt' )
-            // InternalSignalDSL.g:21:9: 'dailyAt'
+            // InternalSignalDSL.g:21:7: ( 'dailyat' )
+            // InternalSignalDSL.g:21:9: 'dailyat'
             {
-            match("dailyAt"); 
+            match("dailyat"); 
 
 
             }
@@ -405,10 +389,10 @@
         try {
             int _type = T__25;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:23:7: ( 'weeklyOn' )
-            // InternalSignalDSL.g:23:9: 'weeklyOn'
+            // InternalSignalDSL.g:23:7: ( 'weeklyon' )
+            // InternalSignalDSL.g:23:9: 'weeklyon'
             {
-            match("weeklyOn"); 
+            match("weeklyon"); 
 
 
             }
@@ -447,10 +431,10 @@
         try {
             int _type = T__27;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:25:7: ( 'monthlyOn' )
-            // InternalSignalDSL.g:25:9: 'monthlyOn'
+            // InternalSignalDSL.g:25:7: ( 'monthlyon' )
+            // InternalSignalDSL.g:25:9: 'monthlyon'
             {
-            match("monthlyOn"); 
+            match("monthlyon"); 
 
 
             }
@@ -468,10 +452,10 @@
         try {
             int _type = T__28;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:26:7: ( 'fileName' )
-            // InternalSignalDSL.g:26:9: 'fileName'
+            // InternalSignalDSL.g:26:7: ( 'applyon' )
+            // InternalSignalDSL.g:26:9: 'applyon'
             {
-            match("fileName"); 
+            match("applyon"); 
 
 
             }
@@ -2001,10 +1985,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:100:8: ( 'Import' )
-            // InternalSignalDSL.g:100:10: 'Import'
+            // InternalSignalDSL.g:100:8: ( 'export' )
+            // InternalSignalDSL.g:100:10: 'export'
             {
-            match("Import"); 
+            match("export"); 
 
 
             }
@@ -2022,10 +2006,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:101:8: ( 'Export' )
-            // InternalSignalDSL.g:101:10: 'Export'
+            // InternalSignalDSL.g:101:8: ( 'sequential' )
+            // InternalSignalDSL.g:101:10: 'sequential'
             {
-            match("Export"); 
+            match("sequential"); 
 
 
             }
@@ -2043,10 +2027,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:102:8: ( 'sequential' )
-            // InternalSignalDSL.g:102:10: 'sequential'
+            // InternalSignalDSL.g:102:8: ( 'parallel' )
+            // InternalSignalDSL.g:102:10: 'parallel'
             {
-            match("sequential"); 
+            match("parallel"); 
 
 
             }
@@ -2064,10 +2048,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:103:8: ( 'parallel' )
-            // InternalSignalDSL.g:103:10: 'parallel'
+            // InternalSignalDSL.g:103:8: ( 'sunday' )
+            // InternalSignalDSL.g:103:10: 'sunday'
             {
-            match("parallel"); 
+            match("sunday"); 
 
 
             }
@@ -2085,10 +2069,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:104:8: ( 'sunday' )
-            // InternalSignalDSL.g:104:10: 'sunday'
+            // InternalSignalDSL.g:104:8: ( 'monday' )
+            // InternalSignalDSL.g:104:10: 'monday'
             {
-            match("sunday"); 
+            match("monday"); 
 
 
             }
@@ -2106,10 +2090,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:105:8: ( 'monday' )
-            // InternalSignalDSL.g:105:10: 'monday'
+            // InternalSignalDSL.g:105:8: ( 'tuesday' )
+            // InternalSignalDSL.g:105:10: 'tuesday'
             {
-            match("monday"); 
+            match("tuesday"); 
 
 
             }
@@ -2127,10 +2111,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:106:8: ( 'tuesday' )
-            // InternalSignalDSL.g:106:10: 'tuesday'
+            // InternalSignalDSL.g:106:8: ( 'wednesday' )
+            // InternalSignalDSL.g:106:10: 'wednesday'
             {
-            match("tuesday"); 
+            match("wednesday"); 
 
 
             }
@@ -2148,10 +2132,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:107:8: ( 'wednesday' )
-            // InternalSignalDSL.g:107:10: 'wednesday'
+            // InternalSignalDSL.g:107:8: ( 'thursday' )
+            // InternalSignalDSL.g:107:10: 'thursday'
             {
-            match("wednesday"); 
+            match("thursday"); 
 
 
             }
@@ -2169,10 +2153,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:108:8: ( 'thursday' )
-            // InternalSignalDSL.g:108:10: 'thursday'
+            // InternalSignalDSL.g:108:8: ( 'friday' )
+            // InternalSignalDSL.g:108:10: 'friday'
             {
-            match("thursday"); 
+            match("friday"); 
 
 
             }
@@ -2190,29 +2174,8 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:109:8: ( 'friday' )
-            // InternalSignalDSL.g:109:10: 'friday'
-            {
-            match("friday"); 
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "T__111"
-
-    // $ANTLR start "T__112"
-    public final void mT__112() throws RecognitionException {
-        try {
-            int _type = T__112;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:110:8: ( 'saturday' )
-            // InternalSignalDSL.g:110:10: 'saturday'
+            // InternalSignalDSL.g:109:8: ( 'saturday' )
+            // InternalSignalDSL.g:109:10: 'saturday'
             {
             match("saturday"); 
 
@@ -2225,17 +2188,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__112"
+    // $ANTLR end "T__111"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7993:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalSignalDSL.g:7993:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:8157:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalSignalDSL.g:8157:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalSignalDSL.g:7993:12: ( '0x' | '0X' )
+            // InternalSignalDSL.g:8157:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2263,7 +2226,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalSignalDSL.g:7993:13: '0x'
+                    // InternalSignalDSL.g:8157:13: '0x'
                     {
                     match("0x"); 
 
@@ -2271,7 +2234,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7993:18: '0X'
+                    // InternalSignalDSL.g:8157:18: '0X'
                     {
                     match("0X"); 
 
@@ -2281,7 +2244,7 @@
 
             }
 
-            // InternalSignalDSL.g:7993:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalSignalDSL.g:8157:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2319,7 +2282,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalSignalDSL.g:7993:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:8157:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2328,10 +2291,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalSignalDSL.g:7993:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:8157:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalSignalDSL.g:7993:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:8157:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2349,7 +2312,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalSignalDSL.g:7993:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalSignalDSL.g:8157:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2373,7 +2336,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:7993:84: ( 'l' | 'L' )
+                            // InternalSignalDSL.g:8157:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2412,11 +2375,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7995:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalSignalDSL.g:7995:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:8159:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalSignalDSL.g:8159:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalSignalDSL.g:7995:21: ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:8159:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2465,11 +2428,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7997:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalSignalDSL.g:7997:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:8161:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalSignalDSL.g:8161:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalSignalDSL.g:7997:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalSignalDSL.g:8161:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2478,7 +2441,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalSignalDSL.g:7997:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalSignalDSL.g:8161:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2489,7 +2452,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalSignalDSL.g:7997:36: ( '+' | '-' )?
+                    // InternalSignalDSL.g:8161:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2522,7 +2485,7 @@
 
             }
 
-            // InternalSignalDSL.g:7997:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:8161:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2534,7 +2497,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalSignalDSL.g:7997:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalSignalDSL.g:8161:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2558,7 +2521,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7997:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalSignalDSL.g:8161:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
                     {
                     if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
                         input.consume();
@@ -2591,10 +2554,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7999:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalSignalDSL.g:7999:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:8163:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalSignalDSL.g:8163:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalSignalDSL.g:7999:11: ( '^' )?
+            // InternalSignalDSL.g:8163:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2603,7 +2566,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalSignalDSL.g:7999:11: '^'
+                    // InternalSignalDSL.g:8163:11: '^'
                     {
                     match('^'); 
 
@@ -2621,7 +2584,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalSignalDSL.g:7999:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:8163:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2670,10 +2633,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:8001:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalSignalDSL.g:8001:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:8165:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalSignalDSL.g:8165:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalSignalDSL.g:8001:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:8165:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2691,10 +2654,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalSignalDSL.g:8001:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalSignalDSL.g:8165:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalSignalDSL.g:8001:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalSignalDSL.g:8165:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2710,7 +2673,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:8001:21: '\\\\' .
+                    	    // InternalSignalDSL.g:8165:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2718,7 +2681,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:8001:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalSignalDSL.g:8165:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2738,7 +2701,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:8001:44: ( '\"' )?
+                    // InternalSignalDSL.g:8165:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2747,7 +2710,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalSignalDSL.g:8001:44: '\"'
+                            // InternalSignalDSL.g:8165:44: '\"'
                             {
                             match('\"'); 
 
@@ -2760,10 +2723,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:8001:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalSignalDSL.g:8165:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalSignalDSL.g:8001:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalSignalDSL.g:8165:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -2779,7 +2742,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:8001:55: '\\\\' .
+                    	    // InternalSignalDSL.g:8165:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2787,7 +2750,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:8001:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalSignalDSL.g:8165:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2807,7 +2770,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:8001:79: ( '\\'' )?
+                    // InternalSignalDSL.g:8165:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2816,7 +2779,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalSignalDSL.g:8001:79: '\\''
+                            // InternalSignalDSL.g:8165:79: '\\''
                             {
                             match('\''); 
 
@@ -2847,12 +2810,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:8003:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalSignalDSL.g:8003:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalSignalDSL.g:8167:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalSignalDSL.g:8167:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalSignalDSL.g:8003:24: ( options {greedy=false; } : . )*
+            // InternalSignalDSL.g:8167:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2877,7 +2840,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalSignalDSL.g:8003:52: .
+            	    // InternalSignalDSL.g:8167:52: .
             	    {
             	    matchAny(); 
 
@@ -2907,12 +2870,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:8005:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalSignalDSL.g:8005:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:8169:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalSignalDSL.g:8169:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalSignalDSL.g:8005:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalSignalDSL.g:8169:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -2925,7 +2888,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalSignalDSL.g:8005:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalSignalDSL.g:8169: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();
@@ -2945,7 +2908,7 @@
                 }
             } while (true);
 
-            // InternalSignalDSL.g:8005:40: ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:8169:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -2954,9 +2917,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalSignalDSL.g:8005:41: ( '\\r' )? '\\n'
+                    // InternalSignalDSL.g:8169:41: ( '\\r' )? '\\n'
                     {
-                    // InternalSignalDSL.g:8005:41: ( '\\r' )?
+                    // InternalSignalDSL.g:8169:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -2965,7 +2928,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalSignalDSL.g:8005:41: '\\r'
+                            // InternalSignalDSL.g:8169:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2997,10 +2960,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:8007:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalSignalDSL.g:8007:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:8171:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalSignalDSL.g:8171:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalSignalDSL.g:8007:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:8171:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3054,8 +3017,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:8009:16: ( . )
-            // InternalSignalDSL.g:8009:18: .
+            // InternalSignalDSL.g:8173:16: ( . )
+            // InternalSignalDSL.g:8173:18: .
             {
             matchAny(); 
 
@@ -3070,8 +3033,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalSignalDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=109;
+        // InternalSignalDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=108;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -3768,70 +3731,63 @@
                 }
                 break;
             case 100 :
-                // InternalSignalDSL.g:1:616: T__112
-                {
-                mT__112(); 
-
-                }
-                break;
-            case 101 :
-                // InternalSignalDSL.g:1:623: RULE_HEX
+                // InternalSignalDSL.g:1:616: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 102 :
-                // InternalSignalDSL.g:1:632: RULE_INT
+            case 101 :
+                // InternalSignalDSL.g:1:625: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 103 :
-                // InternalSignalDSL.g:1:641: RULE_DECIMAL
+            case 102 :
+                // InternalSignalDSL.g:1:634: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 104 :
-                // InternalSignalDSL.g:1:654: RULE_ID
+            case 103 :
+                // InternalSignalDSL.g:1:647: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 105 :
-                // InternalSignalDSL.g:1:662: RULE_STRING
+            case 104 :
+                // InternalSignalDSL.g:1:655: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 106 :
-                // InternalSignalDSL.g:1:674: RULE_ML_COMMENT
+            case 105 :
+                // InternalSignalDSL.g:1:667: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 107 :
-                // InternalSignalDSL.g:1:690: RULE_SL_COMMENT
+            case 106 :
+                // InternalSignalDSL.g:1:683: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 108 :
-                // InternalSignalDSL.g:1:706: RULE_WS
+            case 107 :
+                // InternalSignalDSL.g:1:699: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 109 :
-                // InternalSignalDSL.g:1:714: RULE_ANY_OTHER
+            case 108 :
+                // InternalSignalDSL.g:1:707: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3845,176 +3801,177 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\63\2\uffff\6\63\1\115\4\63\1\130\1\63\5\uffff\1\143\3\uffff\1\151\1\155\1\161\1\163\1\165\1\167\1\171\1\173\1\175\1\177\1\u0082\5\63\2\u008d\1\61\5\uffff\1\63\3\uffff\6\63\1\u009a\17\63\2\uffff\1\u00ad\1\u00ae\3\63\1\u00b2\2\63\3\uffff\1\u00b5\2\63\5\uffff\1\u00b9\32\uffff\1\u00bb\1\uffff\1\u00bd\4\uffff\10\63\1\uffff\1\u008d\4\uffff\11\63\1\uffff\2\63\1\u00d5\17\63\2\uffff\3\63\1\uffff\2\63\1\uffff\1\u00eb\1\63\6\uffff\1\u00ed\1\u00ee\1\63\1\u00f0\23\63\1\uffff\14\63\1\u0110\1\u0111\6\63\1\u0118\1\uffff\1\u0119\2\uffff\1\u011a\1\uffff\14\63\1\u0127\10\63\1\u0130\4\63\1\u0135\4\63\2\uffff\1\u013a\5\63\3\uffff\1\63\1\u0142\12\63\1\uffff\10\63\1\uffff\1\u0155\1\63\1\u0157\1\u0158\1\uffff\1\u0159\3\63\1\uffff\1\63\1\u015e\1\u015f\3\63\1\u0163\1\uffff\2\63\1\u0166\1\u0167\1\u0168\1\u0169\1\63\1\u016b\3\63\1\u016f\1\u0170\1\u0171\3\63\1\u0175\1\uffff\1\63\3\uffff\4\63\2\uffff\2\63\1\u017d\1\uffff\1\63\1\u017f\4\uffff\1\u0180\1\uffff\1\u0181\2\63\3\uffff\1\u0184\1\63\1\u0186\1\uffff\3\63\1\u018a\3\63\1\uffff\1\u018e\3\uffff\1\u018f\1\u0190\1\uffff\1\63\1\uffff\3\63\1\uffff\1\u0195\1\63\1\u0197\3\uffff\3\63\1\u019b\1\uffff\1\u019c\1\uffff\1\u019d\1\u019e\1\63\4\uffff\1\u01a0\1\uffff";
+        "\1\uffff\1\61\2\uffff\6\61\1\111\4\61\1\125\1\61\5\uffff\1\140\3\uffff\1\146\1\152\1\156\1\160\1\162\1\164\1\166\1\170\1\172\1\174\1\177\3\61\2\u0088\1\57\5\uffff\1\61\3\uffff\23\61\1\u00a6\2\uffff\1\u00a7\1\61\1\u00a9\3\61\1\u00ad\2\61\3\uffff\1\u00b1\2\61\5\uffff\1\u00b5\32\uffff\1\u00b7\1\uffff\1\u00b9\4\uffff\6\61\1\uffff\1\u0088\4\uffff\12\61\1\u00cd\17\61\2\uffff\1\61\1\uffff\3\61\1\uffff\3\61\1\uffff\1\u00e5\1\61\6\uffff\1\u00e7\1\u00e8\1\61\1\u00ea\15\61\1\u00f9\1\61\1\uffff\11\61\1\u0104\1\u0105\13\61\1\u0111\1\uffff\1\u0112\2\uffff\1\u0113\1\uffff\12\61\1\u011e\3\61\1\uffff\1\61\1\u0123\3\61\1\u0127\4\61\2\uffff\1\u012c\12\61\3\uffff\1\61\1\u0139\10\61\1\uffff\3\61\1\u0145\1\uffff\1\61\1\u0147\1\u0148\1\uffff\1\u0149\3\61\1\uffff\5\61\1\u0152\1\u0153\3\61\1\u0157\1\u0158\1\uffff\2\61\1\u015b\1\u015c\1\61\1\u015e\4\61\1\u0163\1\uffff\1\61\3\uffff\4\61\1\u0169\1\u016a\1\u016b\1\61\2\uffff\2\61\1\u016f\2\uffff\1\61\1\u0171\2\uffff\1\u0172\1\uffff\1\u0173\1\61\1\u0175\1\u0176\1\uffff\3\61\1\u017a\1\u017b\3\uffff\3\61\1\uffff\1\u017f\3\uffff\1\u0180\2\uffff\1\u0181\2\61\2\uffff\1\u0184\1\61\1\u0186\3\uffff\1\61\1\u0188\1\uffff\1\u0189\1\uffff\1\61\2\uffff\1\u018b\1\uffff";
     static final String DFA21_eofS =
-        "\u01a1\uffff";
+        "\u018c\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\6\141\1\72\1\163\1\157\1\146\1\154\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\141\1\150\1\145\1\155\1\170\2\60\1\44\5\uffff\1\143\3\uffff\1\164\1\144\1\151\1\162\1\151\1\146\1\44\1\156\1\165\1\162\2\154\1\151\1\150\1\141\1\151\2\156\1\161\1\164\1\157\1\163\2\uffff\2\44\1\156\1\160\1\163\1\44\1\164\1\163\3\uffff\1\44\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\154\1\165\1\160\1\162\1\145\1\164\2\160\1\uffff\1\60\4\uffff\1\153\1\141\1\143\1\153\1\156\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\44\1\145\1\141\1\163\1\144\1\145\2\164\1\145\1\144\1\143\2\165\1\156\1\145\1\143\2\uffff\1\144\1\157\1\164\1\uffff\2\145\1\uffff\1\44\1\154\6\uffff\2\44\1\145\1\44\1\145\1\157\1\162\1\163\1\165\2\157\1\141\1\154\1\150\1\154\2\145\1\143\1\171\1\165\2\154\1\151\1\uffff\1\116\1\154\1\145\1\141\1\144\1\151\1\143\1\162\1\141\1\150\1\145\1\162\2\44\2\150\1\141\1\162\1\141\1\156\1\44\1\uffff\1\44\2\uffff\1\44\1\uffff\1\157\1\167\1\163\1\144\3\162\1\147\1\154\1\145\1\171\1\163\1\44\1\164\1\101\1\154\1\145\1\171\1\154\1\141\1\154\1\44\1\171\1\165\1\143\1\150\1\44\1\171\1\162\1\156\1\144\2\uffff\1\44\1\154\1\171\1\164\1\156\1\144\3\uffff\1\146\1\44\1\144\1\141\1\156\2\164\2\145\1\162\1\117\1\144\1\uffff\1\157\2\164\1\162\1\101\1\145\1\155\1\171\1\uffff\1\44\1\154\2\44\1\uffff\1\44\1\157\1\164\1\141\1\uffff\1\171\2\44\1\143\1\151\1\163\1\44\1\uffff\1\141\1\171\4\44\1\154\1\44\1\156\1\141\1\162\3\44\1\164\1\115\1\145\1\44\1\uffff\1\145\3\uffff\1\156\1\151\1\171\1\117\2\uffff\1\145\1\157\1\44\1\uffff\1\171\1\44\4\uffff\1\44\1\uffff\1\44\2\171\3\uffff\1\44\1\141\1\44\1\uffff\1\106\1\151\1\141\1\44\1\156\1\157\1\156\1\uffff\1\44\3\uffff\2\44\1\uffff\1\163\1\uffff\1\157\1\172\1\154\1\uffff\1\44\1\146\1\44\3\uffff\1\153\1\162\1\145\1\44\1\uffff\1\44\1\uffff\2\44\1\144\4\uffff\1\44\1\uffff";
+        "\1\0\1\141\2\uffff\4\141\1\157\1\141\1\72\1\160\1\157\1\146\1\154\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\141\1\150\1\145\2\60\1\44\5\uffff\1\143\3\uffff\1\164\1\144\1\151\1\154\1\151\1\162\1\154\1\150\1\141\1\151\2\156\1\161\1\164\1\157\1\163\1\165\1\151\1\146\1\44\2\uffff\1\44\1\160\1\44\1\156\1\160\1\163\1\44\1\160\1\163\3\uffff\1\44\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\154\1\165\1\160\1\162\1\145\1\164\1\uffff\1\60\4\uffff\1\153\1\141\1\143\1\153\1\156\1\154\1\145\1\141\1\155\1\144\1\44\1\163\1\145\2\164\1\145\1\144\1\143\2\165\1\156\1\145\1\143\1\162\1\154\1\141\2\uffff\1\154\1\uffff\1\144\1\157\1\164\1\uffff\1\145\1\157\1\145\1\uffff\1\44\1\154\6\uffff\2\44\1\145\1\44\1\145\1\157\1\162\1\163\1\165\1\141\1\154\1\150\1\154\2\145\1\155\1\154\1\44\1\141\1\uffff\1\145\1\144\1\151\1\143\1\162\1\141\1\150\1\145\1\162\2\44\1\150\1\154\1\171\1\165\1\171\1\150\1\141\1\162\1\141\1\156\1\162\1\44\1\uffff\1\44\2\uffff\1\44\1\uffff\1\157\1\167\1\163\1\144\1\162\1\147\1\154\1\145\1\171\1\163\1\44\2\141\1\154\1\uffff\1\171\1\44\1\165\1\143\1\150\1\44\1\171\1\162\1\156\1\144\2\uffff\1\44\1\171\1\141\1\154\1\157\1\154\1\171\1\164\1\156\1\144\1\164\3\uffff\1\146\1\44\1\144\1\141\1\156\2\145\1\162\1\157\1\144\1\uffff\1\163\1\155\1\171\1\44\1\uffff\1\154\2\44\1\uffff\1\44\1\157\1\164\1\141\1\uffff\1\141\2\164\1\156\1\171\2\44\1\143\1\151\1\163\2\44\1\uffff\1\141\1\171\2\44\1\154\1\44\1\156\1\141\1\153\1\145\1\44\1\uffff\1\145\3\uffff\1\156\1\151\1\171\1\164\3\44\1\157\2\uffff\1\145\1\157\1\44\2\uffff\1\171\1\44\2\uffff\1\44\1\uffff\1\44\1\171\2\44\1\uffff\1\162\1\151\1\141\2\44\3\uffff\1\156\1\157\1\156\1\uffff\1\44\3\uffff\1\44\2\uffff\1\44\1\172\1\154\2\uffff\1\44\1\146\1\44\3\uffff\1\145\1\44\1\uffff\1\44\1\uffff\1\144\2\uffff\1\44\1\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\141\2\uffff\1\150\2\157\1\162\1\171\1\162\1\72\1\164\1\157\1\156\1\170\1\75\1\165\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\141\1\171\1\145\1\155\2\170\1\154\1\172\5\uffff\1\162\3\uffff\1\164\1\145\1\151\1\162\1\151\1\146\1\172\1\156\1\165\1\162\1\156\1\154\1\151\1\150\1\141\1\151\1\160\1\156\1\161\1\164\1\157\1\164\2\uffff\2\172\1\156\1\160\1\163\1\172\1\164\1\163\3\uffff\1\172\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\162\1\171\1\160\1\165\1\145\1\164\2\160\1\uffff\1\154\4\uffff\1\153\1\141\1\143\1\153\1\156\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\172\1\145\1\141\1\163\1\144\1\145\2\164\1\145\1\144\1\143\2\165\1\156\1\145\1\143\2\uffff\1\164\1\157\1\164\1\uffff\2\145\1\uffff\1\172\1\154\6\uffff\2\172\1\145\1\172\1\145\1\157\1\162\1\163\1\165\2\157\1\141\1\154\1\150\1\154\2\145\1\143\1\171\1\165\2\154\1\151\1\uffff\1\116\1\154\1\145\1\141\1\144\1\151\1\143\1\162\1\141\1\150\1\145\1\162\2\172\2\150\1\141\1\162\1\141\1\156\1\172\1\uffff\1\172\2\uffff\1\172\1\uffff\1\157\1\167\1\163\1\144\3\162\1\147\1\154\1\145\1\171\1\163\1\172\1\164\1\101\1\154\1\145\1\171\1\154\1\141\1\154\1\172\1\171\1\165\1\143\1\150\1\172\1\171\1\162\1\156\1\144\2\uffff\1\172\1\154\1\171\1\164\1\156\1\163\3\uffff\1\146\1\172\1\144\1\141\1\156\2\164\2\145\1\162\1\117\1\144\1\uffff\1\157\2\164\1\162\1\101\1\145\1\155\1\171\1\uffff\1\172\1\154\2\172\1\uffff\1\172\1\157\1\164\1\141\1\uffff\1\171\2\172\1\143\1\151\1\163\1\172\1\uffff\1\141\1\171\4\172\1\154\1\172\1\156\1\141\1\162\3\172\1\164\1\115\1\145\1\172\1\uffff\1\145\3\uffff\1\156\1\151\1\171\1\117\2\uffff\1\145\1\157\1\172\1\uffff\1\171\1\172\4\uffff\1\172\1\uffff\1\172\2\171\3\uffff\1\172\1\141\1\172\1\uffff\1\106\1\151\1\141\1\172\1\156\1\157\1\156\1\uffff\1\172\3\uffff\2\172\1\uffff\1\163\1\uffff\1\157\1\172\1\154\1\uffff\1\172\1\146\1\172\3\uffff\1\153\1\162\1\145\1\172\1\uffff\1\172\1\uffff\2\172\1\144\4\uffff\1\172\1\uffff";
+        "\1\uffff\1\141\2\uffff\1\150\1\162\1\171\1\162\2\157\1\72\1\164\1\157\1\156\1\170\1\75\1\165\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\141\1\171\1\145\1\170\1\154\1\172\5\uffff\1\162\3\uffff\1\164\1\145\1\151\1\156\1\157\1\162\1\154\1\150\1\141\1\151\1\160\1\156\1\161\1\164\1\157\1\164\1\165\1\151\1\146\1\172\2\uffff\1\172\1\160\1\172\1\156\1\160\1\163\1\172\1\164\1\163\3\uffff\1\172\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\162\1\171\1\160\1\165\1\145\1\164\1\uffff\1\154\4\uffff\1\153\1\141\1\143\1\153\1\156\1\154\1\145\1\141\1\155\1\144\1\172\1\163\1\145\2\164\1\145\1\144\1\143\2\165\1\156\1\145\1\143\1\162\1\154\1\141\2\uffff\1\154\1\uffff\1\164\1\157\1\164\1\uffff\1\145\1\157\1\145\1\uffff\1\172\1\154\6\uffff\2\172\1\145\1\172\1\145\1\157\1\162\1\163\1\165\1\141\1\154\1\150\1\154\2\145\1\156\1\154\1\172\1\141\1\uffff\1\145\1\144\1\151\1\143\1\162\1\141\1\150\1\145\1\162\2\172\1\150\1\154\1\171\1\165\1\171\1\150\1\141\1\162\1\141\1\156\1\162\1\172\1\uffff\1\172\2\uffff\1\172\1\uffff\1\157\1\167\1\163\1\144\1\162\1\147\1\154\1\145\1\171\1\163\1\172\2\141\1\154\1\uffff\1\171\1\172\1\165\1\143\1\150\1\172\1\171\1\162\1\156\1\144\2\uffff\1\172\1\171\1\141\1\154\1\157\1\154\1\171\1\164\1\156\1\163\1\164\3\uffff\1\146\1\172\1\144\1\141\1\156\2\145\1\162\1\157\1\144\1\uffff\1\163\1\155\1\171\1\172\1\uffff\1\154\2\172\1\uffff\1\172\1\157\1\164\1\141\1\uffff\1\141\2\164\1\156\1\171\2\172\1\143\1\151\1\163\2\172\1\uffff\1\141\1\171\2\172\1\154\1\172\1\156\1\141\1\153\1\145\1\172\1\uffff\1\145\3\uffff\1\156\1\151\1\171\1\164\3\172\1\157\2\uffff\1\145\1\157\1\172\2\uffff\1\171\1\172\2\uffff\1\172\1\uffff\1\172\1\171\2\172\1\uffff\1\162\1\151\1\141\2\172\3\uffff\1\156\1\157\1\156\1\uffff\1\172\3\uffff\1\172\2\uffff\2\172\1\154\2\uffff\1\172\1\146\1\172\3\uffff\1\145\1\172\1\uffff\1\172\1\uffff\1\144\2\uffff\1\172\1\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\15\uffff\1\26\1\27\1\30\1\31\1\32\1\uffff\1\34\1\35\1\36\23\uffff\1\150\2\151\1\154\1\155\1\uffff\1\150\1\2\1\3\26\uffff\1\76\1\14\10\uffff\1\41\1\66\1\24\3\uffff\1\26\1\27\1\30\1\31\1\32\1\uffff\1\61\1\33\1\34\1\35\1\36\1\37\1\73\1\64\1\40\1\56\1\74\1\65\1\42\1\152\1\153\1\67\1\43\1\70\1\62\1\44\1\46\1\45\1\47\1\100\1\50\1\131\1\uffff\1\71\1\uffff\1\75\1\63\1\77\1\130\10\uffff\1\145\1\uffff\1\146\1\147\1\151\1\154\11\uffff\1\110\22\uffff\1\16\1\72\3\uffff\1\101\2\uffff\1\25\2\uffff\1\53\1\51\1\54\1\52\1\57\1\60\27\uffff\1\106\25\uffff\1\115\1\uffff\1\111\1\112\1\uffff\1\124\37\uffff\1\11\1\105\6\uffff\1\102\1\120\1\117\14\uffff\1\107\10\uffff\1\116\4\uffff\1\114\4\uffff\1\127\7\uffff\1\122\22\uffff\1\143\1\uffff\1\22\1\103\1\136\4\uffff\1\137\1\21\3\uffff\1\121\2\uffff\1\123\1\132\1\133\1\1\1\uffff\1\4\3\uffff\1\13\1\104\1\6\3\uffff\1\125\7\uffff\1\113\1\uffff\1\140\1\135\1\15\2\uffff\1\12\1\uffff\1\20\3\uffff\1\144\3\uffff\1\142\1\141\1\5\4\uffff\1\17\1\uffff\1\23\3\uffff\1\134\1\55\1\7\1\10\1\uffff\1\126";
+        "\2\uffff\1\2\1\3\15\uffff\1\26\1\27\1\30\1\31\1\32\1\uffff\1\34\1\35\1\36\21\uffff\1\147\2\150\1\153\1\154\1\uffff\1\147\1\2\1\3\24\uffff\1\76\1\14\11\uffff\1\41\1\66\1\24\3\uffff\1\26\1\27\1\30\1\31\1\32\1\uffff\1\61\1\33\1\34\1\35\1\36\1\37\1\73\1\64\1\40\1\56\1\74\1\65\1\42\1\151\1\152\1\67\1\43\1\70\1\62\1\44\1\46\1\45\1\47\1\100\1\50\1\131\1\uffff\1\71\1\uffff\1\75\1\63\1\77\1\130\6\uffff\1\144\1\uffff\1\145\1\146\1\150\1\153\32\uffff\1\110\1\16\1\uffff\1\72\3\uffff\1\101\3\uffff\1\25\2\uffff\1\53\1\51\1\54\1\52\1\57\1\60\23\uffff\1\106\27\uffff\1\115\1\uffff\1\111\1\112\1\uffff\1\124\16\uffff\1\6\12\uffff\1\11\1\105\13\uffff\1\102\1\120\1\117\12\uffff\1\107\4\uffff\1\116\3\uffff\1\114\4\uffff\1\127\14\uffff\1\122\13\uffff\1\142\1\uffff\1\22\1\103\1\135\10\uffff\1\136\1\21\3\uffff\1\132\1\121\2\uffff\1\123\1\1\1\uffff\1\4\4\uffff\1\125\5\uffff\1\13\1\104\1\20\3\uffff\1\113\1\uffff\1\137\1\134\1\15\1\uffff\1\5\1\7\3\uffff\1\143\1\12\3\uffff\1\141\1\140\1\10\2\uffff\1\17\1\uffff\1\23\1\uffff\1\133\1\55\1\uffff\1\126";
     static final String DFA21_specialS =
-        "\1\0\u01a0\uffff}>";
+        "\1\0\u018b\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\61\2\60\2\61\1\60\22\61\1\60\1\42\1\56\1\27\1\55\1\35\1\41\1\57\1\23\1\25\1\17\1\32\1\24\1\33\1\43\1\34\1\52\11\53\1\12\1\21\1\36\1\26\1\37\1\44\1\22\4\55\1\51\3\55\1\50\21\55\1\30\1\61\1\31\1\54\1\55\1\61\1\13\1\55\1\11\1\5\1\16\1\7\1\55\1\6\1\15\3\55\1\14\1\20\1\55\1\1\1\55\1\47\1\10\1\46\1\55\1\45\1\4\3\55\1\2\1\40\1\3\uff82\61",
-            "\1\62",
+            "\11\57\2\56\2\57\1\56\22\57\1\56\1\42\1\54\1\27\1\53\1\35\1\41\1\55\1\23\1\25\1\17\1\32\1\24\1\33\1\43\1\34\1\50\11\51\1\12\1\21\1\36\1\26\1\37\1\44\1\22\32\53\1\30\1\57\1\31\1\52\1\53\1\57\1\13\1\53\1\7\1\11\1\16\1\5\1\53\1\10\1\15\3\53\1\14\1\20\1\53\1\1\1\53\1\47\1\6\1\46\1\53\1\45\1\4\3\53\1\2\1\40\1\3\uff82\57",
+            "\1\60",
             "",
             "",
-            "\1\66\3\uffff\1\67\2\uffff\1\70",
-            "\1\72\3\uffff\1\73\3\uffff\1\71\5\uffff\1\74",
-            "\1\75\15\uffff\1\76",
-            "\1\101\7\uffff\1\100\5\uffff\1\77\2\uffff\1\102",
-            "\1\111\1\uffff\1\103\1\uffff\1\110\16\uffff\1\104\1\106\1\uffff\1\105\1\uffff\1\107",
-            "\1\113\20\uffff\1\112",
-            "\1\114",
-            "\1\117\1\116",
-            "\1\120",
-            "\1\123\6\uffff\1\121\1\122",
-            "\1\125\13\uffff\1\124",
-            "\1\127\22\uffff\1\126",
-            "\1\132\15\uffff\1\131\1\uffff\1\133",
+            "\1\64\3\uffff\1\65\2\uffff\1\66",
+            "\1\72\7\uffff\1\67\5\uffff\1\71\2\uffff\1\70",
+            "\1\101\1\uffff\1\73\1\uffff\1\100\16\uffff\1\74\1\76\1\uffff\1\75\1\uffff\1\77",
+            "\1\103\20\uffff\1\102",
+            "\1\104",
+            "\1\105\3\uffff\1\106\11\uffff\1\107",
+            "\1\110",
+            "\1\113\2\uffff\1\114\1\112",
+            "\1\115",
+            "\1\120\6\uffff\1\116\1\117",
+            "\1\122\13\uffff\1\121",
+            "\1\124\22\uffff\1\123",
+            "\1\127\15\uffff\1\126\1\uffff\1\130",
             "",
             "",
             "",
             "",
             "",
-            "\1\141\1\142",
+            "\1\136\1\137",
             "",
             "",
             "",
-            "\1\150\21\uffff\1\147",
-            "\1\154\17\uffff\1\152\1\153",
-            "\1\157\4\uffff\1\160\15\uffff\1\156",
-            "\1\162",
-            "\1\164",
-            "\1\166",
-            "\1\170",
-            "\1\172",
-            "\1\174",
-            "\1\176",
-            "\1\u0081\13\uffff\1\u0080",
-            "\1\u0083",
-            "\1\u0086\11\uffff\1\u0084\2\uffff\1\u0087\3\uffff\1\u0085",
-            "\1\u0088",
-            "\1\u0089",
-            "\1\u008a",
-            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b\6\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b",
-            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
-            "\1\63\34\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\145\21\uffff\1\144",
+            "\1\151\17\uffff\1\147\1\150",
+            "\1\154\4\uffff\1\155\15\uffff\1\153",
+            "\1\157",
+            "\1\161",
+            "\1\163",
+            "\1\165",
+            "\1\167",
+            "\1\171",
+            "\1\173",
+            "\1\176\13\uffff\1\175",
+            "\1\u0080",
+            "\1\u0083\11\uffff\1\u0081\2\uffff\1\u0084\3\uffff\1\u0082",
+            "\1\u0085",
+            "\12\u0087\10\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\13\uffff\1\u0086\6\uffff\1\u0087\2\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\13\uffff\1\u0086",
+            "\12\u0087\10\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\22\uffff\1\u0087\2\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089",
+            "\1\61\34\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
             "",
             "",
             "",
             "",
-            "\1\u0091\16\uffff\1\u0092",
+            "\1\u008c\16\uffff\1\u008d",
             "",
             "",
             "",
-            "\1\u0093",
-            "\1\u0095\1\u0094",
+            "\1\u008e",
+            "\1\u0090\1\u008f",
+            "\1\u0091",
+            "\1\u0092\1\uffff\1\u0093",
+            "\1\u0095\5\uffff\1\u0094",
             "\1\u0096",
             "\1\u0097",
             "\1\u0098",
             "\1\u0099",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u009b",
-            "\1\u009c",
+            "\1\u009a",
+            "\1\u009c\1\uffff\1\u009b",
             "\1\u009d",
-            "\1\u009e\1\uffff\1\u009f",
+            "\1\u009e",
+            "\1\u009f",
             "\1\u00a0",
-            "\1\u00a1",
-            "\1\u00a2",
+            "\1\u00a1\1\u00a2",
             "\1\u00a3",
             "\1\u00a4",
-            "\1\u00a6\1\uffff\1\u00a5",
-            "\1\u00a7",
+            "\1\u00a5",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00a8",
-            "\1\u00a9",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00aa",
-            "\1\u00ab\1\u00ac",
-            "",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u00af",
+            "\1\u00ab",
+            "\1\u00ac",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u00af\3\uffff\1\u00ae",
             "\1\u00b0",
-            "\1\u00b1",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u00b2",
             "\1\u00b3",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00b4",
             "",
             "",
             "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00b6",
-            "\1\u00b7",
-            "",
-            "",
-            "",
-            "",
             "",
             "\1\u00b8",
             "",
             "",
             "",
             "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00ba",
-            "",
-            "\1\u00bc",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00bf\5\uffff\1\u00be",
-            "\1\u00c0\3\uffff\1\u00c1",
+            "\1\u00bb\5\uffff\1\u00ba",
+            "\1\u00bc\3\uffff\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf\2\uffff\1\u00c0",
+            "\1\u00c1",
             "\1\u00c2",
-            "\1\u00c3\2\uffff\1\u00c4",
+            "",
+            "\12\u0087\10\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089\22\uffff\1\u0087\2\uffff\1\u0089\1\uffff\3\u0089\5\uffff\1\u0089",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c3",
+            "\1\u00c4",
             "\1\u00c5",
             "\1\u00c6",
             "\1\u00c7",
             "\1\u00c8",
-            "",
-            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
-            "",
-            "",
-            "",
-            "",
             "\1\u00c9",
             "\1\u00ca",
             "\1\u00cb",
             "\1\u00cc",
-            "\1\u00cd",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00ce",
             "\1\u00cf",
             "\1\u00d0",
             "\1\u00d1",
-            "",
             "\1\u00d2",
             "\1\u00d3",
-            "\1\63\13\uffff\12\63\7\uffff\5\63\1\u00d4\24\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00d4",
+            "\1\u00d5",
             "\1\u00d6",
             "\1\u00d7",
             "\1\u00d8",
@@ -4022,45 +3979,46 @@
             "\1\u00da",
             "\1\u00db",
             "\1\u00dc",
+            "",
+            "",
             "\1\u00dd",
-            "\1\u00de",
-            "\1\u00df",
+            "",
+            "\1\u00df\17\uffff\1\u00de",
             "\1\u00e0",
             "\1\u00e1",
+            "",
             "\1\u00e2",
             "\1\u00e3",
             "\1\u00e4",
             "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u00e6",
             "",
-            "\1\u00e6\17\uffff\1\u00e5",
-            "\1\u00e7",
-            "\1\u00e8",
             "",
+            "",
+            "",
+            "",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00e9",
-            "\1\u00ea",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u00eb",
             "\1\u00ec",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00ed",
+            "\1\u00ee",
             "\1\u00ef",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
             "\1\u00f3",
             "\1\u00f4",
             "\1\u00f5",
-            "\1\u00f6",
-            "\1\u00f7",
+            "\1\u00f6\1\u00f7",
             "\1\u00f8",
-            "\1\u00f9",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u00fa",
+            "",
             "\1\u00fb",
             "\1\u00fc",
             "\1\u00fd",
@@ -4070,9 +4028,8 @@
             "\1\u0101",
             "\1\u0102",
             "\1\u0103",
-            "",
-            "\1\u0104",
-            "\1\u0105",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0106",
             "\1\u0107",
             "\1\u0108",
@@ -4083,72 +4040,76 @@
             "\1\u010d",
             "\1\u010e",
             "\1\u010f",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u0112",
-            "\1\u0113",
+            "\1\u0110",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
             "\1\u0114",
             "\1\u0115",
             "\1\u0116",
             "\1\u0117",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a",
             "\1\u011b",
             "\1\u011c",
             "\1\u011d",
-            "\1\u011e",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u011f",
             "\1\u0120",
             "\1\u0121",
+            "",
             "\1\u0122",
-            "\1\u0123",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0124",
             "\1\u0125",
             "\1\u0126",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0128",
             "\1\u0129",
             "\1\u012a",
             "\1\u012b",
-            "\1\u012c",
+            "",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u012d",
             "\1\u012e",
             "\1\u012f",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0130",
             "\1\u0131",
             "\1\u0132",
             "\1\u0133",
             "\1\u0134",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u0136",
+            "\1\u0136\16\uffff\1\u0135",
             "\1\u0137",
+            "",
+            "",
+            "",
             "\1\u0138",
-            "\1\u0139",
-            "",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u013a",
             "\1\u013b",
             "\1\u013c",
             "\1\u013d",
             "\1\u013e",
-            "\1\u0140\16\uffff\1\u013f",
-            "",
-            "",
-            "",
+            "\1\u013f",
+            "\1\u0140",
             "\1\u0141",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\u0142",
             "\1\u0143",
             "\1\u0144",
-            "\1\u0145",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
             "\1\u0146",
-            "\1\u0147",
-            "\1\u0148",
-            "\1\u0149",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u014a",
             "\1\u014b",
             "\1\u014c",
@@ -4158,121 +4119,95 @@
             "\1\u014f",
             "\1\u0150",
             "\1\u0151",
-            "\1\u0152",
-            "\1\u0153",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0154",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0155",
             "\1\u0156",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0159",
             "\1\u015a",
-            "\1\u015b",
-            "\1\u015c",
-            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u015d",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\u015f",
             "\1\u0160",
             "\1\u0161",
             "\1\u0162",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
             "\1\u0164",
+            "",
+            "",
+            "",
             "\1\u0165",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u016a",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u016c",
+            "",
+            "",
             "\1\u016d",
             "\1\u016e",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u0172",
-            "\1\u0173",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
+            "\1\u0170",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0174",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
-            "\1\u0176",
-            "",
-            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
             "\1\u0177",
             "\1\u0178",
             "\1\u0179",
-            "\1\u017a",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
             "",
-            "\1\u017b",
+            "",
             "\1\u017c",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
+            "\1\u017d",
             "\1\u017e",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
             "",
             "",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0182",
             "\1\u0183",
             "",
             "",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "\1\u0185",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "",
             "",
             "\1\u0187",
-            "\1\u0188",
-            "\1\u0189",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u018b",
-            "\1\u018c",
-            "\1\u018d",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
+            "",
+            "\1\u018a",
             "",
             "",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
-            "\1\u0191",
-            "",
-            "\1\u0192",
-            "\1\u0193",
-            "\1\u0194",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u0196",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
-            "",
-            "",
-            "\1\u0198",
-            "\1\u0199",
-            "\1\u019a",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
-            "\1\u019f",
-            "",
-            "",
-            "",
-            "",
-            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\61\13\uffff\12\61\7\uffff\32\61\4\uffff\1\61\1\uffff\32\61",
             ""
     };
 
@@ -4306,7 +4241,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | 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;
@@ -4324,15 +4259,15 @@
 
                         else if ( (LA21_0=='w') ) {s = 4;}
 
-                        else if ( (LA21_0=='d') ) {s = 5;}
+                        else if ( (LA21_0=='f') ) {s = 5;}
 
-                        else if ( (LA21_0=='h') ) {s = 6;}
+                        else if ( (LA21_0=='s') ) {s = 6;}
 
-                        else if ( (LA21_0=='f') ) {s = 7;}
+                        else if ( (LA21_0=='c') ) {s = 7;}
 
-                        else if ( (LA21_0=='s') ) {s = 8;}
+                        else if ( (LA21_0=='h') ) {s = 8;}
 
-                        else if ( (LA21_0=='c') ) {s = 9;}
+                        else if ( (LA21_0=='d') ) {s = 9;}
 
                         else if ( (LA21_0==':') ) {s = 10;}
 
@@ -4394,25 +4329,21 @@
 
                         else if ( (LA21_0=='r') ) {s = 39;}
 
-                        else if ( (LA21_0=='I') ) {s = 40;}
+                        else if ( (LA21_0=='0') ) {s = 40;}
 
-                        else if ( (LA21_0=='E') ) {s = 41;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 41;}
 
-                        else if ( (LA21_0=='0') ) {s = 42;}
+                        else if ( (LA21_0=='^') ) {s = 42;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 43;}
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 43;}
 
-                        else if ( (LA21_0=='^') ) {s = 44;}
+                        else if ( (LA21_0=='\"') ) {s = 44;}
 
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='D')||(LA21_0>='F' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 45;}
+                        else if ( (LA21_0=='\'') ) {s = 45;}
 
-                        else if ( (LA21_0=='\"') ) {s = 46;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 46;}
 
-                        else if ( (LA21_0=='\'') ) {s = 47;}
-
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 48;}
-
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 49;}
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 47;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java
index fd84c99..c9b4864 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java
@@ -40,7 +40,7 @@
 @SuppressWarnings("all")
 public class InternalSignalDSLParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_INT", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'watcher'", "'directory'", "'handler'", "'forFileMask'", "'scheduleFor'", "'cron'", "'hourlyAt'", "'dailyAt'", "':'", "'weeklyOn'", "'at'", "'monthlyOn'", "'fileName'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'Import'", "'Export'", "'sequential'", "'parallel'", "'sunday'", "'monday'", "'tuesday'", "'wednesday'", "'thursday'", "'friday'", "'saturday'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'watcher'", "'filemask'", "'from'", "'filename'", "'scheduler'", "'cron'", "'hourlyat'", "'dailyat'", "':'", "'weeklyon'", "'at'", "'monthlyon'", "'applyon'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'export'", "'sequential'", "'parallel'", "'sunday'", "'monday'", "'tuesday'", "'wednesday'", "'thursday'", "'friday'", "'saturday'"
     };
     public static final int RULE_HEX=7;
     public static final int T__50=50;
@@ -55,8 +55,8 @@
     public static final int T__54=54;
     public static final int T__60=60;
     public static final int T__61=61;
-    public static final int RULE_ID=6;
-    public static final int RULE_INT=5;
+    public static final int RULE_ID=5;
+    public static final int RULE_INT=6;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
@@ -136,7 +136,6 @@
     public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
-    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
@@ -193,7 +192,7 @@
 
 
     // $ANTLR start "entryRuleSignalModel"
-    // InternalSignalDSL.g:78:1: entryRuleSignalModel returns [EObject current=null] : iv_ruleSignalModel= ruleSignalModel EOF ;
+    // InternalSignalDSL.g:80:1: entryRuleSignalModel returns [EObject current=null] : iv_ruleSignalModel= ruleSignalModel EOF ;
     public final EObject entryRuleSignalModel() throws RecognitionException {
         EObject current = null;
 
@@ -201,8 +200,8 @@
 
 
         try {
-            // InternalSignalDSL.g:78:52: (iv_ruleSignalModel= ruleSignalModel EOF )
-            // InternalSignalDSL.g:79:2: iv_ruleSignalModel= ruleSignalModel EOF
+            // InternalSignalDSL.g:80:52: (iv_ruleSignalModel= ruleSignalModel EOF )
+            // InternalSignalDSL.g:81:2: iv_ruleSignalModel= ruleSignalModel EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSignalModelRule()); 
@@ -233,7 +232,7 @@
 
 
     // $ANTLR start "ruleSignalModel"
-    // InternalSignalDSL.g:85:1: ruleSignalModel returns [EObject current=null] : ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) ) ;
+    // InternalSignalDSL.g:87:1: ruleSignalModel returns [EObject current=null] : ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) ) ;
     public final EObject ruleSignalModel() throws RecognitionException {
         EObject current = null;
 
@@ -246,13 +245,13 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:91:2: ( ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) ) )
-            // InternalSignalDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) )
+            // InternalSignalDSL.g:93:2: ( ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) ) )
+            // InternalSignalDSL.g:94:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) )
             {
-            // InternalSignalDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) )
-            // InternalSignalDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )
+            // InternalSignalDSL.g:94:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) )
+            // InternalSignalDSL.g:95:3: ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )
             {
-            // InternalSignalDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )?
+            // InternalSignalDSL.g:95:3: ( (lv_importSection_0_0= ruleXImportSection ) )?
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -261,10 +260,10 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalSignalDSL.g:94:4: (lv_importSection_0_0= ruleXImportSection )
+                    // InternalSignalDSL.g:96:4: (lv_importSection_0_0= ruleXImportSection )
                     {
-                    // InternalSignalDSL.g:94:4: (lv_importSection_0_0= ruleXImportSection )
-                    // InternalSignalDSL.g:95:5: lv_importSection_0_0= ruleXImportSection
+                    // InternalSignalDSL.g:96:4: (lv_importSection_0_0= ruleXImportSection )
+                    // InternalSignalDSL.g:97:5: lv_importSection_0_0= ruleXImportSection
                     {
                     if ( state.backtracking==0 ) {
 
@@ -298,11 +297,11 @@
 
             }
 
-            // InternalSignalDSL.g:112:3: ( (lv_packages_1_0= ruleSignalPackage ) )
-            // InternalSignalDSL.g:113:4: (lv_packages_1_0= ruleSignalPackage )
+            // InternalSignalDSL.g:114:3: ( (lv_packages_1_0= ruleSignalPackage ) )
+            // InternalSignalDSL.g:115:4: (lv_packages_1_0= ruleSignalPackage )
             {
-            // InternalSignalDSL.g:113:4: (lv_packages_1_0= ruleSignalPackage )
-            // InternalSignalDSL.g:114:5: lv_packages_1_0= ruleSignalPackage
+            // InternalSignalDSL.g:115:4: (lv_packages_1_0= ruleSignalPackage )
+            // InternalSignalDSL.g:116:5: lv_packages_1_0= ruleSignalPackage
             {
             if ( state.backtracking==0 ) {
 
@@ -358,7 +357,7 @@
 
 
     // $ANTLR start "entryRuleSignalPackage"
-    // InternalSignalDSL.g:135:1: entryRuleSignalPackage returns [EObject current=null] : iv_ruleSignalPackage= ruleSignalPackage EOF ;
+    // InternalSignalDSL.g:137:1: entryRuleSignalPackage returns [EObject current=null] : iv_ruleSignalPackage= ruleSignalPackage EOF ;
     public final EObject entryRuleSignalPackage() throws RecognitionException {
         EObject current = null;
 
@@ -366,8 +365,8 @@
 
 
         try {
-            // InternalSignalDSL.g:135:54: (iv_ruleSignalPackage= ruleSignalPackage EOF )
-            // InternalSignalDSL.g:136:2: iv_ruleSignalPackage= ruleSignalPackage EOF
+            // InternalSignalDSL.g:137:54: (iv_ruleSignalPackage= ruleSignalPackage EOF )
+            // InternalSignalDSL.g:138:2: iv_ruleSignalPackage= ruleSignalPackage EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSignalPackageRule()); 
@@ -398,7 +397,7 @@
 
 
     // $ANTLR start "ruleSignalPackage"
-    // InternalSignalDSL.g:142:1: ruleSignalPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}' )? ) ;
+    // InternalSignalDSL.g:144:1: ruleSignalPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_signals_4_0= ruleSignalDefinition ) )* otherlv_5= '}' )? ) ;
     public final EObject ruleSignalPackage() throws RecognitionException {
         EObject current = null;
 
@@ -407,21 +406,21 @@
         Token otherlv_5=null;
         AntlrDatatypeRuleToken lv_name_2_0 = null;
 
-        EObject lv_watchers_4_0 = null;
+        EObject lv_signals_4_0 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:148:2: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}' )? ) )
-            // InternalSignalDSL.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}' )? )
+            // InternalSignalDSL.g:150:2: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_signals_4_0= ruleSignalDefinition ) )* otherlv_5= '}' )? ) )
+            // InternalSignalDSL.g:151:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_signals_4_0= ruleSignalDefinition ) )* otherlv_5= '}' )? )
             {
-            // InternalSignalDSL.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}' )? )
-            // InternalSignalDSL.g:150:3: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}' )?
+            // InternalSignalDSL.g:151:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_signals_4_0= ruleSignalDefinition ) )* otherlv_5= '}' )? )
+            // InternalSignalDSL.g:152:3: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_signals_4_0= ruleSignalDefinition ) )* otherlv_5= '}' )?
             {
-            // InternalSignalDSL.g:150:3: ()
-            // InternalSignalDSL.g:151:4: 
+            // InternalSignalDSL.g:152:3: ()
+            // InternalSignalDSL.g:153:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -439,11 +438,11 @@
               			newLeafNode(otherlv_1, grammarAccess.getSignalPackageAccess().getPackageKeyword_1());
               		
             }
-            // InternalSignalDSL.g:161:3: ( (lv_name_2_0= ruleQualifiedName ) )
-            // InternalSignalDSL.g:162:4: (lv_name_2_0= ruleQualifiedName )
+            // InternalSignalDSL.g:163:3: ( (lv_name_2_0= ruleQualifiedName ) )
+            // InternalSignalDSL.g:164:4: (lv_name_2_0= ruleQualifiedName )
             {
-            // InternalSignalDSL.g:162:4: (lv_name_2_0= ruleQualifiedName )
-            // InternalSignalDSL.g:163:5: lv_name_2_0= ruleQualifiedName
+            // InternalSignalDSL.g:164:4: (lv_name_2_0= ruleQualifiedName )
+            // InternalSignalDSL.g:165:5: lv_name_2_0= ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -474,7 +473,7 @@
 
             }
 
-            // InternalSignalDSL.g:180:3: (otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}' )?
+            // InternalSignalDSL.g:182:3: (otherlv_3= '{' ( (lv_signals_4_0= ruleSignalDefinition ) )* otherlv_5= '}' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -483,7 +482,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // InternalSignalDSL.g:181:4: otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}'
+                    // InternalSignalDSL.g:183:4: otherlv_3= '{' ( (lv_signals_4_0= ruleSignalDefinition ) )* otherlv_5= '}'
                     {
                     otherlv_3=(Token)match(input,14,FOLLOW_6); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -491,31 +490,31 @@
                       				newLeafNode(otherlv_3, grammarAccess.getSignalPackageAccess().getLeftCurlyBracketKeyword_3_0());
                       			
                     }
-                    // InternalSignalDSL.g:185:4: ( (lv_watchers_4_0= ruleSignalWatcher ) )*
+                    // InternalSignalDSL.g:187:4: ( (lv_signals_4_0= ruleSignalDefinition ) )*
                     loop2:
                     do {
                         int alt2=2;
                         int LA2_0 = input.LA(1);
 
-                        if ( (LA2_0==16) ) {
+                        if ( (LA2_0==16||LA2_0==20) ) {
                             alt2=1;
                         }
 
 
                         switch (alt2) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:186:5: (lv_watchers_4_0= ruleSignalWatcher )
+                    	    // InternalSignalDSL.g:188:5: (lv_signals_4_0= ruleSignalDefinition )
                     	    {
-                    	    // InternalSignalDSL.g:186:5: (lv_watchers_4_0= ruleSignalWatcher )
-                    	    // InternalSignalDSL.g:187:6: lv_watchers_4_0= ruleSignalWatcher
+                    	    // InternalSignalDSL.g:188:5: (lv_signals_4_0= ruleSignalDefinition )
+                    	    // InternalSignalDSL.g:189:6: lv_signals_4_0= ruleSignalDefinition
                     	    {
                     	    if ( state.backtracking==0 ) {
 
-                    	      						newCompositeNode(grammarAccess.getSignalPackageAccess().getWatchersSignalWatcherParserRuleCall_3_1_0());
+                    	      						newCompositeNode(grammarAccess.getSignalPackageAccess().getSignalsSignalDefinitionParserRuleCall_3_1_0());
                     	      					
                     	    }
                     	    pushFollow(FOLLOW_6);
-                    	    lv_watchers_4_0=ruleSignalWatcher();
+                    	    lv_signals_4_0=ruleSignalDefinition();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
@@ -526,9 +525,9 @@
                     	      						}
                     	      						add(
                     	      							current,
-                    	      							"watchers",
-                    	      							lv_watchers_4_0,
-                    	      							"org.eclipse.osbp.xtext.signal.SignalDSL.SignalWatcher");
+                    	      							"signals",
+                    	      							lv_signals_4_0,
+                    	      							"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDefinition");
                     	      						afterParserOrEnumRuleCall();
                     	      					
                     	    }
@@ -580,28 +579,28 @@
     // $ANTLR end "ruleSignalPackage"
 
 
-    // $ANTLR start "entryRuleSignalWatcher"
-    // InternalSignalDSL.g:213:1: entryRuleSignalWatcher returns [EObject current=null] : iv_ruleSignalWatcher= ruleSignalWatcher EOF ;
-    public final EObject entryRuleSignalWatcher() throws RecognitionException {
+    // $ANTLR start "entryRuleSignalDefinition"
+    // InternalSignalDSL.g:215:1: entryRuleSignalDefinition returns [EObject current=null] : iv_ruleSignalDefinition= ruleSignalDefinition EOF ;
+    public final EObject entryRuleSignalDefinition() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleSignalWatcher = null;
+        EObject iv_ruleSignalDefinition = null;
 
 
         try {
-            // InternalSignalDSL.g:213:54: (iv_ruleSignalWatcher= ruleSignalWatcher EOF )
-            // InternalSignalDSL.g:214:2: iv_ruleSignalWatcher= ruleSignalWatcher EOF
+            // InternalSignalDSL.g:215:57: (iv_ruleSignalDefinition= ruleSignalDefinition EOF )
+            // InternalSignalDSL.g:216:2: iv_ruleSignalDefinition= ruleSignalDefinition EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getSignalWatcherRule()); 
+               newCompositeNode(grammarAccess.getSignalDefinitionRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleSignalWatcher=ruleSignalWatcher();
+            iv_ruleSignalDefinition=ruleSignalDefinition();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleSignalWatcher; 
+               current =iv_ruleSignalDefinition; 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -617,525 +616,15 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleSignalWatcher"
+    // $ANTLR end "entryRuleSignalDefinition"
 
 
-    // $ANTLR start "ruleSignalWatcher"
-    // InternalSignalDSL.g:220:1: ruleSignalWatcher returns [EObject current=null] : ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' ) ;
-    public final EObject ruleSignalWatcher() throws RecognitionException {
+    // $ANTLR start "ruleSignalDefinition"
+    // InternalSignalDSL.g:222:1: ruleSignalDefinition returns [EObject current=null] : (this_SignalWatcher_0= ruleSignalWatcher | this_SignalScheduler_1= ruleSignalScheduler ) ;
+    public final EObject ruleSignalDefinition() throws RecognitionException {
         EObject current = null;
 
-        Token otherlv_1=null;
-        Token otherlv_3=null;
-        Token lv_directory_4_0=null;
-        Token otherlv_5=null;
-        Token otherlv_7=null;
-        AntlrDatatypeRuleToken lv_name_2_0 = null;
-
-        EObject lv_handlers_6_0 = null;
-
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:226:2: ( ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' ) )
-            // InternalSignalDSL.g:227:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' )
-            {
-            // InternalSignalDSL.g:227:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' )
-            // InternalSignalDSL.g:228:3: () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}'
-            {
-            // InternalSignalDSL.g:228:3: ()
-            // InternalSignalDSL.g:229:4: 
-            {
-            if ( state.backtracking==0 ) {
-
-              				current = forceCreateModelElement(
-              					grammarAccess.getSignalWatcherAccess().getSignalWatcherAction_0(),
-              					current);
-              			
-            }
-
-            }
-
-            otherlv_1=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_1, grammarAccess.getSignalWatcherAccess().getWatcherKeyword_1());
-              		
-            }
-            // InternalSignalDSL.g:239:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
-            // InternalSignalDSL.g:240:4: (lv_name_2_0= ruleTRANSLATABLEID )
-            {
-            // InternalSignalDSL.g:240:4: (lv_name_2_0= ruleTRANSLATABLEID )
-            // InternalSignalDSL.g:241:5: lv_name_2_0= ruleTRANSLATABLEID
-            {
-            if ( state.backtracking==0 ) {
-
-              					newCompositeNode(grammarAccess.getSignalWatcherAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
-              				
-            }
-            pushFollow(FOLLOW_7);
-            lv_name_2_0=ruleTRANSLATABLEID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
-              					}
-              					set(
-              						current,
-              						"name",
-              						lv_name_2_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.TRANSLATABLEID");
-              					afterParserOrEnumRuleCall();
-              				
-            }
-
-            }
-
-
-            }
-
-            otherlv_3=(Token)match(input,17,FOLLOW_8); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_3, grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3());
-              		
-            }
-            // InternalSignalDSL.g:262:3: ( (lv_directory_4_0= RULE_STRING ) )
-            // InternalSignalDSL.g:263:4: (lv_directory_4_0= RULE_STRING )
-            {
-            // InternalSignalDSL.g:263:4: (lv_directory_4_0= RULE_STRING )
-            // InternalSignalDSL.g:264:5: lv_directory_4_0= RULE_STRING
-            {
-            lv_directory_4_0=(Token)match(input,RULE_STRING,FOLLOW_9); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					newLeafNode(lv_directory_4_0, grammarAccess.getSignalWatcherAccess().getDirectorySTRINGTerminalRuleCall_4_0());
-              				
-            }
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElement(grammarAccess.getSignalWatcherRule());
-              					}
-              					setWithLastConsumed(
-              						current,
-              						"directory",
-              						lv_directory_4_0,
-              						"org.eclipse.xtext.xbase.Xtype.STRING");
-              				
-            }
-
-            }
-
-
-            }
-
-            otherlv_5=(Token)match(input,14,FOLLOW_10); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_5, grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5());
-              		
-            }
-            // InternalSignalDSL.g:284:3: ( (lv_handlers_6_0= ruleSignalHandler ) )*
-            loop4:
-            do {
-                int alt4=2;
-                int LA4_0 = input.LA(1);
-
-                if ( (LA4_0==18) ) {
-                    alt4=1;
-                }
-
-
-                switch (alt4) {
-            	case 1 :
-            	    // InternalSignalDSL.g:285:4: (lv_handlers_6_0= ruleSignalHandler )
-            	    {
-            	    // InternalSignalDSL.g:285:4: (lv_handlers_6_0= ruleSignalHandler )
-            	    // InternalSignalDSL.g:286:5: lv_handlers_6_0= ruleSignalHandler
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      					newCompositeNode(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0());
-            	      				
-            	    }
-            	    pushFollow(FOLLOW_10);
-            	    lv_handlers_6_0=ruleSignalHandler();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      					if (current==null) {
-            	      						current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
-            	      					}
-            	      					add(
-            	      						current,
-            	      						"handlers",
-            	      						lv_handlers_6_0,
-            	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandler");
-            	      					afterParserOrEnumRuleCall();
-            	      				
-            	    }
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop4;
-                }
-            } while (true);
-
-            otherlv_7=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_7, grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7());
-              		
-            }
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleSignalWatcher"
-
-
-    // $ANTLR start "entryRuleSignalHandler"
-    // InternalSignalDSL.g:311:1: entryRuleSignalHandler returns [EObject current=null] : iv_ruleSignalHandler= ruleSignalHandler EOF ;
-    public final EObject entryRuleSignalHandler() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleSignalHandler = null;
-
-
-        try {
-            // InternalSignalDSL.g:311:54: (iv_ruleSignalHandler= ruleSignalHandler EOF )
-            // InternalSignalDSL.g:312:2: iv_ruleSignalHandler= ruleSignalHandler EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getSignalHandlerRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleSignalHandler=ruleSignalHandler();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleSignalHandler; 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleSignalHandler"
-
-
-    // $ANTLR start "ruleSignalHandler"
-    // InternalSignalDSL.g:318:1: ruleSignalHandler returns [EObject current=null] : ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) ) ;
-    public final EObject ruleSignalHandler() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_1=null;
-        AntlrDatatypeRuleToken lv_name_2_0 = null;
-
-        EObject lv_interchanges_3_0 = null;
-
-        Enumerator lv_executiontype_4_0 = null;
-
-        EObject lv_triggerpolicy_5_0 = null;
-
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:324:2: ( ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) ) )
-            // InternalSignalDSL.g:325:2: ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) )
-            {
-            // InternalSignalDSL.g:325:2: ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) )
-            // InternalSignalDSL.g:326:3: () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) )
-            {
-            // InternalSignalDSL.g:326:3: ()
-            // InternalSignalDSL.g:327:4: 
-            {
-            if ( state.backtracking==0 ) {
-
-              				current = forceCreateModelElement(
-              					grammarAccess.getSignalHandlerAccess().getSignalHandlerAction_0(),
-              					current);
-              			
-            }
-
-            }
-
-            otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_1, grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1());
-              		
-            }
-            // InternalSignalDSL.g:337:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
-            // InternalSignalDSL.g:338:4: (lv_name_2_0= ruleTRANSLATABLEID )
-            {
-            // InternalSignalDSL.g:338:4: (lv_name_2_0= ruleTRANSLATABLEID )
-            // InternalSignalDSL.g:339:5: lv_name_2_0= ruleTRANSLATABLEID
-            {
-            if ( state.backtracking==0 ) {
-
-              					newCompositeNode(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
-              				
-            }
-            pushFollow(FOLLOW_11);
-            lv_name_2_0=ruleTRANSLATABLEID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-              					}
-              					set(
-              						current,
-              						"name",
-              						lv_name_2_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.TRANSLATABLEID");
-              					afterParserOrEnumRuleCall();
-              				
-            }
-
-            }
-
-
-            }
-
-            // InternalSignalDSL.g:356:3: ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )*
-            loop5:
-            do {
-                int alt5=2;
-                int LA5_0 = input.LA(1);
-
-                if ( ((LA5_0>=102 && LA5_0<=103)) ) {
-                    alt5=1;
-                }
-
-
-                switch (alt5) {
-            	case 1 :
-            	    // InternalSignalDSL.g:357:4: (lv_interchanges_3_0= ruleSignalDatainterchange )
-            	    {
-            	    // InternalSignalDSL.g:357:4: (lv_interchanges_3_0= ruleSignalDatainterchange )
-            	    // InternalSignalDSL.g:358:5: lv_interchanges_3_0= ruleSignalDatainterchange
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      					newCompositeNode(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0());
-            	      				
-            	    }
-            	    pushFollow(FOLLOW_11);
-            	    lv_interchanges_3_0=ruleSignalDatainterchange();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      					if (current==null) {
-            	      						current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-            	      					}
-            	      					add(
-            	      						current,
-            	      						"interchanges",
-            	      						lv_interchanges_3_0,
-            	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
-            	      					afterParserOrEnumRuleCall();
-            	      				
-            	    }
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop5;
-                }
-            } while (true);
-
-            // InternalSignalDSL.g:375:3: ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )
-            // InternalSignalDSL.g:376:4: (lv_executiontype_4_0= ruleSignalExecutionTypeEnum )
-            {
-            // InternalSignalDSL.g:376:4: (lv_executiontype_4_0= ruleSignalExecutionTypeEnum )
-            // InternalSignalDSL.g:377:5: lv_executiontype_4_0= ruleSignalExecutionTypeEnum
-            {
-            if ( state.backtracking==0 ) {
-
-              					newCompositeNode(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0());
-              				
-            }
-            pushFollow(FOLLOW_12);
-            lv_executiontype_4_0=ruleSignalExecutionTypeEnum();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-              					}
-              					set(
-              						current,
-              						"executiontype",
-              						lv_executiontype_4_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
-              					afterParserOrEnumRuleCall();
-              				
-            }
-
-            }
-
-
-            }
-
-            // InternalSignalDSL.g:394:3: ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) )
-            // InternalSignalDSL.g:395:4: (lv_triggerpolicy_5_0= ruleTriggerPolicy )
-            {
-            // InternalSignalDSL.g:395:4: (lv_triggerpolicy_5_0= ruleTriggerPolicy )
-            // InternalSignalDSL.g:396:5: lv_triggerpolicy_5_0= ruleTriggerPolicy
-            {
-            if ( state.backtracking==0 ) {
-
-              					newCompositeNode(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0());
-              				
-            }
-            pushFollow(FOLLOW_2);
-            lv_triggerpolicy_5_0=ruleTriggerPolicy();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-              					}
-              					set(
-              						current,
-              						"triggerpolicy",
-              						lv_triggerpolicy_5_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.TriggerPolicy");
-              					afterParserOrEnumRuleCall();
-              				
-            }
-
-            }
-
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleSignalHandler"
-
-
-    // $ANTLR start "entryRuleTriggerPolicy"
-    // InternalSignalDSL.g:417:1: entryRuleTriggerPolicy returns [EObject current=null] : iv_ruleTriggerPolicy= ruleTriggerPolicy EOF ;
-    public final EObject entryRuleTriggerPolicy() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleTriggerPolicy = null;
-
-
-        try {
-            // InternalSignalDSL.g:417:54: (iv_ruleTriggerPolicy= ruleTriggerPolicy EOF )
-            // InternalSignalDSL.g:418:2: iv_ruleTriggerPolicy= ruleTriggerPolicy EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getTriggerPolicyRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleTriggerPolicy=ruleTriggerPolicy();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleTriggerPolicy; 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleTriggerPolicy"
-
-
-    // $ANTLR start "ruleTriggerPolicy"
-    // InternalSignalDSL.g:424:1: ruleTriggerPolicy returns [EObject current=null] : (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler ) ;
-    public final EObject ruleTriggerPolicy() throws RecognitionException {
-        EObject current = null;
-
-        EObject this_TriggerFile_0 = null;
+        EObject this_SignalWatcher_0 = null;
 
         EObject this_SignalScheduler_1 = null;
 
@@ -1144,43 +633,43 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:430:2: ( (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler ) )
-            // InternalSignalDSL.g:431:2: (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler )
+            // InternalSignalDSL.g:228:2: ( (this_SignalWatcher_0= ruleSignalWatcher | this_SignalScheduler_1= ruleSignalScheduler ) )
+            // InternalSignalDSL.g:229:2: (this_SignalWatcher_0= ruleSignalWatcher | this_SignalScheduler_1= ruleSignalScheduler )
             {
-            // InternalSignalDSL.g:431:2: (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler )
-            int alt6=2;
-            int LA6_0 = input.LA(1);
+            // InternalSignalDSL.g:229:2: (this_SignalWatcher_0= ruleSignalWatcher | this_SignalScheduler_1= ruleSignalScheduler )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
 
-            if ( (LA6_0==19) ) {
-                alt6=1;
+            if ( (LA4_0==16) ) {
+                alt4=1;
             }
-            else if ( (LA6_0==20) ) {
-                alt6=2;
+            else if ( (LA4_0==20) ) {
+                alt4=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 6, 0, input);
+                    new NoViableAltException("", 4, 0, input);
 
                 throw nvae;
             }
-            switch (alt6) {
+            switch (alt4) {
                 case 1 :
-                    // InternalSignalDSL.g:432:3: this_TriggerFile_0= ruleTriggerFile
+                    // InternalSignalDSL.g:230:3: this_SignalWatcher_0= ruleSignalWatcher
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0());
+                      			newCompositeNode(grammarAccess.getSignalDefinitionAccess().getSignalWatcherParserRuleCall_0());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_TriggerFile_0=ruleTriggerFile();
+                    this_SignalWatcher_0=ruleSignalWatcher();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_TriggerFile_0;
+                      			current = this_SignalWatcher_0;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -1188,11 +677,11 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:441:3: this_SignalScheduler_1= ruleSignalScheduler
+                    // InternalSignalDSL.g:239:3: this_SignalScheduler_1= ruleSignalScheduler
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1());
+                      			newCompositeNode(grammarAccess.getSignalDefinitionAccess().getSignalSchedulerParserRuleCall_1());
                       		
                     }
                     pushFollow(FOLLOW_2);
@@ -1230,31 +719,31 @@
         }
         return current;
     }
-    // $ANTLR end "ruleTriggerPolicy"
+    // $ANTLR end "ruleSignalDefinition"
 
 
-    // $ANTLR start "entryRuleTriggerFile"
-    // InternalSignalDSL.g:453:1: entryRuleTriggerFile returns [EObject current=null] : iv_ruleTriggerFile= ruleTriggerFile EOF ;
-    public final EObject entryRuleTriggerFile() throws RecognitionException {
+    // $ANTLR start "entryRuleSignalWatcher"
+    // InternalSignalDSL.g:251:1: entryRuleSignalWatcher returns [EObject current=null] : iv_ruleSignalWatcher= ruleSignalWatcher EOF ;
+    public final EObject entryRuleSignalWatcher() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleTriggerFile = null;
+        EObject iv_ruleSignalWatcher = null;
 
 
         try {
-            // InternalSignalDSL.g:453:52: (iv_ruleTriggerFile= ruleTriggerFile EOF )
-            // InternalSignalDSL.g:454:2: iv_ruleTriggerFile= ruleTriggerFile EOF
+            // InternalSignalDSL.g:251:54: (iv_ruleSignalWatcher= ruleSignalWatcher EOF )
+            // InternalSignalDSL.g:252:2: iv_ruleSignalWatcher= ruleSignalWatcher EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getTriggerFileRule()); 
+               newCompositeNode(grammarAccess.getSignalWatcherRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleTriggerFile=ruleTriggerFile();
+            iv_ruleSignalWatcher=ruleSignalWatcher();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleTriggerFile; 
+               current =iv_ruleSignalWatcher; 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -1270,178 +759,110 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleTriggerFile"
+    // $ANTLR end "entryRuleSignalWatcher"
 
 
-    // $ANTLR start "ruleTriggerFile"
-    // InternalSignalDSL.g:460:1: ruleTriggerFile returns [EObject current=null] : (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) ) ;
-    public final EObject ruleTriggerFile() throws RecognitionException {
+    // $ANTLR start "ruleSignalWatcher"
+    // InternalSignalDSL.g:258:1: ruleSignalWatcher returns [EObject current=null] : ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_definition_3_0= ruleWatcherDefinition ) ) ) ;
+    public final EObject ruleSignalWatcher() throws RecognitionException {
         EObject current = null;
 
-        Token otherlv_0=null;
-        Token lv_filemask_1_0=null;
+        Token otherlv_1=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
 
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:466:2: ( (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) ) )
-            // InternalSignalDSL.g:467:2: (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) )
-            {
-            // InternalSignalDSL.g:467:2: (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) )
-            // InternalSignalDSL.g:468:3: otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) )
-            {
-            otherlv_0=(Token)match(input,19,FOLLOW_8); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_0, grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0());
-              		
-            }
-            // InternalSignalDSL.g:472:3: ( (lv_filemask_1_0= RULE_STRING ) )
-            // InternalSignalDSL.g:473:4: (lv_filemask_1_0= RULE_STRING )
-            {
-            // InternalSignalDSL.g:473:4: (lv_filemask_1_0= RULE_STRING )
-            // InternalSignalDSL.g:474:5: lv_filemask_1_0= RULE_STRING
-            {
-            lv_filemask_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					newLeafNode(lv_filemask_1_0, grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0());
-              				
-            }
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElement(grammarAccess.getTriggerFileRule());
-              					}
-              					setWithLastConsumed(
-              						current,
-              						"filemask",
-              						lv_filemask_1_0,
-              						"org.eclipse.xtext.xbase.Xtype.STRING");
-              				
-            }
-
-            }
-
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleTriggerFile"
-
-
-    // $ANTLR start "entryRuleSignalScheduler"
-    // InternalSignalDSL.g:494:1: entryRuleSignalScheduler returns [EObject current=null] : iv_ruleSignalScheduler= ruleSignalScheduler EOF ;
-    public final EObject entryRuleSignalScheduler() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleSignalScheduler = null;
-
-
-        try {
-            // InternalSignalDSL.g:494:56: (iv_ruleSignalScheduler= ruleSignalScheduler EOF )
-            // InternalSignalDSL.g:495:2: iv_ruleSignalScheduler= ruleSignalScheduler EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getSignalSchedulerRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleSignalScheduler=ruleSignalScheduler();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleSignalScheduler; 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleSignalScheduler"
-
-
-    // $ANTLR start "ruleSignalScheduler"
-    // InternalSignalDSL.g:501:1: ruleSignalScheduler returns [EObject current=null] : (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) ) ;
-    public final EObject ruleSignalScheduler() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_0=null;
-        EObject lv_scheduler_1_0 = null;
+        EObject lv_definition_3_0 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:507:2: ( (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) ) )
-            // InternalSignalDSL.g:508:2: (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) )
+            // InternalSignalDSL.g:264:2: ( ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_definition_3_0= ruleWatcherDefinition ) ) ) )
+            // InternalSignalDSL.g:265:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_definition_3_0= ruleWatcherDefinition ) ) )
             {
-            // InternalSignalDSL.g:508:2: (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) )
-            // InternalSignalDSL.g:509:3: otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) )
+            // InternalSignalDSL.g:265:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_definition_3_0= ruleWatcherDefinition ) ) )
+            // InternalSignalDSL.g:266:3: () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_definition_3_0= ruleWatcherDefinition ) )
             {
-            otherlv_0=(Token)match(input,20,FOLLOW_13); if (state.failed) return current;
+            // InternalSignalDSL.g:266:3: ()
+            // InternalSignalDSL.g:267:4: 
+            {
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_0, grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0());
+              				current = forceCreateModelElement(
+              					grammarAccess.getSignalWatcherAccess().getSignalWatcherAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getSignalWatcherAccess().getWatcherKeyword_1());
               		
             }
-            // InternalSignalDSL.g:513:3: ( (lv_scheduler_1_0= ruleScheduler ) )
-            // InternalSignalDSL.g:514:4: (lv_scheduler_1_0= ruleScheduler )
+            // InternalSignalDSL.g:277:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
+            // InternalSignalDSL.g:278:4: (lv_name_2_0= ruleTRANSLATABLEID )
             {
-            // InternalSignalDSL.g:514:4: (lv_scheduler_1_0= ruleScheduler )
-            // InternalSignalDSL.g:515:5: lv_scheduler_1_0= ruleScheduler
+            // InternalSignalDSL.g:278:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:279:5: lv_name_2_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
 
-              					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0());
+              					newCompositeNode(grammarAccess.getSignalWatcherAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_2);
-            lv_scheduler_1_0=ruleScheduler();
+            pushFollow(FOLLOW_7);
+            lv_name_2_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+              						current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
               					}
               					set(
               						current,
-              						"scheduler",
-              						lv_scheduler_1_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.Scheduler");
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalSignalDSL.g:296:3: ( (lv_definition_3_0= ruleWatcherDefinition ) )
+            // InternalSignalDSL.g:297:4: (lv_definition_3_0= ruleWatcherDefinition )
+            {
+            // InternalSignalDSL.g:297:4: (lv_definition_3_0= ruleWatcherDefinition )
+            // InternalSignalDSL.g:298:5: lv_definition_3_0= ruleWatcherDefinition
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getSignalWatcherAccess().getDefinitionWatcherDefinitionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_definition_3_0=ruleWatcherDefinition();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
+              					}
+              					set(
+              						current,
+              						"definition",
+              						lv_definition_3_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.WatcherDefinition");
               					afterParserOrEnumRuleCall();
               				
             }
@@ -1472,31 +893,31 @@
         }
         return current;
     }
-    // $ANTLR end "ruleSignalScheduler"
+    // $ANTLR end "ruleSignalWatcher"
 
 
-    // $ANTLR start "entryRuleScheduler"
-    // InternalSignalDSL.g:536:1: entryRuleScheduler returns [EObject current=null] : iv_ruleScheduler= ruleScheduler EOF ;
-    public final EObject entryRuleScheduler() throws RecognitionException {
+    // $ANTLR start "entryRuleWatcherDefinition"
+    // InternalSignalDSL.g:319:1: entryRuleWatcherDefinition returns [EObject current=null] : iv_ruleWatcherDefinition= ruleWatcherDefinition EOF ;
+    public final EObject entryRuleWatcherDefinition() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleScheduler = null;
+        EObject iv_ruleWatcherDefinition = null;
 
 
         try {
-            // InternalSignalDSL.g:536:50: (iv_ruleScheduler= ruleScheduler EOF )
-            // InternalSignalDSL.g:537:2: iv_ruleScheduler= ruleScheduler EOF
+            // InternalSignalDSL.g:319:58: (iv_ruleWatcherDefinition= ruleWatcherDefinition EOF )
+            // InternalSignalDSL.g:320:2: iv_ruleWatcherDefinition= ruleWatcherDefinition EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getSchedulerRule()); 
+               newCompositeNode(grammarAccess.getWatcherDefinitionRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleScheduler=ruleScheduler();
+            iv_ruleWatcherDefinition=ruleWatcherDefinition();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleScheduler; 
+               current =iv_ruleWatcherDefinition; 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -1512,12 +933,1001 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleScheduler"
+    // $ANTLR end "entryRuleWatcherDefinition"
 
 
-    // $ANTLR start "ruleScheduler"
-    // InternalSignalDSL.g:543:1: ruleScheduler returns [EObject current=null] : (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler ) ;
-    public final EObject ruleScheduler() throws RecognitionException {
+    // $ANTLR start "ruleWatcherDefinition"
+    // InternalSignalDSL.g:326:1: ruleWatcherDefinition returns [EObject current=null] : (this_WatcherWithFileMask_0= ruleWatcherWithFileMask | this_WatcherWithFileName_1= ruleWatcherWithFileName ) ;
+    public final EObject ruleWatcherDefinition() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_WatcherWithFileMask_0 = null;
+
+        EObject this_WatcherWithFileName_1 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:332:2: ( (this_WatcherWithFileMask_0= ruleWatcherWithFileMask | this_WatcherWithFileName_1= ruleWatcherWithFileName ) )
+            // InternalSignalDSL.g:333:2: (this_WatcherWithFileMask_0= ruleWatcherWithFileMask | this_WatcherWithFileName_1= ruleWatcherWithFileName )
+            {
+            // InternalSignalDSL.g:333:2: (this_WatcherWithFileMask_0= ruleWatcherWithFileMask | this_WatcherWithFileName_1= ruleWatcherWithFileName )
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==17) ) {
+                alt5=1;
+            }
+            else if ( (LA5_0==19) ) {
+                alt5=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+            switch (alt5) {
+                case 1 :
+                    // InternalSignalDSL.g:334:3: this_WatcherWithFileMask_0= ruleWatcherWithFileMask
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileMaskParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_WatcherWithFileMask_0=ruleWatcherWithFileMask();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_WatcherWithFileMask_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalSignalDSL.g:343:3: this_WatcherWithFileName_1= ruleWatcherWithFileName
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getWatcherDefinitionAccess().getWatcherWithFileNameParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_WatcherWithFileName_1=ruleWatcherWithFileName();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_WatcherWithFileName_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleWatcherDefinition"
+
+
+    // $ANTLR start "entryRuleWatcherWithFileMask"
+    // InternalSignalDSL.g:355:1: entryRuleWatcherWithFileMask returns [EObject current=null] : iv_ruleWatcherWithFileMask= ruleWatcherWithFileMask EOF ;
+    public final EObject entryRuleWatcherWithFileMask() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleWatcherWithFileMask = null;
+
+
+        try {
+            // InternalSignalDSL.g:355:60: (iv_ruleWatcherWithFileMask= ruleWatcherWithFileMask EOF )
+            // InternalSignalDSL.g:356:2: iv_ruleWatcherWithFileMask= ruleWatcherWithFileMask EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getWatcherWithFileMaskRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleWatcherWithFileMask=ruleWatcherWithFileMask();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleWatcherWithFileMask; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleWatcherWithFileMask"
+
+
+    // $ANTLR start "ruleWatcherWithFileMask"
+    // InternalSignalDSL.g:362:1: ruleWatcherWithFileMask returns [EObject current=null] : ( () otherlv_1= 'filemask' ( (lv_filemask_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchange_7_0= ruleSignalDatainterchange ) ) otherlv_8= '}' ) ;
+    public final EObject ruleWatcherWithFileMask() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_filemask_2_0=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Enumerator lv_executiontype_3_0 = null;
+
+        EObject lv_interchange_7_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:368:2: ( ( () otherlv_1= 'filemask' ( (lv_filemask_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchange_7_0= ruleSignalDatainterchange ) ) otherlv_8= '}' ) )
+            // InternalSignalDSL.g:369:2: ( () otherlv_1= 'filemask' ( (lv_filemask_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchange_7_0= ruleSignalDatainterchange ) ) otherlv_8= '}' )
+            {
+            // InternalSignalDSL.g:369:2: ( () otherlv_1= 'filemask' ( (lv_filemask_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchange_7_0= ruleSignalDatainterchange ) ) otherlv_8= '}' )
+            // InternalSignalDSL.g:370:3: () otherlv_1= 'filemask' ( (lv_filemask_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchange_7_0= ruleSignalDatainterchange ) ) otherlv_8= '}'
+            {
+            // InternalSignalDSL.g:370:3: ()
+            // InternalSignalDSL.g:371:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getWatcherWithFileMaskAccess().getWatcherWithFileMaskAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,17,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getWatcherWithFileMaskAccess().getFilemaskKeyword_1());
+              		
+            }
+            // InternalSignalDSL.g:381:3: ( (lv_filemask_2_0= RULE_STRING ) )
+            // InternalSignalDSL.g:382:4: (lv_filemask_2_0= RULE_STRING )
+            {
+            // InternalSignalDSL.g:382:4: (lv_filemask_2_0= RULE_STRING )
+            // InternalSignalDSL.g:383:5: lv_filemask_2_0= RULE_STRING
+            {
+            lv_filemask_2_0=(Token)match(input,RULE_STRING,FOLLOW_9); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_filemask_2_0, grammarAccess.getWatcherWithFileMaskAccess().getFilemaskSTRINGTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getWatcherWithFileMaskRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"filemask",
+              						lv_filemask_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalSignalDSL.g:399:3: ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) )
+            // InternalSignalDSL.g:400:4: (lv_executiontype_3_0= ruleSignalExecutionTypeEnum )
+            {
+            // InternalSignalDSL.g:400:4: (lv_executiontype_3_0= ruleSignalExecutionTypeEnum )
+            // InternalSignalDSL.g:401:5: lv_executiontype_3_0= ruleSignalExecutionTypeEnum
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_10);
+            lv_executiontype_3_0=ruleSignalExecutionTypeEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getWatcherWithFileMaskRule());
+              					}
+              					set(
+              						current,
+              						"executiontype",
+              						lv_executiontype_3_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getWatcherWithFileMaskAccess().getFromKeyword_4());
+              		
+            }
+            // InternalSignalDSL.g:422:3: ( (otherlv_5= RULE_ID ) )
+            // InternalSignalDSL.g:423:4: (otherlv_5= RULE_ID )
+            {
+            // InternalSignalDSL.g:423:4: (otherlv_5= RULE_ID )
+            // InternalSignalDSL.g:424:5: otherlv_5= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getWatcherWithFileMaskRule());
+              					}
+              				
+            }
+            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_11); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_5, grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0());
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,14,FOLLOW_12); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getWatcherWithFileMaskAccess().getLeftCurlyBracketKeyword_6());
+              		
+            }
+            // InternalSignalDSL.g:439:3: ( (lv_interchange_7_0= ruleSignalDatainterchange ) )
+            // InternalSignalDSL.g:440:4: (lv_interchange_7_0= ruleSignalDatainterchange )
+            {
+            // InternalSignalDSL.g:440:4: (lv_interchange_7_0= ruleSignalDatainterchange )
+            // InternalSignalDSL.g:441:5: lv_interchange_7_0= ruleSignalDatainterchange
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeSignalDatainterchangeParserRuleCall_7_0());
+              				
+            }
+            pushFollow(FOLLOW_13);
+            lv_interchange_7_0=ruleSignalDatainterchange();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getWatcherWithFileMaskRule());
+              					}
+              					set(
+              						current,
+              						"interchange",
+              						lv_interchange_7_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_8=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_8, grammarAccess.getWatcherWithFileMaskAccess().getRightCurlyBracketKeyword_8());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleWatcherWithFileMask"
+
+
+    // $ANTLR start "entryRuleWatcherWithFileName"
+    // InternalSignalDSL.g:466:1: entryRuleWatcherWithFileName returns [EObject current=null] : iv_ruleWatcherWithFileName= ruleWatcherWithFileName EOF ;
+    public final EObject entryRuleWatcherWithFileName() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleWatcherWithFileName = null;
+
+
+        try {
+            // InternalSignalDSL.g:466:60: (iv_ruleWatcherWithFileName= ruleWatcherWithFileName EOF )
+            // InternalSignalDSL.g:467:2: iv_ruleWatcherWithFileName= ruleWatcherWithFileName EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getWatcherWithFileNameRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleWatcherWithFileName=ruleWatcherWithFileName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleWatcherWithFileName; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleWatcherWithFileName"
+
+
+    // $ANTLR start "ruleWatcherWithFileName"
+    // InternalSignalDSL.g:473:1: ruleWatcherWithFileName returns [EObject current=null] : ( () otherlv_1= 'filename' ( (lv_filename_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchanges_7_0= ruleSignalDatainterchange ) )* otherlv_8= '}' ) ;
+    public final EObject ruleWatcherWithFileName() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_filename_2_0=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Enumerator lv_executiontype_3_0 = null;
+
+        EObject lv_interchanges_7_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:479:2: ( ( () otherlv_1= 'filename' ( (lv_filename_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchanges_7_0= ruleSignalDatainterchange ) )* otherlv_8= '}' ) )
+            // InternalSignalDSL.g:480:2: ( () otherlv_1= 'filename' ( (lv_filename_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchanges_7_0= ruleSignalDatainterchange ) )* otherlv_8= '}' )
+            {
+            // InternalSignalDSL.g:480:2: ( () otherlv_1= 'filename' ( (lv_filename_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchanges_7_0= ruleSignalDatainterchange ) )* otherlv_8= '}' )
+            // InternalSignalDSL.g:481:3: () otherlv_1= 'filename' ( (lv_filename_2_0= RULE_STRING ) ) ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) ) otherlv_4= 'from' ( (otherlv_5= RULE_ID ) ) otherlv_6= '{' ( (lv_interchanges_7_0= ruleSignalDatainterchange ) )* otherlv_8= '}'
+            {
+            // InternalSignalDSL.g:481:3: ()
+            // InternalSignalDSL.g:482:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getWatcherWithFileNameAccess().getWatcherWithFileNameAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,19,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getWatcherWithFileNameAccess().getFilenameKeyword_1());
+              		
+            }
+            // InternalSignalDSL.g:492:3: ( (lv_filename_2_0= RULE_STRING ) )
+            // InternalSignalDSL.g:493:4: (lv_filename_2_0= RULE_STRING )
+            {
+            // InternalSignalDSL.g:493:4: (lv_filename_2_0= RULE_STRING )
+            // InternalSignalDSL.g:494:5: lv_filename_2_0= RULE_STRING
+            {
+            lv_filename_2_0=(Token)match(input,RULE_STRING,FOLLOW_9); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_filename_2_0, grammarAccess.getWatcherWithFileNameAccess().getFilenameSTRINGTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getWatcherWithFileNameRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"filename",
+              						lv_filename_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalSignalDSL.g:510:3: ( (lv_executiontype_3_0= ruleSignalExecutionTypeEnum ) )
+            // InternalSignalDSL.g:511:4: (lv_executiontype_3_0= ruleSignalExecutionTypeEnum )
+            {
+            // InternalSignalDSL.g:511:4: (lv_executiontype_3_0= ruleSignalExecutionTypeEnum )
+            // InternalSignalDSL.g:512:5: lv_executiontype_3_0= ruleSignalExecutionTypeEnum
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getWatcherWithFileNameAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_10);
+            lv_executiontype_3_0=ruleSignalExecutionTypeEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getWatcherWithFileNameRule());
+              					}
+              					set(
+              						current,
+              						"executiontype",
+              						lv_executiontype_3_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getWatcherWithFileNameAccess().getFromKeyword_4());
+              		
+            }
+            // InternalSignalDSL.g:533:3: ( (otherlv_5= RULE_ID ) )
+            // InternalSignalDSL.g:534:4: (otherlv_5= RULE_ID )
+            {
+            // InternalSignalDSL.g:534:4: (otherlv_5= RULE_ID )
+            // InternalSignalDSL.g:535:5: otherlv_5= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getWatcherWithFileNameRule());
+              					}
+              				
+            }
+            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_11); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_5, grammarAccess.getWatcherWithFileNameAccess().getInterchangegroupDataInterchangeGroupCrossReference_5_0());
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,14,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getWatcherWithFileNameAccess().getLeftCurlyBracketKeyword_6());
+              		
+            }
+            // InternalSignalDSL.g:550:3: ( (lv_interchanges_7_0= ruleSignalDatainterchange ) )*
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==29||LA6_0==102) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // InternalSignalDSL.g:551:4: (lv_interchanges_7_0= ruleSignalDatainterchange )
+            	    {
+            	    // InternalSignalDSL.g:551:4: (lv_interchanges_7_0= ruleSignalDatainterchange )
+            	    // InternalSignalDSL.g:552:5: lv_interchanges_7_0= ruleSignalDatainterchange
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getWatcherWithFileNameAccess().getInterchangesSignalDatainterchangeParserRuleCall_7_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_14);
+            	    lv_interchanges_7_0=ruleSignalDatainterchange();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getWatcherWithFileNameRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"interchanges",
+            	      						lv_interchanges_7_0,
+            	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
+            	      					afterParserOrEnumRuleCall();
+            	      				
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop6;
+                }
+            } while (true);
+
+            otherlv_8=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_8, grammarAccess.getWatcherWithFileNameAccess().getRightCurlyBracketKeyword_8());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleWatcherWithFileName"
+
+
+    // $ANTLR start "entryRuleSignalScheduler"
+    // InternalSignalDSL.g:577:1: entryRuleSignalScheduler returns [EObject current=null] : iv_ruleSignalScheduler= ruleSignalScheduler EOF ;
+    public final EObject entryRuleSignalScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSignalScheduler = null;
+
+
+        try {
+            // InternalSignalDSL.g:577:56: (iv_ruleSignalScheduler= ruleSignalScheduler EOF )
+            // InternalSignalDSL.g:578:2: iv_ruleSignalScheduler= ruleSignalScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getSignalSchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleSignalScheduler=ruleSignalScheduler();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleSignalScheduler; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSignalScheduler"
+
+
+    // $ANTLR start "ruleSignalScheduler"
+    // InternalSignalDSL.g:584:1: ruleSignalScheduler returns [EObject current=null] : ( () otherlv_1= 'scheduler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_schedulertype_3_0= ruleSchedulerType ) ) ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )? otherlv_5= 'from' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_interchanges_8_0= ruleSignalDatainterchange ) )* otherlv_9= '}' ) ;
+    public final EObject ruleSignalScheduler() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+        EObject lv_schedulertype_3_0 = null;
+
+        Enumerator lv_executiontype_4_0 = null;
+
+        EObject lv_interchanges_8_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:590:2: ( ( () otherlv_1= 'scheduler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_schedulertype_3_0= ruleSchedulerType ) ) ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )? otherlv_5= 'from' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_interchanges_8_0= ruleSignalDatainterchange ) )* otherlv_9= '}' ) )
+            // InternalSignalDSL.g:591:2: ( () otherlv_1= 'scheduler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_schedulertype_3_0= ruleSchedulerType ) ) ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )? otherlv_5= 'from' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_interchanges_8_0= ruleSignalDatainterchange ) )* otherlv_9= '}' )
+            {
+            // InternalSignalDSL.g:591:2: ( () otherlv_1= 'scheduler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_schedulertype_3_0= ruleSchedulerType ) ) ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )? otherlv_5= 'from' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_interchanges_8_0= ruleSignalDatainterchange ) )* otherlv_9= '}' )
+            // InternalSignalDSL.g:592:3: () otherlv_1= 'scheduler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_schedulertype_3_0= ruleSchedulerType ) ) ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )? otherlv_5= 'from' ( (otherlv_6= RULE_ID ) ) otherlv_7= '{' ( (lv_interchanges_8_0= ruleSignalDatainterchange ) )* otherlv_9= '}'
+            {
+            // InternalSignalDSL.g:592:3: ()
+            // InternalSignalDSL.g:593:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getSignalSchedulerAccess().getSignalSchedulerAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,20,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getSignalSchedulerAccess().getSchedulerKeyword_1());
+              		
+            }
+            // InternalSignalDSL.g:603:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
+            // InternalSignalDSL.g:604:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            {
+            // InternalSignalDSL.g:604:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:605:5: lv_name_2_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_15);
+            lv_name_2_0=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalSignalDSL.g:622:3: ( (lv_schedulertype_3_0= ruleSchedulerType ) )
+            // InternalSignalDSL.g:623:4: (lv_schedulertype_3_0= ruleSchedulerType )
+            {
+            // InternalSignalDSL.g:623:4: (lv_schedulertype_3_0= ruleSchedulerType )
+            // InternalSignalDSL.g:624:5: lv_schedulertype_3_0= ruleSchedulerType
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getSchedulertypeSchedulerTypeParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_16);
+            lv_schedulertype_3_0=ruleSchedulerType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+              					}
+              					set(
+              						current,
+              						"schedulertype",
+              						lv_schedulertype_3_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.SchedulerType");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalSignalDSL.g:641:3: ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( ((LA7_0>=103 && LA7_0<=104)) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // InternalSignalDSL.g:642:4: (lv_executiontype_4_0= ruleSignalExecutionTypeEnum )
+                    {
+                    // InternalSignalDSL.g:642:4: (lv_executiontype_4_0= ruleSignalExecutionTypeEnum )
+                    // InternalSignalDSL.g:643:5: lv_executiontype_4_0= ruleSignalExecutionTypeEnum
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_10);
+                    lv_executiontype_4_0=ruleSignalExecutionTypeEnum();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+                      					}
+                      					set(
+                      						current,
+                      						"executiontype",
+                      						lv_executiontype_4_0,
+                      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_5, grammarAccess.getSignalSchedulerAccess().getFromKeyword_5());
+              		
+            }
+            // InternalSignalDSL.g:664:3: ( (otherlv_6= RULE_ID ) )
+            // InternalSignalDSL.g:665:4: (otherlv_6= RULE_ID )
+            {
+            // InternalSignalDSL.g:665:4: (otherlv_6= RULE_ID )
+            // InternalSignalDSL.g:666:5: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getSignalSchedulerRule());
+              					}
+              				
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_11); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_6, grammarAccess.getSignalSchedulerAccess().getInterchangegroupDataInterchangeGroupCrossReference_6_0());
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,14,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_7, grammarAccess.getSignalSchedulerAccess().getLeftCurlyBracketKeyword_7());
+              		
+            }
+            // InternalSignalDSL.g:681:3: ( (lv_interchanges_8_0= ruleSignalDatainterchange ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( (LA8_0==29||LA8_0==102) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // InternalSignalDSL.g:682:4: (lv_interchanges_8_0= ruleSignalDatainterchange )
+            	    {
+            	    // InternalSignalDSL.g:682:4: (lv_interchanges_8_0= ruleSignalDatainterchange )
+            	    // InternalSignalDSL.g:683:5: lv_interchanges_8_0= ruleSignalDatainterchange
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getInterchangesSignalDatainterchangeParserRuleCall_8_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_14);
+            	    lv_interchanges_8_0=ruleSignalDatainterchange();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"interchanges",
+            	      						lv_interchanges_8_0,
+            	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
+            	      					afterParserOrEnumRuleCall();
+            	      				
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            otherlv_9=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_9, grammarAccess.getSignalSchedulerAccess().getRightCurlyBracketKeyword_9());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSignalScheduler"
+
+
+    // $ANTLR start "entryRuleSchedulerType"
+    // InternalSignalDSL.g:708:1: entryRuleSchedulerType returns [EObject current=null] : iv_ruleSchedulerType= ruleSchedulerType EOF ;
+    public final EObject entryRuleSchedulerType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSchedulerType = null;
+
+
+        try {
+            // InternalSignalDSL.g:708:54: (iv_ruleSchedulerType= ruleSchedulerType EOF )
+            // InternalSignalDSL.g:709:2: iv_ruleSchedulerType= ruleSchedulerType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getSchedulerTypeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleSchedulerType=ruleSchedulerType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleSchedulerType; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSchedulerType"
+
+
+    // $ANTLR start "ruleSchedulerType"
+    // InternalSignalDSL.g:715:1: ruleSchedulerType returns [EObject current=null] : (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler ) ;
+    public final EObject ruleSchedulerType() throws RecognitionException {
         EObject current = null;
 
         EObject this_CronScheduler_0 = null;
@@ -1535,52 +1945,52 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:549:2: ( (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler ) )
-            // InternalSignalDSL.g:550:2: (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler )
+            // InternalSignalDSL.g:721:2: ( (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler ) )
+            // InternalSignalDSL.g:722:2: (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler )
             {
-            // InternalSignalDSL.g:550:2: (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler )
-            int alt7=5;
+            // InternalSignalDSL.g:722:2: (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler )
+            int alt9=5;
             switch ( input.LA(1) ) {
             case 21:
                 {
-                alt7=1;
+                alt9=1;
                 }
                 break;
             case 22:
                 {
-                alt7=2;
+                alt9=2;
                 }
                 break;
             case 23:
                 {
-                alt7=3;
+                alt9=3;
                 }
                 break;
             case 25:
                 {
-                alt7=4;
+                alt9=4;
                 }
                 break;
             case 27:
                 {
-                alt7=5;
+                alt9=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 7, 0, input);
+                    new NoViableAltException("", 9, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt7) {
+            switch (alt9) {
                 case 1 :
-                    // InternalSignalDSL.g:551:3: this_CronScheduler_0= ruleCronScheduler
+                    // InternalSignalDSL.g:723:3: this_CronScheduler_0= ruleCronScheduler
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0());
+                      			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getCronSchedulerParserRuleCall_0());
                       		
                     }
                     pushFollow(FOLLOW_2);
@@ -1598,11 +2008,11 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:560:3: this_HourlyScheduler_1= ruleHourlyScheduler
+                    // InternalSignalDSL.g:732:3: this_HourlyScheduler_1= ruleHourlyScheduler
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1());
+                      			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getHourlySchedulerParserRuleCall_1());
                       		
                     }
                     pushFollow(FOLLOW_2);
@@ -1620,11 +2030,11 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:569:3: this_DailyScheduler_2= ruleDailyScheduler
+                    // InternalSignalDSL.g:741:3: this_DailyScheduler_2= ruleDailyScheduler
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2());
+                      			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getDailySchedulerParserRuleCall_2());
                       		
                     }
                     pushFollow(FOLLOW_2);
@@ -1642,11 +2052,11 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:578:3: this_WeeklyScheduler_3= ruleWeeklyScheduler
+                    // InternalSignalDSL.g:750:3: this_WeeklyScheduler_3= ruleWeeklyScheduler
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3());
+                      			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getWeeklySchedulerParserRuleCall_3());
                       		
                     }
                     pushFollow(FOLLOW_2);
@@ -1664,11 +2074,11 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:587:3: this_MonthlyScheduler_4= ruleMonthlyScheduler
+                    // InternalSignalDSL.g:759:3: this_MonthlyScheduler_4= ruleMonthlyScheduler
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4());
+                      			newCompositeNode(grammarAccess.getSchedulerTypeAccess().getMonthlySchedulerParserRuleCall_4());
                       		
                     }
                     pushFollow(FOLLOW_2);
@@ -1706,11 +2116,11 @@
         }
         return current;
     }
-    // $ANTLR end "ruleScheduler"
+    // $ANTLR end "ruleSchedulerType"
 
 
     // $ANTLR start "entryRuleCronScheduler"
-    // InternalSignalDSL.g:599:1: entryRuleCronScheduler returns [EObject current=null] : iv_ruleCronScheduler= ruleCronScheduler EOF ;
+    // InternalSignalDSL.g:771:1: entryRuleCronScheduler returns [EObject current=null] : iv_ruleCronScheduler= ruleCronScheduler EOF ;
     public final EObject entryRuleCronScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -1718,8 +2128,8 @@
 
 
         try {
-            // InternalSignalDSL.g:599:54: (iv_ruleCronScheduler= ruleCronScheduler EOF )
-            // InternalSignalDSL.g:600:2: iv_ruleCronScheduler= ruleCronScheduler EOF
+            // InternalSignalDSL.g:771:54: (iv_ruleCronScheduler= ruleCronScheduler EOF )
+            // InternalSignalDSL.g:772:2: iv_ruleCronScheduler= ruleCronScheduler EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCronSchedulerRule()); 
@@ -1750,7 +2160,7 @@
 
 
     // $ANTLR start "ruleCronScheduler"
-    // InternalSignalDSL.g:606:1: ruleCronScheduler returns [EObject current=null] : (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) ) ;
+    // InternalSignalDSL.g:778:1: ruleCronScheduler returns [EObject current=null] : (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) ) ;
     public final EObject ruleCronScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -1761,11 +2171,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:612:2: ( (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) ) )
-            // InternalSignalDSL.g:613:2: (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:784:2: ( (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) ) )
+            // InternalSignalDSL.g:785:2: (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) )
             {
-            // InternalSignalDSL.g:613:2: (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) )
-            // InternalSignalDSL.g:614:3: otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:785:2: (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:786:3: otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) )
             {
             otherlv_0=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -1773,11 +2183,11 @@
               			newLeafNode(otherlv_0, grammarAccess.getCronSchedulerAccess().getCronKeyword_0());
               		
             }
-            // InternalSignalDSL.g:618:3: ( (lv_expression_1_0= RULE_STRING ) )
-            // InternalSignalDSL.g:619:4: (lv_expression_1_0= RULE_STRING )
+            // InternalSignalDSL.g:790:3: ( (lv_expression_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:791:4: (lv_expression_1_0= RULE_STRING )
             {
-            // InternalSignalDSL.g:619:4: (lv_expression_1_0= RULE_STRING )
-            // InternalSignalDSL.g:620:5: lv_expression_1_0= RULE_STRING
+            // InternalSignalDSL.g:791:4: (lv_expression_1_0= RULE_STRING )
+            // InternalSignalDSL.g:792:5: lv_expression_1_0= RULE_STRING
             {
             lv_expression_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -1828,7 +2238,7 @@
 
 
     // $ANTLR start "entryRuleHourlyScheduler"
-    // InternalSignalDSL.g:640:1: entryRuleHourlyScheduler returns [EObject current=null] : iv_ruleHourlyScheduler= ruleHourlyScheduler EOF ;
+    // InternalSignalDSL.g:812:1: entryRuleHourlyScheduler returns [EObject current=null] : iv_ruleHourlyScheduler= ruleHourlyScheduler EOF ;
     public final EObject entryRuleHourlyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -1836,8 +2246,8 @@
 
 
         try {
-            // InternalSignalDSL.g:640:56: (iv_ruleHourlyScheduler= ruleHourlyScheduler EOF )
-            // InternalSignalDSL.g:641:2: iv_ruleHourlyScheduler= ruleHourlyScheduler EOF
+            // InternalSignalDSL.g:812:56: (iv_ruleHourlyScheduler= ruleHourlyScheduler EOF )
+            // InternalSignalDSL.g:813:2: iv_ruleHourlyScheduler= ruleHourlyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getHourlySchedulerRule()); 
@@ -1868,7 +2278,7 @@
 
 
     // $ANTLR start "ruleHourlyScheduler"
-    // InternalSignalDSL.g:647:1: ruleHourlyScheduler returns [EObject current=null] : (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) ) ;
+    // InternalSignalDSL.g:819:1: ruleHourlyScheduler returns [EObject current=null] : (otherlv_0= 'hourlyat' ( (lv_minute_1_0= RULE_INT ) ) ) ;
     public final EObject ruleHourlyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -1879,23 +2289,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:653:2: ( (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) ) )
-            // InternalSignalDSL.g:654:2: (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:825:2: ( (otherlv_0= 'hourlyat' ( (lv_minute_1_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:826:2: (otherlv_0= 'hourlyat' ( (lv_minute_1_0= RULE_INT ) ) )
             {
-            // InternalSignalDSL.g:654:2: (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) )
-            // InternalSignalDSL.g:655:3: otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) )
+            // InternalSignalDSL.g:826:2: (otherlv_0= 'hourlyat' ( (lv_minute_1_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:827:3: otherlv_0= 'hourlyat' ( (lv_minute_1_0= RULE_INT ) )
             {
-            otherlv_0=(Token)match(input,22,FOLLOW_14); if (state.failed) return current;
+            otherlv_0=(Token)match(input,22,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_0, grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0());
+              			newLeafNode(otherlv_0, grammarAccess.getHourlySchedulerAccess().getHourlyatKeyword_0());
               		
             }
-            // InternalSignalDSL.g:659:3: ( (lv_minute_1_0= RULE_INT ) )
-            // InternalSignalDSL.g:660:4: (lv_minute_1_0= RULE_INT )
+            // InternalSignalDSL.g:831:3: ( (lv_minute_1_0= RULE_INT ) )
+            // InternalSignalDSL.g:832:4: (lv_minute_1_0= RULE_INT )
             {
-            // InternalSignalDSL.g:660:4: (lv_minute_1_0= RULE_INT )
-            // InternalSignalDSL.g:661:5: lv_minute_1_0= RULE_INT
+            // InternalSignalDSL.g:832:4: (lv_minute_1_0= RULE_INT )
+            // InternalSignalDSL.g:833:5: lv_minute_1_0= RULE_INT
             {
             lv_minute_1_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -1946,7 +2356,7 @@
 
 
     // $ANTLR start "entryRuleDailyScheduler"
-    // InternalSignalDSL.g:681:1: entryRuleDailyScheduler returns [EObject current=null] : iv_ruleDailyScheduler= ruleDailyScheduler EOF ;
+    // InternalSignalDSL.g:853:1: entryRuleDailyScheduler returns [EObject current=null] : iv_ruleDailyScheduler= ruleDailyScheduler EOF ;
     public final EObject entryRuleDailyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -1954,8 +2364,8 @@
 
 
         try {
-            // InternalSignalDSL.g:681:55: (iv_ruleDailyScheduler= ruleDailyScheduler EOF )
-            // InternalSignalDSL.g:682:2: iv_ruleDailyScheduler= ruleDailyScheduler EOF
+            // InternalSignalDSL.g:853:55: (iv_ruleDailyScheduler= ruleDailyScheduler EOF )
+            // InternalSignalDSL.g:854:2: iv_ruleDailyScheduler= ruleDailyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getDailySchedulerRule()); 
@@ -1986,7 +2396,7 @@
 
 
     // $ANTLR start "ruleDailyScheduler"
-    // InternalSignalDSL.g:688:1: ruleDailyScheduler returns [EObject current=null] : (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) ) ;
+    // InternalSignalDSL.g:860:1: ruleDailyScheduler returns [EObject current=null] : (otherlv_0= 'dailyat' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) ) ;
     public final EObject ruleDailyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -1999,25 +2409,25 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:694:2: ( (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) ) )
-            // InternalSignalDSL.g:695:2: (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:866:2: ( (otherlv_0= 'dailyat' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:867:2: (otherlv_0= 'dailyat' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) )
             {
-            // InternalSignalDSL.g:695:2: (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) )
-            // InternalSignalDSL.g:696:3: otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) )
+            // InternalSignalDSL.g:867:2: (otherlv_0= 'dailyat' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:868:3: otherlv_0= 'dailyat' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) )
             {
-            otherlv_0=(Token)match(input,23,FOLLOW_14); if (state.failed) return current;
+            otherlv_0=(Token)match(input,23,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_0, grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0());
+              			newLeafNode(otherlv_0, grammarAccess.getDailySchedulerAccess().getDailyatKeyword_0());
               		
             }
-            // InternalSignalDSL.g:700:3: ( (lv_hour_1_0= RULE_INT ) )
-            // InternalSignalDSL.g:701:4: (lv_hour_1_0= RULE_INT )
+            // InternalSignalDSL.g:872:3: ( (lv_hour_1_0= RULE_INT ) )
+            // InternalSignalDSL.g:873:4: (lv_hour_1_0= RULE_INT )
             {
-            // InternalSignalDSL.g:701:4: (lv_hour_1_0= RULE_INT )
-            // InternalSignalDSL.g:702:5: lv_hour_1_0= RULE_INT
+            // InternalSignalDSL.g:873:4: (lv_hour_1_0= RULE_INT )
+            // InternalSignalDSL.g:874:5: lv_hour_1_0= RULE_INT
             {
-            lv_hour_1_0=(Token)match(input,RULE_INT,FOLLOW_15); if (state.failed) return current;
+            lv_hour_1_0=(Token)match(input,RULE_INT,FOLLOW_18); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(lv_hour_1_0, grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0());
@@ -2041,17 +2451,17 @@
 
             }
 
-            otherlv_2=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+            otherlv_2=(Token)match(input,24,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getDailySchedulerAccess().getColonKeyword_2());
               		
             }
-            // InternalSignalDSL.g:722:3: ( (lv_minute_3_0= RULE_INT ) )
-            // InternalSignalDSL.g:723:4: (lv_minute_3_0= RULE_INT )
+            // InternalSignalDSL.g:894:3: ( (lv_minute_3_0= RULE_INT ) )
+            // InternalSignalDSL.g:895:4: (lv_minute_3_0= RULE_INT )
             {
-            // InternalSignalDSL.g:723:4: (lv_minute_3_0= RULE_INT )
-            // InternalSignalDSL.g:724:5: lv_minute_3_0= RULE_INT
+            // InternalSignalDSL.g:895:4: (lv_minute_3_0= RULE_INT )
+            // InternalSignalDSL.g:896:5: lv_minute_3_0= RULE_INT
             {
             lv_minute_3_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -2102,7 +2512,7 @@
 
 
     // $ANTLR start "entryRuleWeeklyScheduler"
-    // InternalSignalDSL.g:744:1: entryRuleWeeklyScheduler returns [EObject current=null] : iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF ;
+    // InternalSignalDSL.g:916:1: entryRuleWeeklyScheduler returns [EObject current=null] : iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF ;
     public final EObject entryRuleWeeklyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -2110,8 +2520,8 @@
 
 
         try {
-            // InternalSignalDSL.g:744:56: (iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF )
-            // InternalSignalDSL.g:745:2: iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF
+            // InternalSignalDSL.g:916:56: (iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF )
+            // InternalSignalDSL.g:917:2: iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getWeeklySchedulerRule()); 
@@ -2142,7 +2552,7 @@
 
 
     // $ANTLR start "ruleWeeklyScheduler"
-    // InternalSignalDSL.g:751:1: ruleWeeklyScheduler returns [EObject current=null] : (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) ;
+    // InternalSignalDSL.g:923:1: ruleWeeklyScheduler returns [EObject current=null] : (otherlv_0= 'weeklyon' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) ;
     public final EObject ruleWeeklyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -2158,30 +2568,30 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:757:2: ( (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) )
-            // InternalSignalDSL.g:758:2: (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:929:2: ( (otherlv_0= 'weeklyon' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:930:2: (otherlv_0= 'weeklyon' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
             {
-            // InternalSignalDSL.g:758:2: (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
-            // InternalSignalDSL.g:759:3: otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) )
+            // InternalSignalDSL.g:930:2: (otherlv_0= 'weeklyon' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:931:3: otherlv_0= 'weeklyon' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) )
             {
-            otherlv_0=(Token)match(input,25,FOLLOW_16); if (state.failed) return current;
+            otherlv_0=(Token)match(input,25,FOLLOW_19); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_0, grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0());
+              			newLeafNode(otherlv_0, grammarAccess.getWeeklySchedulerAccess().getWeeklyonKeyword_0());
               		
             }
-            // InternalSignalDSL.g:763:3: ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) )
-            // InternalSignalDSL.g:764:4: (lv_dayofweek_1_0= ruleDayOfWeekEnum )
+            // InternalSignalDSL.g:935:3: ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) )
+            // InternalSignalDSL.g:936:4: (lv_dayofweek_1_0= ruleDayOfWeekEnum )
             {
-            // InternalSignalDSL.g:764:4: (lv_dayofweek_1_0= ruleDayOfWeekEnum )
-            // InternalSignalDSL.g:765:5: lv_dayofweek_1_0= ruleDayOfWeekEnum
+            // InternalSignalDSL.g:936:4: (lv_dayofweek_1_0= ruleDayOfWeekEnum )
+            // InternalSignalDSL.g:937:5: lv_dayofweek_1_0= ruleDayOfWeekEnum
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0());
               				
             }
-            pushFollow(FOLLOW_17);
+            pushFollow(FOLLOW_20);
             lv_dayofweek_1_0=ruleDayOfWeekEnum();
 
             state._fsp--;
@@ -2205,19 +2615,19 @@
 
             }
 
-            otherlv_2=(Token)match(input,26,FOLLOW_14); if (state.failed) return current;
+            otherlv_2=(Token)match(input,26,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2());
               		
             }
-            // InternalSignalDSL.g:786:3: ( (lv_hour_3_0= RULE_INT ) )
-            // InternalSignalDSL.g:787:4: (lv_hour_3_0= RULE_INT )
+            // InternalSignalDSL.g:958:3: ( (lv_hour_3_0= RULE_INT ) )
+            // InternalSignalDSL.g:959:4: (lv_hour_3_0= RULE_INT )
             {
-            // InternalSignalDSL.g:787:4: (lv_hour_3_0= RULE_INT )
-            // InternalSignalDSL.g:788:5: lv_hour_3_0= RULE_INT
+            // InternalSignalDSL.g:959:4: (lv_hour_3_0= RULE_INT )
+            // InternalSignalDSL.g:960:5: lv_hour_3_0= RULE_INT
             {
-            lv_hour_3_0=(Token)match(input,RULE_INT,FOLLOW_15); if (state.failed) return current;
+            lv_hour_3_0=(Token)match(input,RULE_INT,FOLLOW_18); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(lv_hour_3_0, grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0());
@@ -2241,17 +2651,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+            otherlv_4=(Token)match(input,24,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4());
               		
             }
-            // InternalSignalDSL.g:808:3: ( (lv_minute_5_0= RULE_INT ) )
-            // InternalSignalDSL.g:809:4: (lv_minute_5_0= RULE_INT )
+            // InternalSignalDSL.g:980:3: ( (lv_minute_5_0= RULE_INT ) )
+            // InternalSignalDSL.g:981:4: (lv_minute_5_0= RULE_INT )
             {
-            // InternalSignalDSL.g:809:4: (lv_minute_5_0= RULE_INT )
-            // InternalSignalDSL.g:810:5: lv_minute_5_0= RULE_INT
+            // InternalSignalDSL.g:981:4: (lv_minute_5_0= RULE_INT )
+            // InternalSignalDSL.g:982:5: lv_minute_5_0= RULE_INT
             {
             lv_minute_5_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -2302,7 +2712,7 @@
 
 
     // $ANTLR start "entryRuleMonthlyScheduler"
-    // InternalSignalDSL.g:830:1: entryRuleMonthlyScheduler returns [EObject current=null] : iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF ;
+    // InternalSignalDSL.g:1002:1: entryRuleMonthlyScheduler returns [EObject current=null] : iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF ;
     public final EObject entryRuleMonthlyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -2310,8 +2720,8 @@
 
 
         try {
-            // InternalSignalDSL.g:830:57: (iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF )
-            // InternalSignalDSL.g:831:2: iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF
+            // InternalSignalDSL.g:1002:57: (iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF )
+            // InternalSignalDSL.g:1003:2: iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getMonthlySchedulerRule()); 
@@ -2342,7 +2752,7 @@
 
 
     // $ANTLR start "ruleMonthlyScheduler"
-    // InternalSignalDSL.g:837:1: ruleMonthlyScheduler returns [EObject current=null] : (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) ;
+    // InternalSignalDSL.g:1009:1: ruleMonthlyScheduler returns [EObject current=null] : (otherlv_0= 'monthlyon' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) ;
     public final EObject ruleMonthlyScheduler() throws RecognitionException {
         EObject current = null;
 
@@ -2357,25 +2767,25 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:843:2: ( (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) )
-            // InternalSignalDSL.g:844:2: (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:1015:2: ( (otherlv_0= 'monthlyon' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:1016:2: (otherlv_0= 'monthlyon' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
             {
-            // InternalSignalDSL.g:844:2: (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
-            // InternalSignalDSL.g:845:3: otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) )
+            // InternalSignalDSL.g:1016:2: (otherlv_0= 'monthlyon' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:1017:3: otherlv_0= 'monthlyon' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) )
             {
-            otherlv_0=(Token)match(input,27,FOLLOW_14); if (state.failed) return current;
+            otherlv_0=(Token)match(input,27,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_0, grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0());
+              			newLeafNode(otherlv_0, grammarAccess.getMonthlySchedulerAccess().getMonthlyonKeyword_0());
               		
             }
-            // InternalSignalDSL.g:849:3: ( (lv_dayofmonth_1_0= RULE_INT ) )
-            // InternalSignalDSL.g:850:4: (lv_dayofmonth_1_0= RULE_INT )
+            // InternalSignalDSL.g:1021:3: ( (lv_dayofmonth_1_0= RULE_INT ) )
+            // InternalSignalDSL.g:1022:4: (lv_dayofmonth_1_0= RULE_INT )
             {
-            // InternalSignalDSL.g:850:4: (lv_dayofmonth_1_0= RULE_INT )
-            // InternalSignalDSL.g:851:5: lv_dayofmonth_1_0= RULE_INT
+            // InternalSignalDSL.g:1022:4: (lv_dayofmonth_1_0= RULE_INT )
+            // InternalSignalDSL.g:1023:5: lv_dayofmonth_1_0= RULE_INT
             {
-            lv_dayofmonth_1_0=(Token)match(input,RULE_INT,FOLLOW_17); if (state.failed) return current;
+            lv_dayofmonth_1_0=(Token)match(input,RULE_INT,FOLLOW_20); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(lv_dayofmonth_1_0, grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0());
@@ -2399,19 +2809,19 @@
 
             }
 
-            otherlv_2=(Token)match(input,26,FOLLOW_14); if (state.failed) return current;
+            otherlv_2=(Token)match(input,26,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2());
               		
             }
-            // InternalSignalDSL.g:871:3: ( (lv_hour_3_0= RULE_INT ) )
-            // InternalSignalDSL.g:872:4: (lv_hour_3_0= RULE_INT )
+            // InternalSignalDSL.g:1043:3: ( (lv_hour_3_0= RULE_INT ) )
+            // InternalSignalDSL.g:1044:4: (lv_hour_3_0= RULE_INT )
             {
-            // InternalSignalDSL.g:872:4: (lv_hour_3_0= RULE_INT )
-            // InternalSignalDSL.g:873:5: lv_hour_3_0= RULE_INT
+            // InternalSignalDSL.g:1044:4: (lv_hour_3_0= RULE_INT )
+            // InternalSignalDSL.g:1045:5: lv_hour_3_0= RULE_INT
             {
-            lv_hour_3_0=(Token)match(input,RULE_INT,FOLLOW_15); if (state.failed) return current;
+            lv_hour_3_0=(Token)match(input,RULE_INT,FOLLOW_18); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(lv_hour_3_0, grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0());
@@ -2435,17 +2845,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+            otherlv_4=(Token)match(input,24,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4());
               		
             }
-            // InternalSignalDSL.g:893:3: ( (lv_minute_5_0= RULE_INT ) )
-            // InternalSignalDSL.g:894:4: (lv_minute_5_0= RULE_INT )
+            // InternalSignalDSL.g:1065:3: ( (lv_minute_5_0= RULE_INT ) )
+            // InternalSignalDSL.g:1066:4: (lv_minute_5_0= RULE_INT )
             {
-            // InternalSignalDSL.g:894:4: (lv_minute_5_0= RULE_INT )
-            // InternalSignalDSL.g:895:5: lv_minute_5_0= RULE_INT
+            // InternalSignalDSL.g:1066:4: (lv_minute_5_0= RULE_INT )
+            // InternalSignalDSL.g:1067:5: lv_minute_5_0= RULE_INT
             {
             lv_minute_5_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -2496,7 +2906,7 @@
 
 
     // $ANTLR start "entryRuleSignalDatainterchange"
-    // InternalSignalDSL.g:915:1: entryRuleSignalDatainterchange returns [EObject current=null] : iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF ;
+    // InternalSignalDSL.g:1087:1: entryRuleSignalDatainterchange returns [EObject current=null] : iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF ;
     public final EObject entryRuleSignalDatainterchange() throws RecognitionException {
         EObject current = null;
 
@@ -2504,8 +2914,8 @@
 
 
         try {
-            // InternalSignalDSL.g:915:62: (iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF )
-            // InternalSignalDSL.g:916:2: iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF
+            // InternalSignalDSL.g:1087:62: (iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF )
+            // InternalSignalDSL.g:1088:2: iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSignalDatainterchangeRule()); 
@@ -2536,13 +2946,12 @@
 
 
     // $ANTLR start "ruleSignalDatainterchange"
-    // InternalSignalDSL.g:922:1: ruleSignalDatainterchange returns [EObject current=null] : ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) ) ;
+    // InternalSignalDSL.g:1094:1: ruleSignalDatainterchange returns [EObject current=null] : ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) ( (lv_baseinterchange_2_0= 'applyon' ) )? ) ;
     public final EObject ruleSignalDatainterchange() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
-        Token otherlv_2=null;
-        Token lv_fileName_3_0=null;
+        Token lv_baseinterchange_2_0=null;
         Enumerator lv_dataAction_0_0 = null;
 
 
@@ -2550,17 +2959,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:928:2: ( ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) ) )
-            // InternalSignalDSL.g:929:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:1100:2: ( ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) ( (lv_baseinterchange_2_0= 'applyon' ) )? ) )
+            // InternalSignalDSL.g:1101:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) ( (lv_baseinterchange_2_0= 'applyon' ) )? )
             {
-            // InternalSignalDSL.g:929:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) )
-            // InternalSignalDSL.g:930:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) )
+            // InternalSignalDSL.g:1101:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) ( (lv_baseinterchange_2_0= 'applyon' ) )? )
+            // InternalSignalDSL.g:1102:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) ( (lv_baseinterchange_2_0= 'applyon' ) )?
             {
-            // InternalSignalDSL.g:930:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) )
-            // InternalSignalDSL.g:931:4: (lv_dataAction_0_0= ruleSignalActionEnum )
+            // InternalSignalDSL.g:1102:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) )
+            // InternalSignalDSL.g:1103:4: (lv_dataAction_0_0= ruleSignalActionEnum )
             {
-            // InternalSignalDSL.g:931:4: (lv_dataAction_0_0= ruleSignalActionEnum )
-            // InternalSignalDSL.g:932:5: lv_dataAction_0_0= ruleSignalActionEnum
+            // InternalSignalDSL.g:1103:4: (lv_dataAction_0_0= ruleSignalActionEnum )
+            // InternalSignalDSL.g:1104:5: lv_dataAction_0_0= ruleSignalActionEnum
             {
             if ( state.backtracking==0 ) {
 
@@ -2591,11 +3000,11 @@
 
             }
 
-            // InternalSignalDSL.g:949:3: ( (otherlv_1= RULE_ID ) )
-            // InternalSignalDSL.g:950:4: (otherlv_1= RULE_ID )
+            // InternalSignalDSL.g:1121:3: ( (otherlv_1= RULE_ID ) )
+            // InternalSignalDSL.g:1122:4: (otherlv_1= RULE_ID )
             {
-            // InternalSignalDSL.g:950:4: (otherlv_1= RULE_ID )
-            // InternalSignalDSL.g:951:5: otherlv_1= RULE_ID
+            // InternalSignalDSL.g:1122:4: (otherlv_1= RULE_ID )
+            // InternalSignalDSL.g:1123:5: otherlv_1= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -2604,7 +3013,7 @@
               					}
               				
             }
-            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_18); if (state.failed) return current;
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_21); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getSignalDatainterchangeAccess().getDataRefDataInterchangeCrossReference_1_0());
@@ -2616,40 +3025,41 @@
 
             }
 
-            otherlv_2=(Token)match(input,28,FOLLOW_8); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
+            // InternalSignalDSL.g:1134:3: ( (lv_baseinterchange_2_0= 'applyon' ) )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
 
-              			newLeafNode(otherlv_2, grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2());
-              		
+            if ( (LA10_0==28) ) {
+                alt10=1;
             }
-            // InternalSignalDSL.g:966:3: ( (lv_fileName_3_0= RULE_STRING ) )
-            // InternalSignalDSL.g:967:4: (lv_fileName_3_0= RULE_STRING )
-            {
-            // InternalSignalDSL.g:967:4: (lv_fileName_3_0= RULE_STRING )
-            // InternalSignalDSL.g:968:5: lv_fileName_3_0= RULE_STRING
-            {
-            lv_fileName_3_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
+            switch (alt10) {
+                case 1 :
+                    // InternalSignalDSL.g:1135:4: (lv_baseinterchange_2_0= 'applyon' )
+                    {
+                    // InternalSignalDSL.g:1135:4: (lv_baseinterchange_2_0= 'applyon' )
+                    // InternalSignalDSL.g:1136:5: lv_baseinterchange_2_0= 'applyon'
+                    {
+                    lv_baseinterchange_2_0=(Token)match(input,28,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
 
-              					newLeafNode(lv_fileName_3_0, grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0());
-              				
-            }
-            if ( state.backtracking==0 ) {
+                      					newLeafNode(lv_baseinterchange_2_0, grammarAccess.getSignalDatainterchangeAccess().getBaseinterchangeApplyonKeyword_2_0());
+                      				
+                    }
+                    if ( state.backtracking==0 ) {
 
-              					if (current==null) {
-              						current = createModelElement(grammarAccess.getSignalDatainterchangeRule());
-              					}
-              					setWithLastConsumed(
-              						current,
-              						"fileName",
-              						lv_fileName_3_0,
-              						"org.eclipse.xtext.xbase.Xtype.STRING");
-              				
-            }
+                      					if (current==null) {
+                      						current = createModelElement(grammarAccess.getSignalDatainterchangeRule());
+                      					}
+                      					setWithLastConsumed(current, "baseinterchange", true, "applyon");
+                      				
+                    }
 
-            }
+                    }
 
 
+                    }
+                    break;
+
             }
 
 
@@ -2677,7 +3087,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalSignalDSL.g:988:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    // InternalSignalDSL.g:1152:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
     public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
@@ -2685,8 +3095,8 @@
 
 
         try {
-            // InternalSignalDSL.g:988:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // InternalSignalDSL.g:989:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            // InternalSignalDSL.g:1152:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalSignalDSL.g:1153:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -2717,7 +3127,7 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalSignalDSL.g:995:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalSignalDSL.g:1159:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -2727,8 +3137,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1001:2: (this_ID_0= RULE_ID )
-            // InternalSignalDSL.g:1002:2: this_ID_0= RULE_ID
+            // InternalSignalDSL.g:1165:2: (this_ID_0= RULE_ID )
+            // InternalSignalDSL.g:1166:2: this_ID_0= RULE_ID
             {
             this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -2763,7 +3173,7 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalSignalDSL.g:1012:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    // InternalSignalDSL.g:1176:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
     public final EObject entryRuleXImportDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -2771,8 +3181,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1012:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
-            // InternalSignalDSL.g:1013:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
+            // InternalSignalDSL.g:1176:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalSignalDSL.g:1177:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportDeclarationRule()); 
@@ -2803,7 +3213,7 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalSignalDSL.g:1019:1: ruleXImportDeclaration returns [EObject current=null] : ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) ;
+    // InternalSignalDSL.g:1183:1: ruleXImportDeclaration returns [EObject current=null] : ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) ;
     public final EObject ruleXImportDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -2824,14 +3234,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1025:2: ( ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) )
-            // InternalSignalDSL.g:1026:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            // InternalSignalDSL.g:1189:2: ( ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) )
+            // InternalSignalDSL.g:1190:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
             {
-            // InternalSignalDSL.g:1026:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
-            // InternalSignalDSL.g:1027:3: () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )?
+            // InternalSignalDSL.g:1190:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            // InternalSignalDSL.g:1191:3: () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )?
             {
-            // InternalSignalDSL.g:1027:3: ()
-            // InternalSignalDSL.g:1028:4: 
+            // InternalSignalDSL.g:1191:3: ()
+            // InternalSignalDSL.g:1192:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -2843,29 +3253,29 @@
 
             }
 
-            otherlv_1=(Token)match(input,29,FOLLOW_19); if (state.failed) return current;
+            otherlv_1=(Token)match(input,29,FOLLOW_22); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
               		
             }
-            // InternalSignalDSL.g:1038:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
-            int alt10=4;
-            alt10 = dfa10.predict(input);
-            switch (alt10) {
+            // InternalSignalDSL.g:1202:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
+            int alt13=4;
+            alt13 = dfa13.predict(input);
+            switch (alt13) {
                 case 1 :
-                    // InternalSignalDSL.g:1039:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:1203:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
                     {
-                    // InternalSignalDSL.g:1039:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
-                    // InternalSignalDSL.g:1040:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    // InternalSignalDSL.g:1203:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:1204:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
                     {
-                    // InternalSignalDSL.g:1040:5: ( (lv_static_2_0= 'static' ) )
-                    // InternalSignalDSL.g:1041:6: (lv_static_2_0= 'static' )
+                    // InternalSignalDSL.g:1204:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalSignalDSL.g:1205:6: (lv_static_2_0= 'static' )
                     {
-                    // InternalSignalDSL.g:1041:6: (lv_static_2_0= 'static' )
-                    // InternalSignalDSL.g:1042:7: lv_static_2_0= 'static'
+                    // InternalSignalDSL.g:1205:6: (lv_static_2_0= 'static' )
+                    // InternalSignalDSL.g:1206:7: lv_static_2_0= 'static'
                     {
-                    lv_static_2_0=(Token)match(input,30,FOLLOW_20); if (state.failed) return current;
+                    lv_static_2_0=(Token)match(input,30,FOLLOW_23); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
@@ -2885,21 +3295,21 @@
 
                     }
 
-                    // InternalSignalDSL.g:1054:5: ( (lv_extension_3_0= 'extension' ) )?
-                    int alt8=2;
-                    int LA8_0 = input.LA(1);
+                    // InternalSignalDSL.g:1218:5: ( (lv_extension_3_0= 'extension' ) )?
+                    int alt11=2;
+                    int LA11_0 = input.LA(1);
 
-                    if ( (LA8_0==31) ) {
-                        alt8=1;
+                    if ( (LA11_0==31) ) {
+                        alt11=1;
                     }
-                    switch (alt8) {
+                    switch (alt11) {
                         case 1 :
-                            // InternalSignalDSL.g:1055:6: (lv_extension_3_0= 'extension' )
+                            // InternalSignalDSL.g:1219:6: (lv_extension_3_0= 'extension' )
                             {
-                            // InternalSignalDSL.g:1055:6: (lv_extension_3_0= 'extension' )
-                            // InternalSignalDSL.g:1056:7: lv_extension_3_0= 'extension'
+                            // InternalSignalDSL.g:1219:6: (lv_extension_3_0= 'extension' )
+                            // InternalSignalDSL.g:1220:7: lv_extension_3_0= 'extension'
                             {
-                            lv_extension_3_0=(Token)match(input,31,FOLLOW_20); if (state.failed) return current;
+                            lv_extension_3_0=(Token)match(input,31,FOLLOW_23); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(lv_extension_3_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0());
@@ -2922,11 +3332,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:1068:5: ( ( ruleQualifiedNameInStaticImport ) )
-                    // InternalSignalDSL.g:1069:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalSignalDSL.g:1232:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalSignalDSL.g:1233:6: ( ruleQualifiedNameInStaticImport )
                     {
-                    // InternalSignalDSL.g:1069:6: ( ruleQualifiedNameInStaticImport )
-                    // InternalSignalDSL.g:1070:7: ruleQualifiedNameInStaticImport
+                    // InternalSignalDSL.g:1233:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalSignalDSL.g:1234:7: ruleQualifiedNameInStaticImport
                     {
                     if ( state.backtracking==0 ) {
 
@@ -2940,7 +3350,7 @@
                       							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0());
                       						
                     }
-                    pushFollow(FOLLOW_21);
+                    pushFollow(FOLLOW_24);
                     ruleQualifiedNameInStaticImport();
 
                     state._fsp--;
@@ -2956,34 +3366,34 @@
 
                     }
 
-                    // InternalSignalDSL.g:1084:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
-                    int alt9=2;
-                    int LA9_0 = input.LA(1);
+                    // InternalSignalDSL.g:1248:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
 
-                    if ( (LA9_0==32) ) {
-                        alt9=1;
+                    if ( (LA12_0==32) ) {
+                        alt12=1;
                     }
-                    else if ( (LA9_0==RULE_ID) ) {
-                        alt9=2;
+                    else if ( (LA12_0==RULE_ID) ) {
+                        alt12=2;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 9, 0, input);
+                            new NoViableAltException("", 12, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt9) {
+                    switch (alt12) {
                         case 1 :
-                            // InternalSignalDSL.g:1085:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalSignalDSL.g:1249:6: ( (lv_wildcard_5_0= '*' ) )
                             {
-                            // InternalSignalDSL.g:1085:6: ( (lv_wildcard_5_0= '*' ) )
-                            // InternalSignalDSL.g:1086:7: (lv_wildcard_5_0= '*' )
+                            // InternalSignalDSL.g:1249:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalSignalDSL.g:1250:7: (lv_wildcard_5_0= '*' )
                             {
-                            // InternalSignalDSL.g:1086:7: (lv_wildcard_5_0= '*' )
-                            // InternalSignalDSL.g:1087:8: lv_wildcard_5_0= '*'
+                            // InternalSignalDSL.g:1250:7: (lv_wildcard_5_0= '*' )
+                            // InternalSignalDSL.g:1251:8: lv_wildcard_5_0= '*'
                             {
-                            lv_wildcard_5_0=(Token)match(input,32,FOLLOW_22); if (state.failed) return current;
+                            lv_wildcard_5_0=(Token)match(input,32,FOLLOW_25); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               								newLeafNode(lv_wildcard_5_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0());
@@ -3007,20 +3417,20 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:1100:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalSignalDSL.g:1264:6: ( (lv_memberName_6_0= ruleValidID ) )
                             {
-                            // InternalSignalDSL.g:1100:6: ( (lv_memberName_6_0= ruleValidID ) )
-                            // InternalSignalDSL.g:1101:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalSignalDSL.g:1264:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalSignalDSL.g:1265:7: (lv_memberName_6_0= ruleValidID )
                             {
-                            // InternalSignalDSL.g:1101:7: (lv_memberName_6_0= ruleValidID )
-                            // InternalSignalDSL.g:1102:8: lv_memberName_6_0= ruleValidID
+                            // InternalSignalDSL.g:1265:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalSignalDSL.g:1266:8: lv_memberName_6_0= ruleValidID
                             {
                             if ( state.backtracking==0 ) {
 
                               								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0());
                               							
                             }
-                            pushFollow(FOLLOW_22);
+                            pushFollow(FOLLOW_25);
                             lv_memberName_6_0=ruleValidID();
 
                             state._fsp--;
@@ -3057,13 +3467,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1122:4: ( ( ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1286:4: ( ( ruleQualifiedName ) )
                     {
-                    // InternalSignalDSL.g:1122:4: ( ( ruleQualifiedName ) )
-                    // InternalSignalDSL.g:1123:5: ( ruleQualifiedName )
+                    // InternalSignalDSL.g:1286:4: ( ( ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1287:5: ( ruleQualifiedName )
                     {
-                    // InternalSignalDSL.g:1123:5: ( ruleQualifiedName )
-                    // InternalSignalDSL.g:1124:6: ruleQualifiedName
+                    // InternalSignalDSL.g:1287:5: ( ruleQualifiedName )
+                    // InternalSignalDSL.g:1288:6: ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3077,7 +3487,7 @@
                       						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_22);
+                    pushFollow(FOLLOW_25);
                     ruleQualifiedName();
 
                     state._fsp--;
@@ -3097,20 +3507,20 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:1139:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalSignalDSL.g:1303:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
                     {
-                    // InternalSignalDSL.g:1139:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
-                    // InternalSignalDSL.g:1140:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalSignalDSL.g:1303:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalSignalDSL.g:1304:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
                     {
-                    // InternalSignalDSL.g:1140:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
-                    // InternalSignalDSL.g:1141:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    // InternalSignalDSL.g:1304:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalSignalDSL.g:1305:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0());
                       					
                     }
-                    pushFollow(FOLLOW_22);
+                    pushFollow(FOLLOW_25);
                     lv_importedNamespace_8_0=ruleQualifiedNameWithWildcard();
 
                     state._fsp--;
@@ -3138,16 +3548,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:1159:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalSignalDSL.g:1323:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
                     {
-                    // InternalSignalDSL.g:1159:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
-                    // InternalSignalDSL.g:1160:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1323:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalSignalDSL.g:1324:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
                     {
-                    // InternalSignalDSL.g:1160:5: ( (lv_fqnImport_9_0= 'ns' ) )
-                    // InternalSignalDSL.g:1161:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalSignalDSL.g:1324:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalSignalDSL.g:1325:6: (lv_fqnImport_9_0= 'ns' )
                     {
-                    // InternalSignalDSL.g:1161:6: (lv_fqnImport_9_0= 'ns' )
-                    // InternalSignalDSL.g:1162:7: lv_fqnImport_9_0= 'ns'
+                    // InternalSignalDSL.g:1325:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalSignalDSL.g:1326:7: lv_fqnImport_9_0= 'ns'
                     {
                     lv_fqnImport_9_0=(Token)match(input,33,FOLLOW_4); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -3169,18 +3579,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:1174:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
-                    // InternalSignalDSL.g:1175:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalSignalDSL.g:1338:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1339:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
                     {
-                    // InternalSignalDSL.g:1175:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
-                    // InternalSignalDSL.g:1176:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    // InternalSignalDSL.g:1339:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalSignalDSL.g:1340:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0());
                       						
                     }
-                    pushFollow(FOLLOW_22);
+                    pushFollow(FOLLOW_25);
                     lv_importedFullyQualifiedName_10_0=ruleQualifiedName();
 
                     state._fsp--;
@@ -3213,16 +3623,16 @@
 
             }
 
-            // InternalSignalDSL.g:1195:3: (otherlv_11= ';' )?
-            int alt11=2;
-            int LA11_0 = input.LA(1);
+            // InternalSignalDSL.g:1359:3: (otherlv_11= ';' )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
 
-            if ( (LA11_0==34) ) {
-                alt11=1;
+            if ( (LA14_0==34) ) {
+                alt14=1;
             }
-            switch (alt11) {
+            switch (alt14) {
                 case 1 :
-                    // InternalSignalDSL.g:1196:4: otherlv_11= ';'
+                    // InternalSignalDSL.g:1360:4: otherlv_11= ';'
                     {
                     otherlv_11=(Token)match(input,34,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -3261,7 +3671,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalSignalDSL.g:1205:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalSignalDSL.g:1369:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -3269,8 +3679,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1205:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // InternalSignalDSL.g:1206:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalSignalDSL.g:1369:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalSignalDSL.g:1370:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
@@ -3301,7 +3711,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalSignalDSL.g:1212:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
+    // InternalSignalDSL.g:1376:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
     public final EObject ruleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -3320,14 +3730,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1218:2: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
-            // InternalSignalDSL.g:1219:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalSignalDSL.g:1382:2: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
+            // InternalSignalDSL.g:1383:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
             {
-            // InternalSignalDSL.g:1219:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
-            // InternalSignalDSL.g:1220:3: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            // InternalSignalDSL.g:1383:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalSignalDSL.g:1384:3: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
             {
-            // InternalSignalDSL.g:1220:3: ()
-            // InternalSignalDSL.g:1221:4: 
+            // InternalSignalDSL.g:1384:3: ()
+            // InternalSignalDSL.g:1385:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -3345,11 +3755,11 @@
               			newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
               		
             }
-            // InternalSignalDSL.g:1231:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:1232:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:1395:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:1396:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:1232:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:1233:5: ruleQualifiedName
+            // InternalSignalDSL.g:1396:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:1397:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -3363,7 +3773,7 @@
               					newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0());
               				
             }
-            pushFollow(FOLLOW_23);
+            pushFollow(FOLLOW_26);
             ruleQualifiedName();
 
             state._fsp--;
@@ -3379,21 +3789,21 @@
 
             }
 
-            // InternalSignalDSL.g:1247:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
-            int alt14=2;
-            int LA14_0 = input.LA(1);
+            // InternalSignalDSL.g:1411:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
 
-            if ( (LA14_0==36) && (synpred1_InternalSignalDSL())) {
-                alt14=1;
+            if ( (LA17_0==36) && (synpred1_InternalSignalDSL())) {
+                alt17=1;
             }
-            switch (alt14) {
+            switch (alt17) {
                 case 1 :
-                    // InternalSignalDSL.g:1248:4: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    // InternalSignalDSL.g:1412:4: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
                     {
-                    // InternalSignalDSL.g:1248:4: ( ( '(' )=>otherlv_3= '(' )
-                    // InternalSignalDSL.g:1249:5: ( '(' )=>otherlv_3= '('
+                    // InternalSignalDSL.g:1412:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalSignalDSL.g:1413:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,36,FOLLOW_24); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,36,FOLLOW_27); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
@@ -3402,28 +3812,28 @@
 
                     }
 
-                    // InternalSignalDSL.g:1255:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
-                    int alt13=3;
-                    alt13 = dfa13.predict(input);
-                    switch (alt13) {
+                    // InternalSignalDSL.g:1419:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt16=3;
+                    alt16 = dfa16.predict(input);
+                    switch (alt16) {
                         case 1 :
-                            // InternalSignalDSL.g:1256:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalSignalDSL.g:1420:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // InternalSignalDSL.g:1256:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // InternalSignalDSL.g:1257:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalSignalDSL.g:1420:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalSignalDSL.g:1421:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // InternalSignalDSL.g:1257:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // InternalSignalDSL.g:1258:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalSignalDSL.g:1421:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalSignalDSL.g:1422:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // InternalSignalDSL.g:1267:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // InternalSignalDSL.g:1268:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalSignalDSL.g:1431:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalSignalDSL.g:1432:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
                             {
                             if ( state.backtracking==0 ) {
 
                               								newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0());
                               							
                             }
-                            pushFollow(FOLLOW_25);
+                            pushFollow(FOLLOW_28);
                             lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair();
 
                             state._fsp--;
@@ -3447,20 +3857,20 @@
 
                             }
 
-                            // InternalSignalDSL.g:1285:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
-                            loop12:
+                            // InternalSignalDSL.g:1449:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            loop15:
                             do {
-                                int alt12=2;
-                                int LA12_0 = input.LA(1);
+                                int alt15=2;
+                                int LA15_0 = input.LA(1);
 
-                                if ( (LA12_0==37) ) {
-                                    alt12=1;
+                                if ( (LA15_0==37) ) {
+                                    alt15=1;
                                 }
 
 
-                                switch (alt12) {
+                                switch (alt15) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:1286:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalSignalDSL.g:1450:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
                             	    otherlv_5=(Token)match(input,37,FOLLOW_4); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
@@ -3468,18 +3878,18 @@
                             	      							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:1290:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // InternalSignalDSL.g:1291:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalSignalDSL.g:1454:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalSignalDSL.g:1455:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // InternalSignalDSL.g:1300:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // InternalSignalDSL.g:1301:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    // InternalSignalDSL.g:1464:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalSignalDSL.g:1465:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      									newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0());
                             	      								
                             	    }
-                            	    pushFollow(FOLLOW_25);
+                            	    pushFollow(FOLLOW_28);
                             	    lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair();
 
                             	    state._fsp--;
@@ -3508,7 +3918,7 @@
                             	    break;
 
                             	default :
-                            	    break loop12;
+                            	    break loop15;
                                 }
                             } while (true);
 
@@ -3519,20 +3929,20 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:1321:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalSignalDSL.g:1485:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
                             {
-                            // InternalSignalDSL.g:1321:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // InternalSignalDSL.g:1322:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalSignalDSL.g:1485:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalSignalDSL.g:1486:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
                             {
-                            // InternalSignalDSL.g:1322:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // InternalSignalDSL.g:1323:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            // InternalSignalDSL.g:1486:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalSignalDSL.g:1487:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
                             {
                             if ( state.backtracking==0 ) {
 
                               							newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0());
                               						
                             }
-                            pushFollow(FOLLOW_26);
+                            pushFollow(FOLLOW_29);
                             lv_value_7_0=ruleXAnnotationElementValueOrCommaList();
 
                             state._fsp--;
@@ -3599,7 +4009,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:1350:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    // InternalSignalDSL.g:1514:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
     public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -3607,8 +4017,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1350:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // InternalSignalDSL.g:1351:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            // InternalSignalDSL.g:1514:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalSignalDSL.g:1515:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -3639,7 +4049,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:1357:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    // InternalSignalDSL.g:1521:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
     public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -3651,23 +4061,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1363:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // InternalSignalDSL.g:1364:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalSignalDSL.g:1527:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalSignalDSL.g:1528:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
             {
-            // InternalSignalDSL.g:1364:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // InternalSignalDSL.g:1365:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalSignalDSL.g:1528:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalSignalDSL.g:1529:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
             {
-            // InternalSignalDSL.g:1365:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // InternalSignalDSL.g:1366:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalSignalDSL.g:1529:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalSignalDSL.g:1530:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
             {
-            // InternalSignalDSL.g:1375:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // InternalSignalDSL.g:1376:5: ( ( ruleValidID ) ) otherlv_1= '='
+            // InternalSignalDSL.g:1539:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalSignalDSL.g:1540:5: ( ( ruleValidID ) ) otherlv_1= '='
             {
-            // InternalSignalDSL.g:1376:5: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:1377:6: ( ruleValidID )
+            // InternalSignalDSL.g:1540:5: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:1541:6: ( ruleValidID )
             {
-            // InternalSignalDSL.g:1377:6: ( ruleValidID )
-            // InternalSignalDSL.g:1378:7: ruleValidID
+            // InternalSignalDSL.g:1541:6: ( ruleValidID )
+            // InternalSignalDSL.g:1542:7: ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -3681,7 +4091,7 @@
               							newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0());
               						
             }
-            pushFollow(FOLLOW_27);
+            pushFollow(FOLLOW_30);
             ruleValidID();
 
             state._fsp--;
@@ -3697,7 +4107,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,39,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,39,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
@@ -3709,11 +4119,11 @@
 
             }
 
-            // InternalSignalDSL.g:1398:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // InternalSignalDSL.g:1399:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:1562:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalSignalDSL.g:1563:4: (lv_value_2_0= ruleXAnnotationElementValue )
             {
-            // InternalSignalDSL.g:1399:4: (lv_value_2_0= ruleXAnnotationElementValue )
-            // InternalSignalDSL.g:1400:5: lv_value_2_0= ruleXAnnotationElementValue
+            // InternalSignalDSL.g:1563:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:1564:5: lv_value_2_0= ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
 
@@ -3769,7 +4179,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:1421:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalSignalDSL.g:1585:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
     public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -3777,8 +4187,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1421:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalSignalDSL.g:1422:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            // InternalSignalDSL.g:1585:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalSignalDSL.g:1586:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -3809,7 +4219,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:1428:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
+    // InternalSignalDSL.g:1592:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
     public final EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -3831,27 +4241,27 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1434:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
-            // InternalSignalDSL.g:1435:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            // InternalSignalDSL.g:1598:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
+            // InternalSignalDSL.g:1599:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
             {
-            // InternalSignalDSL.g:1435:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
-            int alt19=2;
-            alt19 = dfa19.predict(input);
-            switch (alt19) {
+            // InternalSignalDSL.g:1599:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            int alt22=2;
+            alt22 = dfa22.predict(input);
+            switch (alt22) {
                 case 1 :
-                    // InternalSignalDSL.g:1436:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1600:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalSignalDSL.g:1436:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalSignalDSL.g:1437:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalSignalDSL.g:1600:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1601:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalSignalDSL.g:1437:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalSignalDSL.g:1438:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1601:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalSignalDSL.g:1602:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalSignalDSL.g:1445:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalSignalDSL.g:1446:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalSignalDSL.g:1609:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1610:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalSignalDSL.g:1446:6: ()
-                    // InternalSignalDSL.g:1447:7: 
+                    // InternalSignalDSL.g:1610:6: ()
+                    // InternalSignalDSL.g:1611:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3863,13 +4273,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,40,FOLLOW_29); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,40,FOLLOW_32); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,41,FOLLOW_30); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,41,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -3881,29 +4291,29 @@
 
                     }
 
-                    // InternalSignalDSL.g:1463:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt16=2;
-                    int LA16_0 = input.LA(1);
+                    // InternalSignalDSL.g:1627:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt19=2;
+                    int LA19_0 = input.LA(1);
 
-                    if ( ((LA16_0>=RULE_STRING && LA16_0<=RULE_DECIMAL)||LA16_0==14||(LA16_0>=29 && LA16_0<=31)||(LA16_0>=35 && LA16_0<=36)||(LA16_0>=40 && LA16_0<=41)||LA16_0==48||(LA16_0>=64 && LA16_0<=65)||LA16_0==69||LA16_0==77||LA16_0==79||(LA16_0>=82 && LA16_0<=84)||(LA16_0>=87 && LA16_0<=96)||LA16_0==98) ) {
-                        alt16=1;
+                    if ( ((LA19_0>=RULE_STRING && LA19_0<=RULE_DECIMAL)||LA19_0==14||(LA19_0>=29 && LA19_0<=31)||(LA19_0>=35 && LA19_0<=36)||(LA19_0>=40 && LA19_0<=41)||LA19_0==48||(LA19_0>=64 && LA19_0<=65)||LA19_0==69||LA19_0==77||LA19_0==79||(LA19_0>=82 && LA19_0<=84)||(LA19_0>=87 && LA19_0<=96)||LA19_0==98) ) {
+                        alt19=1;
                     }
-                    switch (alt16) {
+                    switch (alt19) {
                         case 1 :
-                            // InternalSignalDSL.g:1464:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalSignalDSL.g:1628:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:1464:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalSignalDSL.g:1465:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1628:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalSignalDSL.g:1629:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalSignalDSL.g:1465:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalSignalDSL.g:1466:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalSignalDSL.g:1629:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1630:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
                               							newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
                               						
                             }
-                            pushFollow(FOLLOW_31);
+                            pushFollow(FOLLOW_34);
                             lv_elements_3_0=ruleXAnnotationOrExpression();
 
                             state._fsp--;
@@ -3927,39 +4337,39 @@
 
                             }
 
-                            // InternalSignalDSL.g:1483:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop15:
+                            // InternalSignalDSL.g:1647:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop18:
                             do {
-                                int alt15=2;
-                                int LA15_0 = input.LA(1);
+                                int alt18=2;
+                                int LA18_0 = input.LA(1);
 
-                                if ( (LA15_0==37) ) {
-                                    alt15=1;
+                                if ( (LA18_0==37) ) {
+                                    alt18=1;
                                 }
 
 
-                                switch (alt15) {
+                                switch (alt18) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:1484:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1648:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:1488:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalSignalDSL.g:1489:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1652:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1653:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalSignalDSL.g:1489:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalSignalDSL.g:1490:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalSignalDSL.g:1653:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1654:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
                             	      							
                             	    }
-                            	    pushFollow(FOLLOW_31);
+                            	    pushFollow(FOLLOW_34);
                             	    lv_elements_5_0=ruleXAnnotationOrExpression();
 
                             	    state._fsp--;
@@ -3988,7 +4398,7 @@
                             	    break;
 
                             	default :
-                            	    break loop15;
+                            	    break loop18;
                                 }
                             } while (true);
 
@@ -4011,17 +4421,17 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1515:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalSignalDSL.g:1679:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
                     {
-                    // InternalSignalDSL.g:1515:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // InternalSignalDSL.g:1516:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalSignalDSL.g:1679:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalSignalDSL.g:1680:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     {
                     if ( state.backtracking==0 ) {
 
                       				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
                       			
                     }
-                    pushFollow(FOLLOW_32);
+                    pushFollow(FOLLOW_35);
                     this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
 
                     state._fsp--;
@@ -4032,19 +4442,19 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:1524:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
-                    int alt18=2;
-                    int LA18_0 = input.LA(1);
+                    // InternalSignalDSL.g:1688:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt21=2;
+                    int LA21_0 = input.LA(1);
 
-                    if ( (LA18_0==37) ) {
-                        alt18=1;
+                    if ( (LA21_0==37) ) {
+                        alt21=1;
                     }
-                    switch (alt18) {
+                    switch (alt21) {
                         case 1 :
-                            // InternalSignalDSL.g:1525:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalSignalDSL.g:1689:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                             {
-                            // InternalSignalDSL.g:1525:5: ()
-                            // InternalSignalDSL.g:1526:6: 
+                            // InternalSignalDSL.g:1689:5: ()
+                            // InternalSignalDSL.g:1690:6: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -4056,40 +4466,40 @@
 
                             }
 
-                            // InternalSignalDSL.g:1532:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
-                            int cnt17=0;
-                            loop17:
+                            // InternalSignalDSL.g:1696:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt20=0;
+                            loop20:
                             do {
-                                int alt17=2;
-                                int LA17_0 = input.LA(1);
+                                int alt20=2;
+                                int LA20_0 = input.LA(1);
 
-                                if ( (LA17_0==37) ) {
-                                    alt17=1;
+                                if ( (LA20_0==37) ) {
+                                    alt20=1;
                                 }
 
 
-                                switch (alt17) {
+                                switch (alt20) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:1533:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1697:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_9=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_9=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:1537:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalSignalDSL.g:1538:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1701:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1702:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalSignalDSL.g:1538:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // InternalSignalDSL.g:1539:8: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    // InternalSignalDSL.g:1702:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1703:8: lv_elements_10_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
                             	      							
                             	    }
-                            	    pushFollow(FOLLOW_32);
+                            	    pushFollow(FOLLOW_35);
                             	    lv_elements_10_0=ruleXAnnotationOrExpression();
 
                             	    state._fsp--;
@@ -4118,13 +4528,13 @@
                             	    break;
 
                             	default :
-                            	    if ( cnt17 >= 1 ) break loop17;
+                            	    if ( cnt20 >= 1 ) break loop20;
                             	    if (state.backtracking>0) {state.failed=true; return current;}
                                         EarlyExitException eee =
-                                            new EarlyExitException(17, input);
+                                            new EarlyExitException(20, input);
                                         throw eee;
                                 }
-                                cnt17++;
+                                cnt20++;
                             } while (true);
 
 
@@ -4164,7 +4574,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalSignalDSL.g:1563:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    // InternalSignalDSL.g:1727:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
     public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -4172,8 +4582,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1563:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // InternalSignalDSL.g:1564:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            // InternalSignalDSL.g:1727:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalSignalDSL.g:1728:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
@@ -4204,7 +4614,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalSignalDSL.g:1570:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:1734:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
     public final EObject ruleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -4223,27 +4633,27 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1576:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:1577:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:1740:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:1741:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:1577:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
-            int alt22=2;
-            alt22 = dfa22.predict(input);
-            switch (alt22) {
+            // InternalSignalDSL.g:1741:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt25=2;
+            alt25 = dfa25.predict(input);
+            switch (alt25) {
                 case 1 :
-                    // InternalSignalDSL.g:1578:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1742:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalSignalDSL.g:1578:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalSignalDSL.g:1579:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalSignalDSL.g:1742:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1743:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalSignalDSL.g:1579:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalSignalDSL.g:1580:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1743:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalSignalDSL.g:1744:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalSignalDSL.g:1587:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalSignalDSL.g:1588:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalSignalDSL.g:1751:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1752:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalSignalDSL.g:1588:6: ()
-                    // InternalSignalDSL.g:1589:7: 
+                    // InternalSignalDSL.g:1752:6: ()
+                    // InternalSignalDSL.g:1753:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4255,13 +4665,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,40,FOLLOW_29); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,40,FOLLOW_32); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,41,FOLLOW_30); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,41,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -4273,29 +4683,29 @@
 
                     }
 
-                    // InternalSignalDSL.g:1605:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt21=2;
-                    int LA21_0 = input.LA(1);
+                    // InternalSignalDSL.g:1769:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt24=2;
+                    int LA24_0 = input.LA(1);
 
-                    if ( ((LA21_0>=RULE_STRING && LA21_0<=RULE_DECIMAL)||LA21_0==14||(LA21_0>=29 && LA21_0<=31)||(LA21_0>=35 && LA21_0<=36)||(LA21_0>=40 && LA21_0<=41)||LA21_0==48||(LA21_0>=64 && LA21_0<=65)||LA21_0==69||LA21_0==77||LA21_0==79||(LA21_0>=82 && LA21_0<=84)||(LA21_0>=87 && LA21_0<=96)||LA21_0==98) ) {
-                        alt21=1;
+                    if ( ((LA24_0>=RULE_STRING && LA24_0<=RULE_DECIMAL)||LA24_0==14||(LA24_0>=29 && LA24_0<=31)||(LA24_0>=35 && LA24_0<=36)||(LA24_0>=40 && LA24_0<=41)||LA24_0==48||(LA24_0>=64 && LA24_0<=65)||LA24_0==69||LA24_0==77||LA24_0==79||(LA24_0>=82 && LA24_0<=84)||(LA24_0>=87 && LA24_0<=96)||LA24_0==98) ) {
+                        alt24=1;
                     }
-                    switch (alt21) {
+                    switch (alt24) {
                         case 1 :
-                            // InternalSignalDSL.g:1606:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalSignalDSL.g:1770:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:1606:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalSignalDSL.g:1607:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1770:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalSignalDSL.g:1771:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalSignalDSL.g:1607:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalSignalDSL.g:1608:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalSignalDSL.g:1771:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1772:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
                               							newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
                               						
                             }
-                            pushFollow(FOLLOW_31);
+                            pushFollow(FOLLOW_34);
                             lv_elements_3_0=ruleXAnnotationOrExpression();
 
                             state._fsp--;
@@ -4319,39 +4729,39 @@
 
                             }
 
-                            // InternalSignalDSL.g:1625:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop20:
+                            // InternalSignalDSL.g:1789:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop23:
                             do {
-                                int alt20=2;
-                                int LA20_0 = input.LA(1);
+                                int alt23=2;
+                                int LA23_0 = input.LA(1);
 
-                                if ( (LA20_0==37) ) {
-                                    alt20=1;
+                                if ( (LA23_0==37) ) {
+                                    alt23=1;
                                 }
 
 
-                                switch (alt20) {
+                                switch (alt23) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:1626:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1790:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:1630:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalSignalDSL.g:1631:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1794:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1795:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalSignalDSL.g:1631:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalSignalDSL.g:1632:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalSignalDSL.g:1795:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1796:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      								newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
                             	      							
                             	    }
-                            	    pushFollow(FOLLOW_31);
+                            	    pushFollow(FOLLOW_34);
                             	    lv_elements_5_0=ruleXAnnotationOrExpression();
 
                             	    state._fsp--;
@@ -4380,7 +4790,7 @@
                             	    break;
 
                             	default :
-                            	    break loop20;
+                            	    break loop23;
                                 }
                             } while (true);
 
@@ -4403,7 +4813,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1657:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalSignalDSL.g:1821:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4449,7 +4859,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalSignalDSL.g:1669:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalSignalDSL.g:1833:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4457,8 +4867,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1669:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // InternalSignalDSL.g:1670:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalSignalDSL.g:1833:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalSignalDSL.g:1834:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -4489,7 +4899,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalSignalDSL.g:1676:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalSignalDSL.g:1840:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4502,29 +4912,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1682:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // InternalSignalDSL.g:1683:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            // InternalSignalDSL.g:1846:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalSignalDSL.g:1847:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
             {
-            // InternalSignalDSL.g:1683:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            int alt23=2;
-            int LA23_0 = input.LA(1);
+            // InternalSignalDSL.g:1847:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt26=2;
+            int LA26_0 = input.LA(1);
 
-            if ( (LA23_0==35) ) {
-                alt23=1;
+            if ( (LA26_0==35) ) {
+                alt26=1;
             }
-            else if ( ((LA23_0>=RULE_STRING && LA23_0<=RULE_DECIMAL)||LA23_0==14||(LA23_0>=29 && LA23_0<=31)||LA23_0==36||(LA23_0>=40 && LA23_0<=41)||LA23_0==48||(LA23_0>=64 && LA23_0<=65)||LA23_0==69||LA23_0==77||LA23_0==79||(LA23_0>=82 && LA23_0<=84)||(LA23_0>=87 && LA23_0<=96)||LA23_0==98) ) {
-                alt23=2;
+            else if ( ((LA26_0>=RULE_STRING && LA26_0<=RULE_DECIMAL)||LA26_0==14||(LA26_0>=29 && LA26_0<=31)||LA26_0==36||(LA26_0>=40 && LA26_0<=41)||LA26_0==48||(LA26_0>=64 && LA26_0<=65)||LA26_0==69||LA26_0==77||LA26_0==79||(LA26_0>=82 && LA26_0<=84)||(LA26_0>=87 && LA26_0<=96)||LA26_0==98) ) {
+                alt26=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 23, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
-            switch (alt23) {
+            switch (alt26) {
                 case 1 :
-                    // InternalSignalDSL.g:1684:3: this_XAnnotation_0= ruleXAnnotation
+                    // InternalSignalDSL.g:1848:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4546,7 +4956,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1693:3: this_XExpression_1= ruleXExpression
+                    // InternalSignalDSL.g:1857:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4592,7 +5002,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalSignalDSL.g:1705:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalSignalDSL.g:1869:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4600,8 +5010,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1705:52: (iv_ruleXExpression= ruleXExpression EOF )
-            // InternalSignalDSL.g:1706:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalSignalDSL.g:1869:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalSignalDSL.g:1870:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
@@ -4632,7 +5042,7 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalSignalDSL.g:1712:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalSignalDSL.g:1876:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
     public final EObject ruleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4643,8 +5053,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1718:2: (this_XAssignment_0= ruleXAssignment )
-            // InternalSignalDSL.g:1719:2: this_XAssignment_0= ruleXAssignment
+            // InternalSignalDSL.g:1882:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalSignalDSL.g:1883:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
 
@@ -4684,7 +5094,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalSignalDSL.g:1730:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalSignalDSL.g:1894:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -4692,8 +5102,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1730:52: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // InternalSignalDSL.g:1731:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalSignalDSL.g:1894:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalSignalDSL.g:1895:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
@@ -4724,7 +5134,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalSignalDSL.g:1737:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    // InternalSignalDSL.g:1901:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
     public final EObject ruleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -4739,26 +5149,26 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1743:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // InternalSignalDSL.g:1744:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalSignalDSL.g:1907:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalSignalDSL.g:1908:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // InternalSignalDSL.g:1744:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
-            int alt25=2;
+            // InternalSignalDSL.g:1908:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt28=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA25_1 = input.LA(2);
+                int LA28_1 = input.LA(2);
 
-                if ( (LA25_1==39) ) {
-                    alt25=1;
+                if ( (LA28_1==39) ) {
+                    alt28=1;
                 }
-                else if ( (LA25_1==EOF||(LA25_1>=RULE_STRING && LA25_1<=RULE_DECIMAL)||(LA25_1>=14 && LA25_1<=15)||LA25_1==24||(LA25_1>=29 && LA25_1<=32)||LA25_1==34||(LA25_1>=36 && LA25_1<=38)||(LA25_1>=40 && LA25_1<=75)||(LA25_1>=77 && LA25_1<=99)) ) {
-                    alt25=2;
+                else if ( (LA28_1==EOF||(LA28_1>=RULE_STRING && LA28_1<=RULE_DECIMAL)||(LA28_1>=14 && LA28_1<=15)||LA28_1==24||(LA28_1>=29 && LA28_1<=32)||LA28_1==34||(LA28_1>=36 && LA28_1<=38)||(LA28_1>=40 && LA28_1<=75)||(LA28_1>=77 && LA28_1<=99)) ) {
+                    alt28=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 25, 1, input);
+                        new NoViableAltException("", 28, 1, input);
 
                     throw nvae;
                 }
@@ -4766,18 +5176,18 @@
                 break;
             case 87:
                 {
-                int LA25_2 = input.LA(2);
+                int LA28_2 = input.LA(2);
 
-                if ( (LA25_2==39) ) {
-                    alt25=1;
+                if ( (LA28_2==39) ) {
+                    alt28=1;
                 }
-                else if ( (LA25_2==EOF||(LA25_2>=RULE_STRING && LA25_2<=RULE_DECIMAL)||(LA25_2>=14 && LA25_2<=15)||LA25_2==24||(LA25_2>=29 && LA25_2<=32)||LA25_2==34||(LA25_2>=36 && LA25_2<=38)||(LA25_2>=40 && LA25_2<=75)||(LA25_2>=77 && LA25_2<=99)) ) {
-                    alt25=2;
+                else if ( (LA28_2==EOF||(LA28_2>=RULE_STRING && LA28_2<=RULE_DECIMAL)||(LA28_2>=14 && LA28_2<=15)||LA28_2==24||(LA28_2>=29 && LA28_2<=32)||LA28_2==34||(LA28_2>=36 && LA28_2<=38)||(LA28_2>=40 && LA28_2<=75)||(LA28_2>=77 && LA28_2<=99)) ) {
+                    alt28=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 25, 2, input);
+                        new NoViableAltException("", 28, 2, input);
 
                     throw nvae;
                 }
@@ -4785,18 +5195,18 @@
                 break;
             case 30:
                 {
-                int LA25_3 = input.LA(2);
+                int LA28_3 = input.LA(2);
 
-                if ( (LA25_3==39) ) {
-                    alt25=1;
+                if ( (LA28_3==39) ) {
+                    alt28=1;
                 }
-                else if ( (LA25_3==EOF||(LA25_3>=RULE_STRING && LA25_3<=RULE_DECIMAL)||(LA25_3>=14 && LA25_3<=15)||LA25_3==24||(LA25_3>=29 && LA25_3<=32)||LA25_3==34||(LA25_3>=36 && LA25_3<=38)||(LA25_3>=40 && LA25_3<=75)||(LA25_3>=77 && LA25_3<=99)) ) {
-                    alt25=2;
+                else if ( (LA28_3==EOF||(LA28_3>=RULE_STRING && LA28_3<=RULE_DECIMAL)||(LA28_3>=14 && LA28_3<=15)||LA28_3==24||(LA28_3>=29 && LA28_3<=32)||LA28_3==34||(LA28_3>=36 && LA28_3<=38)||(LA28_3>=40 && LA28_3<=75)||(LA28_3>=77 && LA28_3<=99)) ) {
+                    alt28=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 25, 3, input);
+                        new NoViableAltException("", 28, 3, input);
 
                     throw nvae;
                 }
@@ -4804,18 +5214,18 @@
                 break;
             case 29:
                 {
-                int LA25_4 = input.LA(2);
+                int LA28_4 = input.LA(2);
 
-                if ( (LA25_4==39) ) {
-                    alt25=1;
+                if ( (LA28_4==39) ) {
+                    alt28=1;
                 }
-                else if ( (LA25_4==EOF||(LA25_4>=RULE_STRING && LA25_4<=RULE_DECIMAL)||(LA25_4>=14 && LA25_4<=15)||LA25_4==24||(LA25_4>=29 && LA25_4<=32)||LA25_4==34||(LA25_4>=36 && LA25_4<=38)||(LA25_4>=40 && LA25_4<=75)||(LA25_4>=77 && LA25_4<=99)) ) {
-                    alt25=2;
+                else if ( (LA28_4==EOF||(LA28_4>=RULE_STRING && LA28_4<=RULE_DECIMAL)||(LA28_4>=14 && LA28_4<=15)||LA28_4==24||(LA28_4>=29 && LA28_4<=32)||LA28_4==34||(LA28_4>=36 && LA28_4<=38)||(LA28_4>=40 && LA28_4<=75)||(LA28_4>=77 && LA28_4<=99)) ) {
+                    alt28=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 25, 4, input);
+                        new NoViableAltException("", 28, 4, input);
 
                     throw nvae;
                 }
@@ -4823,18 +5233,18 @@
                 break;
             case 31:
                 {
-                int LA25_5 = input.LA(2);
+                int LA28_5 = input.LA(2);
 
-                if ( (LA25_5==39) ) {
-                    alt25=1;
+                if ( (LA28_5==39) ) {
+                    alt28=1;
                 }
-                else if ( (LA25_5==EOF||(LA25_5>=RULE_STRING && LA25_5<=RULE_DECIMAL)||(LA25_5>=14 && LA25_5<=15)||LA25_5==24||(LA25_5>=29 && LA25_5<=32)||LA25_5==34||(LA25_5>=36 && LA25_5<=38)||(LA25_5>=40 && LA25_5<=75)||(LA25_5>=77 && LA25_5<=99)) ) {
-                    alt25=2;
+                else if ( (LA28_5==EOF||(LA28_5>=RULE_STRING && LA28_5<=RULE_DECIMAL)||(LA28_5>=14 && LA28_5<=15)||LA28_5==24||(LA28_5>=29 && LA28_5<=32)||LA28_5==34||(LA28_5>=36 && LA28_5<=38)||(LA28_5>=40 && LA28_5<=75)||(LA28_5>=77 && LA28_5<=99)) ) {
+                    alt28=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 25, 5, input);
+                        new NoViableAltException("", 28, 5, input);
 
                     throw nvae;
                 }
@@ -4868,26 +5278,26 @@
             case 96:
             case 98:
                 {
-                alt25=2;
+                alt28=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 28, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt25) {
+            switch (alt28) {
                 case 1 :
-                    // InternalSignalDSL.g:1745:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalSignalDSL.g:1909:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    // InternalSignalDSL.g:1745:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // InternalSignalDSL.g:1746:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalSignalDSL.g:1909:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalSignalDSL.g:1910:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                     {
-                    // InternalSignalDSL.g:1746:4: ()
-                    // InternalSignalDSL.g:1747:5: 
+                    // InternalSignalDSL.g:1910:4: ()
+                    // InternalSignalDSL.g:1911:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4899,11 +5309,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:1753:4: ( ( ruleFeatureCallID ) )
-                    // InternalSignalDSL.g:1754:5: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:1917:4: ( ( ruleFeatureCallID ) )
+                    // InternalSignalDSL.g:1918:5: ( ruleFeatureCallID )
                     {
-                    // InternalSignalDSL.g:1754:5: ( ruleFeatureCallID )
-                    // InternalSignalDSL.g:1755:6: ruleFeatureCallID
+                    // InternalSignalDSL.g:1918:5: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:1919:6: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4917,7 +5327,7 @@
                       						newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_27);
+                    pushFollow(FOLLOW_30);
                     ruleFeatureCallID();
 
                     state._fsp--;
@@ -4938,7 +5348,7 @@
                       				newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2());
                       			
                     }
-                    pushFollow(FOLLOW_28);
+                    pushFollow(FOLLOW_31);
                     ruleOpSingleAssign();
 
                     state._fsp--;
@@ -4948,11 +5358,11 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:1776:4: ( (lv_value_3_0= ruleXAssignment ) )
-                    // InternalSignalDSL.g:1777:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalSignalDSL.g:1940:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalSignalDSL.g:1941:5: (lv_value_3_0= ruleXAssignment )
                     {
-                    // InternalSignalDSL.g:1777:5: (lv_value_3_0= ruleXAssignment )
-                    // InternalSignalDSL.g:1778:6: lv_value_3_0= ruleXAssignment
+                    // InternalSignalDSL.g:1941:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalSignalDSL.g:1942:6: lv_value_3_0= ruleXAssignment
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4990,17 +5400,17 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1797:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalSignalDSL.g:1961:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                     {
-                    // InternalSignalDSL.g:1797:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // InternalSignalDSL.g:1798:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalSignalDSL.g:1961:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalSignalDSL.g:1962:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     {
                     if ( state.backtracking==0 ) {
 
                       				newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0());
                       			
                     }
-                    pushFollow(FOLLOW_33);
+                    pushFollow(FOLLOW_36);
                     this_XOrExpression_4=ruleXOrExpression();
 
                     state._fsp--;
@@ -5011,21 +5421,21 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:1806:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
-                    int alt24=2;
-                    alt24 = dfa24.predict(input);
-                    switch (alt24) {
+                    // InternalSignalDSL.g:1970:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt27=2;
+                    alt27 = dfa27.predict(input);
+                    switch (alt27) {
                         case 1 :
-                            // InternalSignalDSL.g:1807:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalSignalDSL.g:1971:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                             {
-                            // InternalSignalDSL.g:1807:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // InternalSignalDSL.g:1808:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalSignalDSL.g:1971:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalSignalDSL.g:1972:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                             {
-                            // InternalSignalDSL.g:1818:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // InternalSignalDSL.g:1819:7: () ( ( ruleOpMultiAssign ) )
+                            // InternalSignalDSL.g:1982:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalSignalDSL.g:1983:7: () ( ( ruleOpMultiAssign ) )
                             {
-                            // InternalSignalDSL.g:1819:7: ()
-                            // InternalSignalDSL.g:1820:8: 
+                            // InternalSignalDSL.g:1983:7: ()
+                            // InternalSignalDSL.g:1984:8: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -5037,11 +5447,11 @@
 
                             }
 
-                            // InternalSignalDSL.g:1826:7: ( ( ruleOpMultiAssign ) )
-                            // InternalSignalDSL.g:1827:8: ( ruleOpMultiAssign )
+                            // InternalSignalDSL.g:1990:7: ( ( ruleOpMultiAssign ) )
+                            // InternalSignalDSL.g:1991:8: ( ruleOpMultiAssign )
                             {
-                            // InternalSignalDSL.g:1827:8: ( ruleOpMultiAssign )
-                            // InternalSignalDSL.g:1828:9: ruleOpMultiAssign
+                            // InternalSignalDSL.g:1991:8: ( ruleOpMultiAssign )
+                            // InternalSignalDSL.g:1992:9: ruleOpMultiAssign
                             {
                             if ( state.backtracking==0 ) {
 
@@ -5055,7 +5465,7 @@
                               									newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
                               								
                             }
-                            pushFollow(FOLLOW_28);
+                            pushFollow(FOLLOW_31);
                             ruleOpMultiAssign();
 
                             state._fsp--;
@@ -5077,11 +5487,11 @@
 
                             }
 
-                            // InternalSignalDSL.g:1844:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // InternalSignalDSL.g:1845:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalSignalDSL.g:2008:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalSignalDSL.g:2009:6: (lv_rightOperand_7_0= ruleXAssignment )
                             {
-                            // InternalSignalDSL.g:1845:6: (lv_rightOperand_7_0= ruleXAssignment )
-                            // InternalSignalDSL.g:1846:7: lv_rightOperand_7_0= ruleXAssignment
+                            // InternalSignalDSL.g:2009:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalSignalDSL.g:2010:7: lv_rightOperand_7_0= ruleXAssignment
                             {
                             if ( state.backtracking==0 ) {
 
@@ -5149,7 +5559,7 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalSignalDSL.g:1869:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    // InternalSignalDSL.g:2033:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
     public final String entryRuleOpSingleAssign() throws RecognitionException {
         String current = null;
 
@@ -5157,8 +5567,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1869:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // InternalSignalDSL.g:1870:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            // InternalSignalDSL.g:2033:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalSignalDSL.g:2034:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
@@ -5189,7 +5599,7 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalSignalDSL.g:1876:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    // InternalSignalDSL.g:2040:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
     public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -5199,8 +5609,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1882:2: (kw= '=' )
-            // InternalSignalDSL.g:1883:2: kw= '='
+            // InternalSignalDSL.g:2046:2: (kw= '=' )
+            // InternalSignalDSL.g:2047:2: kw= '='
             {
             kw=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -5231,7 +5641,7 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalSignalDSL.g:1891:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    // InternalSignalDSL.g:2055:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
     public final String entryRuleOpMultiAssign() throws RecognitionException {
         String current = null;
 
@@ -5239,8 +5649,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1891:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // InternalSignalDSL.g:1892:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            // InternalSignalDSL.g:2055:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalSignalDSL.g:2056:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
@@ -5271,7 +5681,7 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalSignalDSL.g:1898:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    // InternalSignalDSL.g:2062:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
     public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -5281,58 +5691,58 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1904:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // InternalSignalDSL.g:1905:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalSignalDSL.g:2068:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalSignalDSL.g:2069:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             {
-            // InternalSignalDSL.g:1905:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
-            int alt27=7;
+            // InternalSignalDSL.g:2069:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt30=7;
             switch ( input.LA(1) ) {
             case 43:
                 {
-                alt27=1;
+                alt30=1;
                 }
                 break;
             case 44:
                 {
-                alt27=2;
+                alt30=2;
                 }
                 break;
             case 45:
                 {
-                alt27=3;
+                alt30=3;
                 }
                 break;
             case 46:
                 {
-                alt27=4;
+                alt30=4;
                 }
                 break;
             case 47:
                 {
-                alt27=5;
+                alt30=5;
                 }
                 break;
             case 48:
                 {
-                alt27=6;
+                alt30=6;
                 }
                 break;
             case 49:
                 {
-                alt27=7;
+                alt30=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 27, 0, input);
+                    new NoViableAltException("", 30, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt27) {
+            switch (alt30) {
                 case 1 :
-                    // InternalSignalDSL.g:1906:3: kw= '+='
+                    // InternalSignalDSL.g:2070:3: kw= '+='
                     {
                     kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -5345,7 +5755,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1912:3: kw= '-='
+                    // InternalSignalDSL.g:2076:3: kw= '-='
                     {
                     kw=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -5358,7 +5768,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:1918:3: kw= '*='
+                    // InternalSignalDSL.g:2082:3: kw= '*='
                     {
                     kw=(Token)match(input,45,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -5371,7 +5781,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:1924:3: kw= '/='
+                    // InternalSignalDSL.g:2088:3: kw= '/='
                     {
                     kw=(Token)match(input,46,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -5384,7 +5794,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:1930:3: kw= '%='
+                    // InternalSignalDSL.g:2094:3: kw= '%='
                     {
                     kw=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -5397,19 +5807,19 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:1936:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:2100:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // InternalSignalDSL.g:1936:3: (kw= '<' kw= '<' kw= '=' )
-                    // InternalSignalDSL.g:1937:4: kw= '<' kw= '<' kw= '='
+                    // InternalSignalDSL.g:2100:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:2101:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,48,FOLLOW_34); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_37); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
                       			
                     }
-                    kw=(Token)match(input,48,FOLLOW_27); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_30); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -5430,30 +5840,30 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:1954:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalSignalDSL.g:2118:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // InternalSignalDSL.g:1954:3: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // InternalSignalDSL.g:1955:4: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalSignalDSL.g:2118:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalSignalDSL.g:2119:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,49,FOLLOW_35); if (state.failed) return current;
+                    kw=(Token)match(input,49,FOLLOW_38); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
                       			
                     }
-                    // InternalSignalDSL.g:1960:4: (kw= '>' )?
-                    int alt26=2;
-                    int LA26_0 = input.LA(1);
+                    // InternalSignalDSL.g:2124:4: (kw= '>' )?
+                    int alt29=2;
+                    int LA29_0 = input.LA(1);
 
-                    if ( (LA26_0==49) ) {
-                        alt26=1;
+                    if ( (LA29_0==49) ) {
+                        alt29=1;
                     }
-                    switch (alt26) {
+                    switch (alt29) {
                         case 1 :
-                            // InternalSignalDSL.g:1961:5: kw= '>'
+                            // InternalSignalDSL.g:2125:5: kw= '>'
                             {
-                            kw=(Token)match(input,49,FOLLOW_36); if (state.failed) return current;
+                            kw=(Token)match(input,49,FOLLOW_39); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -5504,7 +5914,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalSignalDSL.g:1977:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalSignalDSL.g:2141:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5512,8 +5922,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1977:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // InternalSignalDSL.g:1978:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalSignalDSL.g:2141:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalSignalDSL.g:2142:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
@@ -5544,7 +5954,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalSignalDSL.g:1984:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalSignalDSL.g:2148:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
     public final EObject ruleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5557,18 +5967,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1990:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // InternalSignalDSL.g:1991:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalSignalDSL.g:2154:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalSignalDSL.g:2155:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // InternalSignalDSL.g:1991:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // InternalSignalDSL.g:1992:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalSignalDSL.g:2155:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalSignalDSL.g:2156:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_37);
+            pushFollow(FOLLOW_40);
             this_XAndExpression_0=ruleXAndExpression();
 
             state._fsp--;
@@ -5579,35 +5989,35 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2000:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
-            loop28:
+            // InternalSignalDSL.g:2164:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop31:
             do {
-                int alt28=2;
-                int LA28_0 = input.LA(1);
+                int alt31=2;
+                int LA31_0 = input.LA(1);
 
-                if ( (LA28_0==51) ) {
-                    int LA28_2 = input.LA(2);
+                if ( (LA31_0==51) ) {
+                    int LA31_2 = input.LA(2);
 
                     if ( (synpred8_InternalSignalDSL()) ) {
-                        alt28=1;
+                        alt31=1;
                     }
 
 
                 }
 
 
-                switch (alt28) {
+                switch (alt31) {
             	case 1 :
-            	    // InternalSignalDSL.g:2001:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalSignalDSL.g:2165:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // InternalSignalDSL.g:2001:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // InternalSignalDSL.g:2002:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalSignalDSL.g:2165:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalSignalDSL.g:2166:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // InternalSignalDSL.g:2012:5: ( () ( ( ruleOpOr ) ) )
-            	    // InternalSignalDSL.g:2013:6: () ( ( ruleOpOr ) )
+            	    // InternalSignalDSL.g:2176:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalSignalDSL.g:2177:6: () ( ( ruleOpOr ) )
             	    {
-            	    // InternalSignalDSL.g:2013:6: ()
-            	    // InternalSignalDSL.g:2014:7: 
+            	    // InternalSignalDSL.g:2177:6: ()
+            	    // InternalSignalDSL.g:2178:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5619,11 +6029,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2020:6: ( ( ruleOpOr ) )
-            	    // InternalSignalDSL.g:2021:7: ( ruleOpOr )
+            	    // InternalSignalDSL.g:2184:6: ( ( ruleOpOr ) )
+            	    // InternalSignalDSL.g:2185:7: ( ruleOpOr )
             	    {
-            	    // InternalSignalDSL.g:2021:7: ( ruleOpOr )
-            	    // InternalSignalDSL.g:2022:8: ruleOpOr
+            	    // InternalSignalDSL.g:2185:7: ( ruleOpOr )
+            	    // InternalSignalDSL.g:2186:8: ruleOpOr
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5637,7 +6047,7 @@
             	      								newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
             	      							
             	    }
-            	    pushFollow(FOLLOW_28);
+            	    pushFollow(FOLLOW_31);
             	    ruleOpOr();
 
             	    state._fsp--;
@@ -5659,18 +6069,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2038:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // InternalSignalDSL.g:2039:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalSignalDSL.g:2202:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalSignalDSL.g:2203:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // InternalSignalDSL.g:2039:5: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // InternalSignalDSL.g:2040:6: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalSignalDSL.g:2203:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalSignalDSL.g:2204:6: lv_rightOperand_3_0= ruleXAndExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_37);
+            	    pushFollow(FOLLOW_40);
             	    lv_rightOperand_3_0=ruleXAndExpression();
 
             	    state._fsp--;
@@ -5699,7 +6109,7 @@
             	    break;
 
             	default :
-            	    break loop28;
+            	    break loop31;
                 }
             } while (true);
 
@@ -5728,7 +6138,7 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalSignalDSL.g:2062:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    // InternalSignalDSL.g:2226:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
     public final String entryRuleOpOr() throws RecognitionException {
         String current = null;
 
@@ -5736,8 +6146,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2062:44: (iv_ruleOpOr= ruleOpOr EOF )
-            // InternalSignalDSL.g:2063:2: iv_ruleOpOr= ruleOpOr EOF
+            // InternalSignalDSL.g:2226:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalSignalDSL.g:2227:2: iv_ruleOpOr= ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOrRule()); 
@@ -5768,7 +6178,7 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalSignalDSL.g:2069:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    // InternalSignalDSL.g:2233:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
     public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -5778,8 +6188,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2075:2: (kw= '||' )
-            // InternalSignalDSL.g:2076:2: kw= '||'
+            // InternalSignalDSL.g:2239:2: (kw= '||' )
+            // InternalSignalDSL.g:2240:2: kw= '||'
             {
             kw=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -5810,7 +6220,7 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalSignalDSL.g:2084:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    // InternalSignalDSL.g:2248:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
     public final EObject entryRuleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5818,8 +6228,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2084:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // InternalSignalDSL.g:2085:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            // InternalSignalDSL.g:2248:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalSignalDSL.g:2249:2: iv_ruleXAndExpression= ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAndExpressionRule()); 
@@ -5850,7 +6260,7 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalSignalDSL.g:2091:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    // InternalSignalDSL.g:2255:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
     public final EObject ruleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5863,18 +6273,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2097:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // InternalSignalDSL.g:2098:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalSignalDSL.g:2261:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalSignalDSL.g:2262:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
             {
-            // InternalSignalDSL.g:2098:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // InternalSignalDSL.g:2099:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalSignalDSL.g:2262:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalSignalDSL.g:2263:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_38);
+            pushFollow(FOLLOW_41);
             this_XEqualityExpression_0=ruleXEqualityExpression();
 
             state._fsp--;
@@ -5885,35 +6295,35 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2107:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
-            loop29:
+            // InternalSignalDSL.g:2271:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop32:
             do {
-                int alt29=2;
-                int LA29_0 = input.LA(1);
+                int alt32=2;
+                int LA32_0 = input.LA(1);
 
-                if ( (LA29_0==52) ) {
-                    int LA29_2 = input.LA(2);
+                if ( (LA32_0==52) ) {
+                    int LA32_2 = input.LA(2);
 
                     if ( (synpred9_InternalSignalDSL()) ) {
-                        alt29=1;
+                        alt32=1;
                     }
 
 
                 }
 
 
-                switch (alt29) {
+                switch (alt32) {
             	case 1 :
-            	    // InternalSignalDSL.g:2108:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalSignalDSL.g:2272:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
             	    {
-            	    // InternalSignalDSL.g:2108:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // InternalSignalDSL.g:2109:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    // InternalSignalDSL.g:2272:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalSignalDSL.g:2273:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
             	    {
-            	    // InternalSignalDSL.g:2119:5: ( () ( ( ruleOpAnd ) ) )
-            	    // InternalSignalDSL.g:2120:6: () ( ( ruleOpAnd ) )
+            	    // InternalSignalDSL.g:2283:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalSignalDSL.g:2284:6: () ( ( ruleOpAnd ) )
             	    {
-            	    // InternalSignalDSL.g:2120:6: ()
-            	    // InternalSignalDSL.g:2121:7: 
+            	    // InternalSignalDSL.g:2284:6: ()
+            	    // InternalSignalDSL.g:2285:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5925,11 +6335,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2127:6: ( ( ruleOpAnd ) )
-            	    // InternalSignalDSL.g:2128:7: ( ruleOpAnd )
+            	    // InternalSignalDSL.g:2291:6: ( ( ruleOpAnd ) )
+            	    // InternalSignalDSL.g:2292:7: ( ruleOpAnd )
             	    {
-            	    // InternalSignalDSL.g:2128:7: ( ruleOpAnd )
-            	    // InternalSignalDSL.g:2129:8: ruleOpAnd
+            	    // InternalSignalDSL.g:2292:7: ( ruleOpAnd )
+            	    // InternalSignalDSL.g:2293:8: ruleOpAnd
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5943,7 +6353,7 @@
             	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
             	      							
             	    }
-            	    pushFollow(FOLLOW_28);
+            	    pushFollow(FOLLOW_31);
             	    ruleOpAnd();
 
             	    state._fsp--;
@@ -5965,18 +6375,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2145:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // InternalSignalDSL.g:2146:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalSignalDSL.g:2309:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalSignalDSL.g:2310:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
             	    {
-            	    // InternalSignalDSL.g:2146:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // InternalSignalDSL.g:2147:6: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    // InternalSignalDSL.g:2310:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalSignalDSL.g:2311:6: lv_rightOperand_3_0= ruleXEqualityExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_38);
+            	    pushFollow(FOLLOW_41);
             	    lv_rightOperand_3_0=ruleXEqualityExpression();
 
             	    state._fsp--;
@@ -6005,855 +6415,6 @@
             	    break;
 
             	default :
-            	    break loop29;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXAndExpression"
-
-
-    // $ANTLR start "entryRuleOpAnd"
-    // InternalSignalDSL.g:2169:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
-    public final String entryRuleOpAnd() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
-
-
-        try {
-            // InternalSignalDSL.g:2169:45: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // InternalSignalDSL.g:2170:2: iv_ruleOpAnd= ruleOpAnd EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpAndRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleOpAnd=ruleOpAnd();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpAnd.getText(); 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpAnd"
-
-
-    // $ANTLR start "ruleOpAnd"
-    // InternalSignalDSL.g:2176:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
-    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:2182:2: (kw= '&&' )
-            // InternalSignalDSL.g:2183:2: kw= '&&'
-            {
-            kw=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              		current.merge(kw);
-              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
-              	
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpAnd"
-
-
-    // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalSignalDSL.g:2191:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
-    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXEqualityExpression = null;
-
-
-        try {
-            // InternalSignalDSL.g:2191:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // InternalSignalDSL.g:2192:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleXEqualityExpression=ruleXEqualityExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXEqualityExpression; 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXEqualityExpression"
-
-
-    // $ANTLR start "ruleXEqualityExpression"
-    // InternalSignalDSL.g:2198:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
-    public final EObject ruleXEqualityExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject this_XRelationalExpression_0 = null;
-
-        EObject lv_rightOperand_3_0 = null;
-
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:2204:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // InternalSignalDSL.g:2205:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            {
-            // InternalSignalDSL.g:2205:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // InternalSignalDSL.g:2206:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-
-              			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
-              		
-            }
-            pushFollow(FOLLOW_39);
-            this_XRelationalExpression_0=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			current = this_XRelationalExpression_0;
-              			afterParserOrEnumRuleCall();
-              		
-            }
-            // InternalSignalDSL.g:2214:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            loop30:
-            do {
-                int alt30=2;
-                switch ( input.LA(1) ) {
-                case 53:
-                    {
-                    int LA30_2 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt30=1;
-                    }
-
-
-                    }
-                    break;
-                case 54:
-                    {
-                    int LA30_3 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt30=1;
-                    }
-
-
-                    }
-                    break;
-                case 55:
-                    {
-                    int LA30_4 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt30=1;
-                    }
-
-
-                    }
-                    break;
-                case 56:
-                    {
-                    int LA30_5 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt30=1;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt30) {
-            	case 1 :
-            	    // InternalSignalDSL.g:2215:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    {
-            	    // InternalSignalDSL.g:2215:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // InternalSignalDSL.g:2216:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
-            	    {
-            	    // InternalSignalDSL.g:2226:5: ( () ( ( ruleOpEquality ) ) )
-            	    // InternalSignalDSL.g:2227:6: () ( ( ruleOpEquality ) )
-            	    {
-            	    // InternalSignalDSL.g:2227:6: ()
-            	    // InternalSignalDSL.g:2228:7: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      							current = forceCreateModelElementAndSet(
-            	      								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	      								current);
-            	      						
-            	    }
-
-            	    }
-
-            	    // InternalSignalDSL.g:2234:6: ( ( ruleOpEquality ) )
-            	    // InternalSignalDSL.g:2235:7: ( ruleOpEquality )
-            	    {
-            	    // InternalSignalDSL.g:2235:7: ( ruleOpEquality )
-            	    // InternalSignalDSL.g:2236:8: ruleOpEquality
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      								if (current==null) {
-            	      									current = createModelElement(grammarAccess.getXEqualityExpressionRule());
-            	      								}
-            	      							
-            	    }
-            	    if ( state.backtracking==0 ) {
-
-            	      								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
-            	      							
-            	    }
-            	    pushFollow(FOLLOW_28);
-            	    ruleOpEquality();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      								afterParserOrEnumRuleCall();
-            	      							
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // InternalSignalDSL.g:2252:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // InternalSignalDSL.g:2253:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    {
-            	    // InternalSignalDSL.g:2253:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // InternalSignalDSL.g:2254:6: lv_rightOperand_3_0= ruleXRelationalExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
-            	      					
-            	    }
-            	    pushFollow(FOLLOW_39);
-            	    lv_rightOperand_3_0=ruleXRelationalExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      						if (current==null) {
-            	      							current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
-            	      						}
-            	      						set(
-            	      							current,
-            	      							"rightOperand",
-            	      							lv_rightOperand_3_0,
-            	      							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
-            	      						afterParserOrEnumRuleCall();
-            	      					
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop30;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXEqualityExpression"
-
-
-    // $ANTLR start "entryRuleOpEquality"
-    // InternalSignalDSL.g:2276:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
-    public final String entryRuleOpEquality() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
-
-
-        try {
-            // InternalSignalDSL.g:2276:50: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // InternalSignalDSL.g:2277:2: iv_ruleOpEquality= ruleOpEquality EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpEqualityRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleOpEquality=ruleOpEquality();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpEquality.getText(); 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpEquality"
-
-
-    // $ANTLR start "ruleOpEquality"
-    // InternalSignalDSL.g:2283:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
-    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:2289:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // InternalSignalDSL.g:2290:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            {
-            // InternalSignalDSL.g:2290:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            int alt31=4;
-            switch ( input.LA(1) ) {
-            case 53:
-                {
-                alt31=1;
-                }
-                break;
-            case 54:
-                {
-                alt31=2;
-                }
-                break;
-            case 55:
-                {
-                alt31=3;
-                }
-                break;
-            case 56:
-                {
-                alt31=4;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 31, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt31) {
-                case 1 :
-                    // InternalSignalDSL.g:2291:3: kw= '=='
-                    {
-                    kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      			current.merge(kw);
-                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
-                      		
-                    }
-
-                    }
-                    break;
-                case 2 :
-                    // InternalSignalDSL.g:2297:3: kw= '!='
-                    {
-                    kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      			current.merge(kw);
-                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
-                      		
-                    }
-
-                    }
-                    break;
-                case 3 :
-                    // InternalSignalDSL.g:2303:3: kw= '==='
-                    {
-                    kw=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      			current.merge(kw);
-                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
-                      		
-                    }
-
-                    }
-                    break;
-                case 4 :
-                    // InternalSignalDSL.g:2309:3: kw= '!=='
-                    {
-                    kw=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      			current.merge(kw);
-                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3());
-                      		
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpEquality"
-
-
-    // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalSignalDSL.g:2318:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
-    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXRelationalExpression = null;
-
-
-        try {
-            // InternalSignalDSL.g:2318:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // InternalSignalDSL.g:2319:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleXRelationalExpression=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXRelationalExpression; 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXRelationalExpression"
-
-
-    // $ANTLR start "ruleXRelationalExpression"
-    // InternalSignalDSL.g:2325:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
-    public final EObject ruleXRelationalExpression() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_2=null;
-        EObject this_XOtherOperatorExpression_0 = null;
-
-        EObject lv_type_3_0 = null;
-
-        EObject lv_rightOperand_6_0 = null;
-
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:2331:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
-            // InternalSignalDSL.g:2332:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
-            {
-            // InternalSignalDSL.g:2332:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
-            // InternalSignalDSL.g:2333:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-
-              			newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0());
-              		
-            }
-            pushFollow(FOLLOW_40);
-            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			current = this_XOtherOperatorExpression_0;
-              			afterParserOrEnumRuleCall();
-              		
-            }
-            // InternalSignalDSL.g:2341:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            loop32:
-            do {
-                int alt32=3;
-                switch ( input.LA(1) ) {
-                case 48:
-                    {
-                    int LA32_2 = input.LA(2);
-
-                    if ( (synpred12_InternalSignalDSL()) ) {
-                        alt32=2;
-                    }
-
-
-                    }
-                    break;
-                case 49:
-                    {
-                    int LA32_3 = input.LA(2);
-
-                    if ( (synpred12_InternalSignalDSL()) ) {
-                        alt32=2;
-                    }
-
-
-                    }
-                    break;
-                case 57:
-                    {
-                    int LA32_4 = input.LA(2);
-
-                    if ( (synpred11_InternalSignalDSL()) ) {
-                        alt32=1;
-                    }
-
-
-                    }
-                    break;
-                case 50:
-                    {
-                    int LA32_5 = input.LA(2);
-
-                    if ( (synpred12_InternalSignalDSL()) ) {
-                        alt32=2;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt32) {
-            	case 1 :
-            	    // InternalSignalDSL.g:2342:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    {
-            	    // InternalSignalDSL.g:2342:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // InternalSignalDSL.g:2343:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    {
-            	    // InternalSignalDSL.g:2343:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // InternalSignalDSL.g:2344:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
-            	    {
-            	    // InternalSignalDSL.g:2350:6: ( () otherlv_2= 'instanceof' )
-            	    // InternalSignalDSL.g:2351:7: () otherlv_2= 'instanceof'
-            	    {
-            	    // InternalSignalDSL.g:2351:7: ()
-            	    // InternalSignalDSL.g:2352:8: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      								current = forceCreateModelElementAndSet(
-            	      									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
-            	      									current);
-            	      							
-            	    }
-
-            	    }
-
-            	    otherlv_2=(Token)match(input,57,FOLLOW_41); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
-            	      						
-            	    }
-
-            	    }
-
-
-            	    }
-
-            	    // InternalSignalDSL.g:2364:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalSignalDSL.g:2365:6: (lv_type_3_0= ruleJvmTypeReference )
-            	    {
-            	    // InternalSignalDSL.g:2365:6: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalSignalDSL.g:2366:7: lv_type_3_0= ruleJvmTypeReference
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
-            	      						
-            	    }
-            	    pushFollow(FOLLOW_40);
-            	    lv_type_3_0=ruleJvmTypeReference();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      							if (current==null) {
-            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-            	      							}
-            	      							set(
-            	      								current,
-            	      								"type",
-            	      								lv_type_3_0,
-            	      								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
-            	      							afterParserOrEnumRuleCall();
-            	      						
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // InternalSignalDSL.g:2385:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    {
-            	    // InternalSignalDSL.g:2385:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // InternalSignalDSL.g:2386:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    {
-            	    // InternalSignalDSL.g:2386:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // InternalSignalDSL.g:2387:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
-            	    {
-            	    // InternalSignalDSL.g:2397:6: ( () ( ( ruleOpCompare ) ) )
-            	    // InternalSignalDSL.g:2398:7: () ( ( ruleOpCompare ) )
-            	    {
-            	    // InternalSignalDSL.g:2398:7: ()
-            	    // InternalSignalDSL.g:2399:8: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      								current = forceCreateModelElementAndSet(
-            	      									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            	      									current);
-            	      							
-            	    }
-
-            	    }
-
-            	    // InternalSignalDSL.g:2405:7: ( ( ruleOpCompare ) )
-            	    // InternalSignalDSL.g:2406:8: ( ruleOpCompare )
-            	    {
-            	    // InternalSignalDSL.g:2406:8: ( ruleOpCompare )
-            	    // InternalSignalDSL.g:2407:9: ruleOpCompare
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      									if (current==null) {
-            	      										current = createModelElement(grammarAccess.getXRelationalExpressionRule());
-            	      									}
-            	      								
-            	    }
-            	    if ( state.backtracking==0 ) {
-
-            	      									newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
-            	      								
-            	    }
-            	    pushFollow(FOLLOW_28);
-            	    ruleOpCompare();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      									afterParserOrEnumRuleCall();
-            	      								
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // InternalSignalDSL.g:2423:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // InternalSignalDSL.g:2424:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    {
-            	    // InternalSignalDSL.g:2424:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // InternalSignalDSL.g:2425:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
-            	      						
-            	    }
-            	    pushFollow(FOLLOW_40);
-            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      							if (current==null) {
-            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-            	      							}
-            	      							set(
-            	      								current,
-            	      								"rightOperand",
-            	      								lv_rightOperand_6_0,
-            	      								"org.eclipse.xtext.xbase.Xbase.XOtherOperatorExpression");
-            	      							afterParserOrEnumRuleCall();
-            	      						
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
             	    break loop32;
                 }
             } while (true);
@@ -6879,11 +6440,860 @@
         }
         return current;
     }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // InternalSignalDSL.g:2333:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    public final String entryRuleOpAnd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
+
+
+        try {
+            // InternalSignalDSL.g:2333:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalSignalDSL.g:2334:2: iv_ruleOpAnd= ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpAnd=ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAnd.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // InternalSignalDSL.g:2340:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:2346:2: (kw= '&&' )
+            // InternalSignalDSL.g:2347:2: kw= '&&'
+            {
+            kw=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
+              	
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpAnd"
+
+
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // InternalSignalDSL.g:2355:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXEqualityExpression = null;
+
+
+        try {
+            // InternalSignalDSL.g:2355:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalSignalDSL.g:2356:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXEqualityExpression=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXEqualityExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // InternalSignalDSL.g:2362:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
+    public final EObject ruleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XRelationalExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:2368:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalSignalDSL.g:2369:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            {
+            // InternalSignalDSL.g:2369:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalSignalDSL.g:2370:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_42);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XRelationalExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalSignalDSL.g:2378:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            loop33:
+            do {
+                int alt33=2;
+                switch ( input.LA(1) ) {
+                case 53:
+                    {
+                    int LA33_2 = input.LA(2);
+
+                    if ( (synpred10_InternalSignalDSL()) ) {
+                        alt33=1;
+                    }
+
+
+                    }
+                    break;
+                case 54:
+                    {
+                    int LA33_3 = input.LA(2);
+
+                    if ( (synpred10_InternalSignalDSL()) ) {
+                        alt33=1;
+                    }
+
+
+                    }
+                    break;
+                case 55:
+                    {
+                    int LA33_4 = input.LA(2);
+
+                    if ( (synpred10_InternalSignalDSL()) ) {
+                        alt33=1;
+                    }
+
+
+                    }
+                    break;
+                case 56:
+                    {
+                    int LA33_5 = input.LA(2);
+
+                    if ( (synpred10_InternalSignalDSL()) ) {
+                        alt33=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt33) {
+            	case 1 :
+            	    // InternalSignalDSL.g:2379:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    {
+            	    // InternalSignalDSL.g:2379:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalSignalDSL.g:2380:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
+            	    {
+            	    // InternalSignalDSL.g:2390:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalSignalDSL.g:2391:6: () ( ( ruleOpEquality ) )
+            	    {
+            	    // InternalSignalDSL.g:2391:6: ()
+            	    // InternalSignalDSL.g:2392:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalSignalDSL.g:2398:6: ( ( ruleOpEquality ) )
+            	    // InternalSignalDSL.g:2399:7: ( ruleOpEquality )
+            	    {
+            	    // InternalSignalDSL.g:2399:7: ( ruleOpEquality )
+            	    // InternalSignalDSL.g:2400:8: ruleOpEquality
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+            	      								}
+            	      							
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_31);
+            	    ruleOpEquality();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalSignalDSL.g:2416:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalSignalDSL.g:2417:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    {
+            	    // InternalSignalDSL.g:2417:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalSignalDSL.g:2418:6: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_42);
+            	    lv_rightOperand_3_0=ruleXRelationalExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop33;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXEqualityExpression"
+
+
+    // $ANTLR start "entryRuleOpEquality"
+    // InternalSignalDSL.g:2440:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    public final String entryRuleOpEquality() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
+
+
+        try {
+            // InternalSignalDSL.g:2440:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalSignalDSL.g:2441:2: iv_ruleOpEquality= ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpEquality=ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpEquality.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // InternalSignalDSL.g:2447:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:2453:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalSignalDSL.g:2454:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            {
+            // InternalSignalDSL.g:2454:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt34=4;
+            switch ( input.LA(1) ) {
+            case 53:
+                {
+                alt34=1;
+                }
+                break;
+            case 54:
+                {
+                alt34=2;
+                }
+                break;
+            case 55:
+                {
+                alt34=3;
+                }
+                break;
+            case 56:
+                {
+                alt34=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 34, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt34) {
+                case 1 :
+                    // InternalSignalDSL.g:2455:3: kw= '=='
+                    {
+                    kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalSignalDSL.g:2461:3: kw= '!='
+                    {
+                    kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalSignalDSL.g:2467:3: kw= '==='
+                    {
+                    kw=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalSignalDSL.g:2473:3: kw= '!=='
+                    {
+                    kw=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // InternalSignalDSL.g:2482:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXRelationalExpression = null;
+
+
+        try {
+            // InternalSignalDSL.g:2482:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalSignalDSL.g:2483:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXRelationalExpression=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXRelationalExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // InternalSignalDSL.g:2489:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
+    public final EObject ruleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_XOtherOperatorExpression_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+        EObject lv_rightOperand_6_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:2495:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalSignalDSL.g:2496:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            {
+            // InternalSignalDSL.g:2496:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalSignalDSL.g:2497:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_43);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XOtherOperatorExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalSignalDSL.g:2505:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop35:
+            do {
+                int alt35=3;
+                switch ( input.LA(1) ) {
+                case 48:
+                    {
+                    int LA35_2 = input.LA(2);
+
+                    if ( (synpred12_InternalSignalDSL()) ) {
+                        alt35=2;
+                    }
+
+
+                    }
+                    break;
+                case 49:
+                    {
+                    int LA35_3 = input.LA(2);
+
+                    if ( (synpred12_InternalSignalDSL()) ) {
+                        alt35=2;
+                    }
+
+
+                    }
+                    break;
+                case 57:
+                    {
+                    int LA35_4 = input.LA(2);
+
+                    if ( (synpred11_InternalSignalDSL()) ) {
+                        alt35=1;
+                    }
+
+
+                    }
+                    break;
+                case 50:
+                    {
+                    int LA35_5 = input.LA(2);
+
+                    if ( (synpred12_InternalSignalDSL()) ) {
+                        alt35=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt35) {
+            	case 1 :
+            	    // InternalSignalDSL.g:2506:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    {
+            	    // InternalSignalDSL.g:2506:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalSignalDSL.g:2507:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // InternalSignalDSL.g:2507:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalSignalDSL.g:2508:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    {
+            	    // InternalSignalDSL.g:2514:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalSignalDSL.g:2515:7: () otherlv_2= 'instanceof'
+            	    {
+            	    // InternalSignalDSL.g:2515:7: ()
+            	    // InternalSignalDSL.g:2516:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,57,FOLLOW_44); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalSignalDSL.g:2528:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalSignalDSL.g:2529:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // InternalSignalDSL.g:2529:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalSignalDSL.g:2530:7: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_43);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							if (current==null) {
+            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"type",
+            	      								lv_type_3_0,
+            	      								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // InternalSignalDSL.g:2549:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // InternalSignalDSL.g:2549:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalSignalDSL.g:2550:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // InternalSignalDSL.g:2550:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalSignalDSL.g:2551:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // InternalSignalDSL.g:2561:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalSignalDSL.g:2562:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // InternalSignalDSL.g:2562:7: ()
+            	    // InternalSignalDSL.g:2563:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalSignalDSL.g:2569:7: ( ( ruleOpCompare ) )
+            	    // InternalSignalDSL.g:2570:8: ( ruleOpCompare )
+            	    {
+            	    // InternalSignalDSL.g:2570:8: ( ruleOpCompare )
+            	    // InternalSignalDSL.g:2571:9: ruleOpCompare
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      									if (current==null) {
+            	      										current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+            	      									}
+            	      								
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      									newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+            	      								
+            	    }
+            	    pushFollow(FOLLOW_31);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									afterParserOrEnumRuleCall();
+            	      								
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalSignalDSL.g:2587:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalSignalDSL.g:2588:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // InternalSignalDSL.g:2588:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalSignalDSL.g:2589:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_43);
+            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							if (current==null) {
+            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"rightOperand",
+            	      								lv_rightOperand_6_0,
+            	      								"org.eclipse.xtext.xbase.Xbase.XOtherOperatorExpression");
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop35;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
     // $ANTLR end "ruleXRelationalExpression"
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalSignalDSL.g:2448:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    // InternalSignalDSL.g:2612:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
     public final String entryRuleOpCompare() throws RecognitionException {
         String current = null;
 
@@ -6891,8 +7301,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2448:49: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // InternalSignalDSL.g:2449:2: iv_ruleOpCompare= ruleOpCompare EOF
+            // InternalSignalDSL.g:2612:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalSignalDSL.g:2613:2: iv_ruleOpCompare= ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpCompareRule()); 
@@ -6923,7 +7333,7 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalSignalDSL.g:2455:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
+    // InternalSignalDSL.g:2619:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
     public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -6933,31 +7343,31 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2461:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // InternalSignalDSL.g:2462:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalSignalDSL.g:2625:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalSignalDSL.g:2626:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
             {
-            // InternalSignalDSL.g:2462:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
-            int alt33=4;
+            // InternalSignalDSL.g:2626:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt36=4;
             switch ( input.LA(1) ) {
             case 50:
                 {
-                alt33=1;
+                alt36=1;
                 }
                 break;
             case 48:
                 {
-                int LA33_2 = input.LA(2);
+                int LA36_2 = input.LA(2);
 
-                if ( (LA33_2==EOF||(LA33_2>=RULE_STRING && LA33_2<=RULE_DECIMAL)||LA33_2==14||(LA33_2>=29 && LA33_2<=31)||LA33_2==36||(LA33_2>=40 && LA33_2<=41)||LA33_2==48||(LA33_2>=64 && LA33_2<=65)||LA33_2==69||LA33_2==77||LA33_2==79||(LA33_2>=82 && LA33_2<=84)||(LA33_2>=87 && LA33_2<=96)||LA33_2==98) ) {
-                    alt33=4;
+                if ( (LA36_2==EOF||(LA36_2>=RULE_STRING && LA36_2<=RULE_DECIMAL)||LA36_2==14||(LA36_2>=29 && LA36_2<=31)||LA36_2==36||(LA36_2>=40 && LA36_2<=41)||LA36_2==48||(LA36_2>=64 && LA36_2<=65)||LA36_2==69||LA36_2==77||LA36_2==79||(LA36_2>=82 && LA36_2<=84)||(LA36_2>=87 && LA36_2<=96)||LA36_2==98) ) {
+                    alt36=4;
                 }
-                else if ( (LA33_2==39) ) {
-                    alt33=2;
+                else if ( (LA36_2==39) ) {
+                    alt36=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 33, 2, input);
+                        new NoViableAltException("", 36, 2, input);
 
                     throw nvae;
                 }
@@ -6965,20 +7375,20 @@
                 break;
             case 49:
                 {
-                alt33=3;
+                alt36=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 33, 0, input);
+                    new NoViableAltException("", 36, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt33) {
+            switch (alt36) {
                 case 1 :
-                    // InternalSignalDSL.g:2463:3: kw= '>='
+                    // InternalSignalDSL.g:2627:3: kw= '>='
                     {
                     kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -6991,12 +7401,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2469:3: (kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:2633:3: (kw= '<' kw= '=' )
                     {
-                    // InternalSignalDSL.g:2469:3: (kw= '<' kw= '=' )
-                    // InternalSignalDSL.g:2470:4: kw= '<' kw= '='
+                    // InternalSignalDSL.g:2633:3: (kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:2634:4: kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,48,FOLLOW_27); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_30); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -7017,7 +7427,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2482:3: kw= '>'
+                    // InternalSignalDSL.g:2646:3: kw= '>'
                     {
                     kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7030,7 +7440,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2488:3: kw= '<'
+                    // InternalSignalDSL.g:2652:3: kw= '<'
                     {
                     kw=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7067,7 +7477,7 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalSignalDSL.g:2497:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    // InternalSignalDSL.g:2661:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
     public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7075,8 +7485,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2497:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // InternalSignalDSL.g:2498:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            // InternalSignalDSL.g:2661:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalSignalDSL.g:2662:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -7107,7 +7517,7 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalSignalDSL.g:2504:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
+    // InternalSignalDSL.g:2668:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
     public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7120,18 +7530,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2510:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // InternalSignalDSL.g:2511:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalSignalDSL.g:2674:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalSignalDSL.g:2675:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
             {
-            // InternalSignalDSL.g:2511:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // InternalSignalDSL.g:2512:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalSignalDSL.g:2675:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalSignalDSL.g:2676:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_42);
+            pushFollow(FOLLOW_45);
             this_XAdditiveExpression_0=ruleXAdditiveExpression();
 
             state._fsp--;
@@ -7142,23 +7552,23 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2520:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
-            loop34:
+            // InternalSignalDSL.g:2684:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop37:
             do {
-                int alt34=2;
-                alt34 = dfa34.predict(input);
-                switch (alt34) {
+                int alt37=2;
+                alt37 = dfa37.predict(input);
+                switch (alt37) {
             	case 1 :
-            	    // InternalSignalDSL.g:2521:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalSignalDSL.g:2685:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
             	    {
-            	    // InternalSignalDSL.g:2521:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // InternalSignalDSL.g:2522:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    // InternalSignalDSL.g:2685:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalSignalDSL.g:2686:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
             	    {
-            	    // InternalSignalDSL.g:2532:5: ( () ( ( ruleOpOther ) ) )
-            	    // InternalSignalDSL.g:2533:6: () ( ( ruleOpOther ) )
+            	    // InternalSignalDSL.g:2696:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalSignalDSL.g:2697:6: () ( ( ruleOpOther ) )
             	    {
-            	    // InternalSignalDSL.g:2533:6: ()
-            	    // InternalSignalDSL.g:2534:7: 
+            	    // InternalSignalDSL.g:2697:6: ()
+            	    // InternalSignalDSL.g:2698:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -7170,11 +7580,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2540:6: ( ( ruleOpOther ) )
-            	    // InternalSignalDSL.g:2541:7: ( ruleOpOther )
+            	    // InternalSignalDSL.g:2704:6: ( ( ruleOpOther ) )
+            	    // InternalSignalDSL.g:2705:7: ( ruleOpOther )
             	    {
-            	    // InternalSignalDSL.g:2541:7: ( ruleOpOther )
-            	    // InternalSignalDSL.g:2542:8: ruleOpOther
+            	    // InternalSignalDSL.g:2705:7: ( ruleOpOther )
+            	    // InternalSignalDSL.g:2706:8: ruleOpOther
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -7188,7 +7598,7 @@
             	      								newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
             	      							
             	    }
-            	    pushFollow(FOLLOW_28);
+            	    pushFollow(FOLLOW_31);
             	    ruleOpOther();
 
             	    state._fsp--;
@@ -7210,18 +7620,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2558:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // InternalSignalDSL.g:2559:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalSignalDSL.g:2722:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalSignalDSL.g:2723:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
             	    {
-            	    // InternalSignalDSL.g:2559:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // InternalSignalDSL.g:2560:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    // InternalSignalDSL.g:2723:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalSignalDSL.g:2724:6: lv_rightOperand_3_0= ruleXAdditiveExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_42);
+            	    pushFollow(FOLLOW_45);
             	    lv_rightOperand_3_0=ruleXAdditiveExpression();
 
             	    state._fsp--;
@@ -7250,7 +7660,7 @@
             	    break;
 
             	default :
-            	    break loop34;
+            	    break loop37;
                 }
             } while (true);
 
@@ -7279,7 +7689,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalSignalDSL.g:2582:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalSignalDSL.g:2746:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -7287,8 +7697,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2582:47: (iv_ruleOpOther= ruleOpOther EOF )
-            // InternalSignalDSL.g:2583:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalSignalDSL.g:2746:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalSignalDSL.g:2747:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
@@ -7319,7 +7729,7 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalSignalDSL.g:2589:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    // InternalSignalDSL.g:2753:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
     public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -7329,15 +7739,15 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2595:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // InternalSignalDSL.g:2596:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalSignalDSL.g:2759:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalSignalDSL.g:2760:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // InternalSignalDSL.g:2596:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
-            int alt37=9;
-            alt37 = dfa37.predict(input);
-            switch (alt37) {
+            // InternalSignalDSL.g:2760:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt40=9;
+            alt40 = dfa40.predict(input);
+            switch (alt40) {
                 case 1 :
-                    // InternalSignalDSL.g:2597:3: kw= '->'
+                    // InternalSignalDSL.g:2761:3: kw= '->'
                     {
                     kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7350,7 +7760,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2603:3: kw= '..<'
+                    // InternalSignalDSL.g:2767:3: kw= '..<'
                     {
                     kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7363,12 +7773,12 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2609:3: (kw= '>' kw= '..' )
+                    // InternalSignalDSL.g:2773:3: (kw= '>' kw= '..' )
                     {
-                    // InternalSignalDSL.g:2609:3: (kw= '>' kw= '..' )
-                    // InternalSignalDSL.g:2610:4: kw= '>' kw= '..'
+                    // InternalSignalDSL.g:2773:3: (kw= '>' kw= '..' )
+                    // InternalSignalDSL.g:2774:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,49,FOLLOW_43); if (state.failed) return current;
+                    kw=(Token)match(input,49,FOLLOW_46); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -7389,7 +7799,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2622:3: kw= '..'
+                    // InternalSignalDSL.g:2786:3: kw= '..'
                     {
                     kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7402,7 +7812,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:2628:3: kw= '=>'
+                    // InternalSignalDSL.g:2792:3: kw= '=>'
                     {
                     kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7415,35 +7825,35 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:2634:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalSignalDSL.g:2798:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // InternalSignalDSL.g:2634:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // InternalSignalDSL.g:2635:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalSignalDSL.g:2798:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalSignalDSL.g:2799:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,49,FOLLOW_44); if (state.failed) return current;
+                    kw=(Token)match(input,49,FOLLOW_47); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
                       			
                     }
-                    // InternalSignalDSL.g:2640:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
-                    int alt35=2;
-                    int LA35_0 = input.LA(1);
+                    // InternalSignalDSL.g:2804:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt38=2;
+                    int LA38_0 = input.LA(1);
 
-                    if ( (LA35_0==49) ) {
-                        int LA35_1 = input.LA(2);
+                    if ( (LA38_0==49) ) {
+                        int LA38_1 = input.LA(2);
 
-                        if ( (LA35_1==EOF||(LA35_1>=RULE_STRING && LA35_1<=RULE_DECIMAL)||LA35_1==14||(LA35_1>=29 && LA35_1<=31)||LA35_1==36||(LA35_1>=40 && LA35_1<=41)||LA35_1==48||(LA35_1>=64 && LA35_1<=65)||LA35_1==69||LA35_1==77||LA35_1==79||(LA35_1>=82 && LA35_1<=84)||(LA35_1>=87 && LA35_1<=96)||LA35_1==98) ) {
-                            alt35=2;
+                        if ( (LA38_1==EOF||(LA38_1>=RULE_STRING && LA38_1<=RULE_DECIMAL)||LA38_1==14||(LA38_1>=29 && LA38_1<=31)||LA38_1==36||(LA38_1>=40 && LA38_1<=41)||LA38_1==48||(LA38_1>=64 && LA38_1<=65)||LA38_1==69||LA38_1==77||LA38_1==79||(LA38_1>=82 && LA38_1<=84)||(LA38_1>=87 && LA38_1<=96)||LA38_1==98) ) {
+                            alt38=2;
                         }
-                        else if ( (LA35_1==49) && (synpred14_InternalSignalDSL())) {
-                            alt35=1;
+                        else if ( (LA38_1==49) && (synpred14_InternalSignalDSL())) {
+                            alt38=1;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 35, 1, input);
+                                new NoViableAltException("", 38, 1, input);
 
                             throw nvae;
                         }
@@ -7451,21 +7861,21 @@
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 35, 0, input);
+                            new NoViableAltException("", 38, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt35) {
+                    switch (alt38) {
                         case 1 :
-                            // InternalSignalDSL.g:2641:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalSignalDSL.g:2805:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // InternalSignalDSL.g:2641:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // InternalSignalDSL.g:2642:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalSignalDSL.g:2805:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalSignalDSL.g:2806:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // InternalSignalDSL.g:2647:6: (kw= '>' kw= '>' )
-                            // InternalSignalDSL.g:2648:7: kw= '>' kw= '>'
+                            // InternalSignalDSL.g:2811:6: (kw= '>' kw= '>' )
+                            // InternalSignalDSL.g:2812:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,49,FOLLOW_44); if (state.failed) return current;
+                            kw=(Token)match(input,49,FOLLOW_47); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
@@ -7489,7 +7899,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:2661:5: kw= '>'
+                            // InternalSignalDSL.g:2825:5: kw= '>'
                             {
                             kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
@@ -7511,60 +7921,60 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:2669:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalSignalDSL.g:2833:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // InternalSignalDSL.g:2669:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // InternalSignalDSL.g:2670:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalSignalDSL.g:2833:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalSignalDSL.g:2834:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,48,FOLLOW_45); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_48); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
                       			
                     }
-                    // InternalSignalDSL.g:2675:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
-                    int alt36=3;
-                    int LA36_0 = input.LA(1);
+                    // InternalSignalDSL.g:2839:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt39=3;
+                    int LA39_0 = input.LA(1);
 
-                    if ( (LA36_0==48) ) {
-                        int LA36_1 = input.LA(2);
+                    if ( (LA39_0==48) ) {
+                        int LA39_1 = input.LA(2);
 
                         if ( (synpred15_InternalSignalDSL()) ) {
-                            alt36=1;
+                            alt39=1;
                         }
                         else if ( (true) ) {
-                            alt36=2;
+                            alt39=2;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 36, 1, input);
+                                new NoViableAltException("", 39, 1, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA36_0==61) ) {
-                        alt36=3;
+                    else if ( (LA39_0==61) ) {
+                        alt39=3;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 36, 0, input);
+                            new NoViableAltException("", 39, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt36) {
+                    switch (alt39) {
                         case 1 :
-                            // InternalSignalDSL.g:2676:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalSignalDSL.g:2840:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // InternalSignalDSL.g:2676:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // InternalSignalDSL.g:2677:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalSignalDSL.g:2840:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalSignalDSL.g:2841:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // InternalSignalDSL.g:2682:6: (kw= '<' kw= '<' )
-                            // InternalSignalDSL.g:2683:7: kw= '<' kw= '<'
+                            // InternalSignalDSL.g:2846:6: (kw= '<' kw= '<' )
+                            // InternalSignalDSL.g:2847:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,48,FOLLOW_34); if (state.failed) return current;
+                            kw=(Token)match(input,48,FOLLOW_37); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
@@ -7588,7 +7998,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:2696:5: kw= '<'
+                            // InternalSignalDSL.g:2860:5: kw= '<'
                             {
                             kw=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
@@ -7601,7 +8011,7 @@
                             }
                             break;
                         case 3 :
-                            // InternalSignalDSL.g:2702:5: kw= '=>'
+                            // InternalSignalDSL.g:2866:5: kw= '=>'
                             {
                             kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
@@ -7623,7 +8033,7 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:2710:3: kw= '<>'
+                    // InternalSignalDSL.g:2874:3: kw= '<>'
                     {
                     kw=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7636,7 +8046,7 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:2716:3: kw= '?:'
+                    // InternalSignalDSL.g:2880:3: kw= '?:'
                     {
                     kw=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7673,7 +8083,7 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalSignalDSL.g:2725:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    // InternalSignalDSL.g:2889:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
     public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7681,8 +8091,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2725:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
-            // InternalSignalDSL.g:2726:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            // InternalSignalDSL.g:2889:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalSignalDSL.g:2890:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
@@ -7713,7 +8123,7 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalSignalDSL.g:2732:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    // InternalSignalDSL.g:2896:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
     public final EObject ruleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7726,18 +8136,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2738:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
-            // InternalSignalDSL.g:2739:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalSignalDSL.g:2902:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalSignalDSL.g:2903:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
             {
-            // InternalSignalDSL.g:2739:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
-            // InternalSignalDSL.g:2740:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalSignalDSL.g:2903:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalSignalDSL.g:2904:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_46);
+            pushFollow(FOLLOW_49);
             this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();
 
             state._fsp--;
@@ -7748,44 +8158,44 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2748:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
-            loop38:
+            // InternalSignalDSL.g:2912:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop41:
             do {
-                int alt38=2;
-                int LA38_0 = input.LA(1);
+                int alt41=2;
+                int LA41_0 = input.LA(1);
 
-                if ( (LA38_0==64) ) {
-                    int LA38_2 = input.LA(2);
+                if ( (LA41_0==64) ) {
+                    int LA41_2 = input.LA(2);
 
                     if ( (synpred16_InternalSignalDSL()) ) {
-                        alt38=1;
+                        alt41=1;
                     }
 
 
                 }
-                else if ( (LA38_0==65) ) {
-                    int LA38_3 = input.LA(2);
+                else if ( (LA41_0==65) ) {
+                    int LA41_3 = input.LA(2);
 
                     if ( (synpred16_InternalSignalDSL()) ) {
-                        alt38=1;
+                        alt41=1;
                     }
 
 
                 }
 
 
-                switch (alt38) {
+                switch (alt41) {
             	case 1 :
-            	    // InternalSignalDSL.g:2749:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalSignalDSL.g:2913:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
             	    {
-            	    // InternalSignalDSL.g:2749:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
-            	    // InternalSignalDSL.g:2750:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    // InternalSignalDSL.g:2913:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalSignalDSL.g:2914:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
             	    {
-            	    // InternalSignalDSL.g:2760:5: ( () ( ( ruleOpAdd ) ) )
-            	    // InternalSignalDSL.g:2761:6: () ( ( ruleOpAdd ) )
+            	    // InternalSignalDSL.g:2924:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalSignalDSL.g:2925:6: () ( ( ruleOpAdd ) )
             	    {
-            	    // InternalSignalDSL.g:2761:6: ()
-            	    // InternalSignalDSL.g:2762:7: 
+            	    // InternalSignalDSL.g:2925:6: ()
+            	    // InternalSignalDSL.g:2926:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -7797,11 +8207,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2768:6: ( ( ruleOpAdd ) )
-            	    // InternalSignalDSL.g:2769:7: ( ruleOpAdd )
+            	    // InternalSignalDSL.g:2932:6: ( ( ruleOpAdd ) )
+            	    // InternalSignalDSL.g:2933:7: ( ruleOpAdd )
             	    {
-            	    // InternalSignalDSL.g:2769:7: ( ruleOpAdd )
-            	    // InternalSignalDSL.g:2770:8: ruleOpAdd
+            	    // InternalSignalDSL.g:2933:7: ( ruleOpAdd )
+            	    // InternalSignalDSL.g:2934:8: ruleOpAdd
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -7815,7 +8225,7 @@
             	      								newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
             	      							
             	    }
-            	    pushFollow(FOLLOW_28);
+            	    pushFollow(FOLLOW_31);
             	    ruleOpAdd();
 
             	    state._fsp--;
@@ -7837,18 +8247,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2786:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
-            	    // InternalSignalDSL.g:2787:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalSignalDSL.g:2950:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalSignalDSL.g:2951:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
             	    {
-            	    // InternalSignalDSL.g:2787:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
-            	    // InternalSignalDSL.g:2788:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    // InternalSignalDSL.g:2951:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalSignalDSL.g:2952:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_46);
+            	    pushFollow(FOLLOW_49);
             	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();
 
             	    state._fsp--;
@@ -7877,7 +8287,7 @@
             	    break;
 
             	default :
-            	    break loop38;
+            	    break loop41;
                 }
             } while (true);
 
@@ -7906,7 +8316,7 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalSignalDSL.g:2810:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    // InternalSignalDSL.g:2974:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
     public final String entryRuleOpAdd() throws RecognitionException {
         String current = null;
 
@@ -7914,8 +8324,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2810:45: (iv_ruleOpAdd= ruleOpAdd EOF )
-            // InternalSignalDSL.g:2811:2: iv_ruleOpAdd= ruleOpAdd EOF
+            // InternalSignalDSL.g:2974:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalSignalDSL.g:2975:2: iv_ruleOpAdd= ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAddRule()); 
@@ -7946,7 +8356,7 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalSignalDSL.g:2817:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    // InternalSignalDSL.g:2981:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
     public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -7956,29 +8366,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2823:2: ( (kw= '+' | kw= '-' ) )
-            // InternalSignalDSL.g:2824:2: (kw= '+' | kw= '-' )
+            // InternalSignalDSL.g:2987:2: ( (kw= '+' | kw= '-' ) )
+            // InternalSignalDSL.g:2988:2: (kw= '+' | kw= '-' )
             {
-            // InternalSignalDSL.g:2824:2: (kw= '+' | kw= '-' )
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            // InternalSignalDSL.g:2988:2: (kw= '+' | kw= '-' )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
 
-            if ( (LA39_0==64) ) {
-                alt39=1;
+            if ( (LA42_0==64) ) {
+                alt42=1;
             }
-            else if ( (LA39_0==65) ) {
-                alt39=2;
+            else if ( (LA42_0==65) ) {
+                alt42=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
-            switch (alt39) {
+            switch (alt42) {
                 case 1 :
-                    // InternalSignalDSL.g:2825:3: kw= '+'
+                    // InternalSignalDSL.g:2989:3: kw= '+'
                     {
                     kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -7991,7 +8401,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2831:3: kw= '-'
+                    // InternalSignalDSL.g:2995:3: kw= '-'
                     {
                     kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8028,7 +8438,7 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalSignalDSL.g:2840:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    // InternalSignalDSL.g:3004:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
     public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8036,8 +8446,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2840:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
-            // InternalSignalDSL.g:2841:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            // InternalSignalDSL.g:3004:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalSignalDSL.g:3005:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -8068,7 +8478,7 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalSignalDSL.g:2847:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    // InternalSignalDSL.g:3011:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
     public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8081,18 +8491,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2853:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
-            // InternalSignalDSL.g:2854:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalSignalDSL.g:3017:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalSignalDSL.g:3018:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
             {
-            // InternalSignalDSL.g:2854:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            // InternalSignalDSL.g:2855:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalSignalDSL.g:3018:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalSignalDSL.g:3019:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_47);
+            pushFollow(FOLLOW_50);
             this_XUnaryOperation_0=ruleXUnaryOperation();
 
             state._fsp--;
@@ -8103,17 +8513,17 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2863:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
-            loop40:
+            // InternalSignalDSL.g:3027:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop43:
             do {
-                int alt40=2;
+                int alt43=2;
                 switch ( input.LA(1) ) {
                 case 32:
                     {
-                    int LA40_2 = input.LA(2);
+                    int LA43_2 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt40=1;
+                        alt43=1;
                     }
 
 
@@ -8121,10 +8531,10 @@
                     break;
                 case 66:
                     {
-                    int LA40_3 = input.LA(2);
+                    int LA43_3 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt40=1;
+                        alt43=1;
                     }
 
 
@@ -8132,10 +8542,10 @@
                     break;
                 case 67:
                     {
-                    int LA40_4 = input.LA(2);
+                    int LA43_4 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt40=1;
+                        alt43=1;
                     }
 
 
@@ -8143,10 +8553,10 @@
                     break;
                 case 68:
                     {
-                    int LA40_5 = input.LA(2);
+                    int LA43_5 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt40=1;
+                        alt43=1;
                     }
 
 
@@ -8155,18 +8565,18 @@
 
                 }
 
-                switch (alt40) {
+                switch (alt43) {
             	case 1 :
-            	    // InternalSignalDSL.g:2864:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalSignalDSL.g:3028:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
             	    {
-            	    // InternalSignalDSL.g:2864:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
-            	    // InternalSignalDSL.g:2865:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    // InternalSignalDSL.g:3028:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalSignalDSL.g:3029:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
             	    {
-            	    // InternalSignalDSL.g:2875:5: ( () ( ( ruleOpMulti ) ) )
-            	    // InternalSignalDSL.g:2876:6: () ( ( ruleOpMulti ) )
+            	    // InternalSignalDSL.g:3039:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalSignalDSL.g:3040:6: () ( ( ruleOpMulti ) )
             	    {
-            	    // InternalSignalDSL.g:2876:6: ()
-            	    // InternalSignalDSL.g:2877:7: 
+            	    // InternalSignalDSL.g:3040:6: ()
+            	    // InternalSignalDSL.g:3041:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8178,11 +8588,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2883:6: ( ( ruleOpMulti ) )
-            	    // InternalSignalDSL.g:2884:7: ( ruleOpMulti )
+            	    // InternalSignalDSL.g:3047:6: ( ( ruleOpMulti ) )
+            	    // InternalSignalDSL.g:3048:7: ( ruleOpMulti )
             	    {
-            	    // InternalSignalDSL.g:2884:7: ( ruleOpMulti )
-            	    // InternalSignalDSL.g:2885:8: ruleOpMulti
+            	    // InternalSignalDSL.g:3048:7: ( ruleOpMulti )
+            	    // InternalSignalDSL.g:3049:8: ruleOpMulti
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8196,7 +8606,7 @@
             	      								newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
             	      							
             	    }
-            	    pushFollow(FOLLOW_28);
+            	    pushFollow(FOLLOW_31);
             	    ruleOpMulti();
 
             	    state._fsp--;
@@ -8218,18 +8628,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2901:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
-            	    // InternalSignalDSL.g:2902:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalSignalDSL.g:3065:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalSignalDSL.g:3066:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
             	    {
-            	    // InternalSignalDSL.g:2902:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
-            	    // InternalSignalDSL.g:2903:6: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    // InternalSignalDSL.g:3066:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalSignalDSL.g:3067:6: lv_rightOperand_3_0= ruleXUnaryOperation
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_47);
+            	    pushFollow(FOLLOW_50);
             	    lv_rightOperand_3_0=ruleXUnaryOperation();
 
             	    state._fsp--;
@@ -8258,7 +8668,7 @@
             	    break;
 
             	default :
-            	    break loop40;
+            	    break loop43;
                 }
             } while (true);
 
@@ -8287,7 +8697,7 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalSignalDSL.g:2925:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    // InternalSignalDSL.g:3089:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
     public final String entryRuleOpMulti() throws RecognitionException {
         String current = null;
 
@@ -8295,8 +8705,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2925:47: (iv_ruleOpMulti= ruleOpMulti EOF )
-            // InternalSignalDSL.g:2926:2: iv_ruleOpMulti= ruleOpMulti EOF
+            // InternalSignalDSL.g:3089:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalSignalDSL.g:3090:2: iv_ruleOpMulti= ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiRule()); 
@@ -8327,7 +8737,7 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalSignalDSL.g:2932:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
+    // InternalSignalDSL.g:3096:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
     public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8337,43 +8747,43 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2938:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
-            // InternalSignalDSL.g:2939:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalSignalDSL.g:3102:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalSignalDSL.g:3103:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
             {
-            // InternalSignalDSL.g:2939:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
-            int alt41=4;
+            // InternalSignalDSL.g:3103:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt44=4;
             switch ( input.LA(1) ) {
             case 32:
                 {
-                alt41=1;
+                alt44=1;
                 }
                 break;
             case 66:
                 {
-                alt41=2;
+                alt44=2;
                 }
                 break;
             case 67:
                 {
-                alt41=3;
+                alt44=3;
                 }
                 break;
             case 68:
                 {
-                alt41=4;
+                alt44=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt41) {
+            switch (alt44) {
                 case 1 :
-                    // InternalSignalDSL.g:2940:3: kw= '*'
+                    // InternalSignalDSL.g:3104:3: kw= '*'
                     {
                     kw=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8386,7 +8796,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2946:3: kw= '**'
+                    // InternalSignalDSL.g:3110:3: kw= '**'
                     {
                     kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8399,7 +8809,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2952:3: kw= '/'
+                    // InternalSignalDSL.g:3116:3: kw= '/'
                     {
                     kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8412,7 +8822,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2958:3: kw= '%'
+                    // InternalSignalDSL.g:3122:3: kw= '%'
                     {
                     kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8449,7 +8859,7 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalSignalDSL.g:2967:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    // InternalSignalDSL.g:3131:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
     public final EObject entryRuleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -8457,8 +8867,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2967:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
-            // InternalSignalDSL.g:2968:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            // InternalSignalDSL.g:3131:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalSignalDSL.g:3132:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
@@ -8489,7 +8899,7 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalSignalDSL.g:2974:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
+    // InternalSignalDSL.g:3138:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
     public final EObject ruleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -8502,35 +8912,35 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2980:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
-            // InternalSignalDSL.g:2981:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            // InternalSignalDSL.g:3144:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalSignalDSL.g:3145:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
             {
-            // InternalSignalDSL.g:2981:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
-            int alt42=2;
-            int LA42_0 = input.LA(1);
+            // InternalSignalDSL.g:3145:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            if ( ((LA42_0>=64 && LA42_0<=65)||LA42_0==69) ) {
-                alt42=1;
+            if ( ((LA45_0>=64 && LA45_0<=65)||LA45_0==69) ) {
+                alt45=1;
             }
-            else if ( ((LA42_0>=RULE_STRING && LA42_0<=RULE_DECIMAL)||LA42_0==14||(LA42_0>=29 && LA42_0<=31)||LA42_0==36||(LA42_0>=40 && LA42_0<=41)||LA42_0==48||LA42_0==77||LA42_0==79||(LA42_0>=82 && LA42_0<=84)||(LA42_0>=87 && LA42_0<=96)||LA42_0==98) ) {
-                alt42=2;
+            else if ( ((LA45_0>=RULE_STRING && LA45_0<=RULE_DECIMAL)||LA45_0==14||(LA45_0>=29 && LA45_0<=31)||LA45_0==36||(LA45_0>=40 && LA45_0<=41)||LA45_0==48||LA45_0==77||LA45_0==79||(LA45_0>=82 && LA45_0<=84)||(LA45_0>=87 && LA45_0<=96)||LA45_0==98) ) {
+                alt45=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
-            switch (alt42) {
+            switch (alt45) {
                 case 1 :
-                    // InternalSignalDSL.g:2982:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalSignalDSL.g:3146:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
                     {
-                    // InternalSignalDSL.g:2982:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
-                    // InternalSignalDSL.g:2983:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalSignalDSL.g:3146:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalSignalDSL.g:3147:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
                     {
-                    // InternalSignalDSL.g:2983:4: ()
-                    // InternalSignalDSL.g:2984:5: 
+                    // InternalSignalDSL.g:3147:4: ()
+                    // InternalSignalDSL.g:3148:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8542,11 +8952,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:2990:4: ( ( ruleOpUnary ) )
-                    // InternalSignalDSL.g:2991:5: ( ruleOpUnary )
+                    // InternalSignalDSL.g:3154:4: ( ( ruleOpUnary ) )
+                    // InternalSignalDSL.g:3155:5: ( ruleOpUnary )
                     {
-                    // InternalSignalDSL.g:2991:5: ( ruleOpUnary )
-                    // InternalSignalDSL.g:2992:6: ruleOpUnary
+                    // InternalSignalDSL.g:3155:5: ( ruleOpUnary )
+                    // InternalSignalDSL.g:3156:6: ruleOpUnary
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8560,7 +8970,7 @@
                       						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_28);
+                    pushFollow(FOLLOW_31);
                     ruleOpUnary();
 
                     state._fsp--;
@@ -8576,11 +8986,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:3006:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
-                    // InternalSignalDSL.g:3007:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalSignalDSL.g:3170:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalSignalDSL.g:3171:5: (lv_operand_2_0= ruleXUnaryOperation )
                     {
-                    // InternalSignalDSL.g:3007:5: (lv_operand_2_0= ruleXUnaryOperation )
-                    // InternalSignalDSL.g:3008:6: lv_operand_2_0= ruleXUnaryOperation
+                    // InternalSignalDSL.g:3171:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalSignalDSL.g:3172:6: lv_operand_2_0= ruleXUnaryOperation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8618,7 +9028,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3027:3: this_XCastedExpression_3= ruleXCastedExpression
+                    // InternalSignalDSL.g:3191:3: this_XCastedExpression_3= ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8664,7 +9074,7 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalSignalDSL.g:3039:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    // InternalSignalDSL.g:3203:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
     public final String entryRuleOpUnary() throws RecognitionException {
         String current = null;
 
@@ -8672,8 +9082,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3039:47: (iv_ruleOpUnary= ruleOpUnary EOF )
-            // InternalSignalDSL.g:3040:2: iv_ruleOpUnary= ruleOpUnary EOF
+            // InternalSignalDSL.g:3203:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalSignalDSL.g:3204:2: iv_ruleOpUnary= ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpUnaryRule()); 
@@ -8704,7 +9114,7 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalSignalDSL.g:3046:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    // InternalSignalDSL.g:3210:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
     public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8714,38 +9124,38 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3052:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
-            // InternalSignalDSL.g:3053:2: (kw= '!' | kw= '-' | kw= '+' )
+            // InternalSignalDSL.g:3216:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalSignalDSL.g:3217:2: (kw= '!' | kw= '-' | kw= '+' )
             {
-            // InternalSignalDSL.g:3053:2: (kw= '!' | kw= '-' | kw= '+' )
-            int alt43=3;
+            // InternalSignalDSL.g:3217:2: (kw= '!' | kw= '-' | kw= '+' )
+            int alt46=3;
             switch ( input.LA(1) ) {
             case 69:
                 {
-                alt43=1;
+                alt46=1;
                 }
                 break;
             case 65:
                 {
-                alt43=2;
+                alt46=2;
                 }
                 break;
             case 64:
                 {
-                alt43=3;
+                alt46=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt43) {
+            switch (alt46) {
                 case 1 :
-                    // InternalSignalDSL.g:3054:3: kw= '!'
+                    // InternalSignalDSL.g:3218:3: kw= '!'
                     {
                     kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8758,7 +9168,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3060:3: kw= '-'
+                    // InternalSignalDSL.g:3224:3: kw= '-'
                     {
                     kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8771,7 +9181,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3066:3: kw= '+'
+                    // InternalSignalDSL.g:3230:3: kw= '+'
                     {
                     kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -8808,7 +9218,7 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalSignalDSL.g:3075:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    // InternalSignalDSL.g:3239:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
     public final EObject entryRuleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8816,8 +9226,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3075:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
-            // InternalSignalDSL.g:3076:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            // InternalSignalDSL.g:3239:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalSignalDSL.g:3240:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
@@ -8848,7 +9258,7 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalSignalDSL.g:3082:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
+    // InternalSignalDSL.g:3246:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
     public final EObject ruleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8862,18 +9272,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3088:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
-            // InternalSignalDSL.g:3089:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalSignalDSL.g:3252:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalSignalDSL.g:3253:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
             {
-            // InternalSignalDSL.g:3089:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
-            // InternalSignalDSL.g:3090:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            // InternalSignalDSL.g:3253:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalSignalDSL.g:3254:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_48);
+            pushFollow(FOLLOW_51);
             this_XPostfixOperation_0=ruleXPostfixOperation();
 
             state._fsp--;
@@ -8884,35 +9294,35 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:3098:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
-            loop44:
+            // InternalSignalDSL.g:3262:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop47:
             do {
-                int alt44=2;
-                int LA44_0 = input.LA(1);
+                int alt47=2;
+                int LA47_0 = input.LA(1);
 
-                if ( (LA44_0==70) ) {
-                    int LA44_2 = input.LA(2);
+                if ( (LA47_0==70) ) {
+                    int LA47_2 = input.LA(2);
 
                     if ( (synpred18_InternalSignalDSL()) ) {
-                        alt44=1;
+                        alt47=1;
                     }
 
 
                 }
 
 
-                switch (alt44) {
+                switch (alt47) {
             	case 1 :
-            	    // InternalSignalDSL.g:3099:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalSignalDSL.g:3263:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // InternalSignalDSL.g:3099:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
-            	    // InternalSignalDSL.g:3100:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    // InternalSignalDSL.g:3263:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalSignalDSL.g:3264:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
             	    {
-            	    // InternalSignalDSL.g:3106:5: ( () otherlv_2= 'as' )
-            	    // InternalSignalDSL.g:3107:6: () otherlv_2= 'as'
+            	    // InternalSignalDSL.g:3270:5: ( () otherlv_2= 'as' )
+            	    // InternalSignalDSL.g:3271:6: () otherlv_2= 'as'
             	    {
-            	    // InternalSignalDSL.g:3107:6: ()
-            	    // InternalSignalDSL.g:3108:7: 
+            	    // InternalSignalDSL.g:3271:6: ()
+            	    // InternalSignalDSL.g:3272:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8924,7 +9334,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,70,FOLLOW_41); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,70,FOLLOW_44); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
@@ -8936,18 +9346,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3120:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalSignalDSL.g:3121:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalSignalDSL.g:3284:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalSignalDSL.g:3285:5: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // InternalSignalDSL.g:3121:5: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalSignalDSL.g:3122:6: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalSignalDSL.g:3285:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalSignalDSL.g:3286:6: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_48);
+            	    pushFollow(FOLLOW_51);
             	    lv_type_3_0=ruleJvmTypeReference();
 
             	    state._fsp--;
@@ -8976,7 +9386,7 @@
             	    break;
 
             	default :
-            	    break loop44;
+            	    break loop47;
                 }
             } while (true);
 
@@ -9005,7 +9415,7 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalSignalDSL.g:3144:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    // InternalSignalDSL.g:3308:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
     public final EObject entryRuleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -9013,8 +9423,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3144:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
-            // InternalSignalDSL.g:3145:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
+            // InternalSignalDSL.g:3308:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalSignalDSL.g:3309:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
@@ -9045,7 +9455,7 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalSignalDSL.g:3151:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
+    // InternalSignalDSL.g:3315:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
     public final EObject ruleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -9056,18 +9466,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3157:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
-            // InternalSignalDSL.g:3158:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalSignalDSL.g:3321:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalSignalDSL.g:3322:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
             {
-            // InternalSignalDSL.g:3158:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
-            // InternalSignalDSL.g:3159:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            // InternalSignalDSL.g:3322:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalSignalDSL.g:3323:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_49);
+            pushFollow(FOLLOW_52);
             this_XMemberFeatureCall_0=ruleXMemberFeatureCall();
 
             state._fsp--;
@@ -9078,33 +9488,33 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:3167:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
-            int alt45=2;
-            int LA45_0 = input.LA(1);
+            // InternalSignalDSL.g:3331:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            int alt48=2;
+            int LA48_0 = input.LA(1);
 
-            if ( (LA45_0==71) ) {
-                int LA45_1 = input.LA(2);
+            if ( (LA48_0==71) ) {
+                int LA48_1 = input.LA(2);
 
                 if ( (synpred19_InternalSignalDSL()) ) {
-                    alt45=1;
+                    alt48=1;
                 }
             }
-            else if ( (LA45_0==72) ) {
-                int LA45_2 = input.LA(2);
+            else if ( (LA48_0==72) ) {
+                int LA48_2 = input.LA(2);
 
                 if ( (synpred19_InternalSignalDSL()) ) {
-                    alt45=1;
+                    alt48=1;
                 }
             }
-            switch (alt45) {
+            switch (alt48) {
                 case 1 :
-                    // InternalSignalDSL.g:3168:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    // InternalSignalDSL.g:3332:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
                     {
-                    // InternalSignalDSL.g:3178:4: ( () ( ( ruleOpPostfix ) ) )
-                    // InternalSignalDSL.g:3179:5: () ( ( ruleOpPostfix ) )
+                    // InternalSignalDSL.g:3342:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalSignalDSL.g:3343:5: () ( ( ruleOpPostfix ) )
                     {
-                    // InternalSignalDSL.g:3179:5: ()
-                    // InternalSignalDSL.g:3180:6: 
+                    // InternalSignalDSL.g:3343:5: ()
+                    // InternalSignalDSL.g:3344:6: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9116,11 +9526,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:3186:5: ( ( ruleOpPostfix ) )
-                    // InternalSignalDSL.g:3187:6: ( ruleOpPostfix )
+                    // InternalSignalDSL.g:3350:5: ( ( ruleOpPostfix ) )
+                    // InternalSignalDSL.g:3351:6: ( ruleOpPostfix )
                     {
-                    // InternalSignalDSL.g:3187:6: ( ruleOpPostfix )
-                    // InternalSignalDSL.g:3188:7: ruleOpPostfix
+                    // InternalSignalDSL.g:3351:6: ( ruleOpPostfix )
+                    // InternalSignalDSL.g:3352:7: ruleOpPostfix
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9184,7 +9594,7 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalSignalDSL.g:3208:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    // InternalSignalDSL.g:3372:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
     public final String entryRuleOpPostfix() throws RecognitionException {
         String current = null;
 
@@ -9192,8 +9602,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3208:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
-            // InternalSignalDSL.g:3209:2: iv_ruleOpPostfix= ruleOpPostfix EOF
+            // InternalSignalDSL.g:3372:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalSignalDSL.g:3373:2: iv_ruleOpPostfix= ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpPostfixRule()); 
@@ -9224,7 +9634,7 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalSignalDSL.g:3215:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    // InternalSignalDSL.g:3379:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
     public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -9234,29 +9644,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3221:2: ( (kw= '++' | kw= '--' ) )
-            // InternalSignalDSL.g:3222:2: (kw= '++' | kw= '--' )
+            // InternalSignalDSL.g:3385:2: ( (kw= '++' | kw= '--' ) )
+            // InternalSignalDSL.g:3386:2: (kw= '++' | kw= '--' )
             {
-            // InternalSignalDSL.g:3222:2: (kw= '++' | kw= '--' )
-            int alt46=2;
-            int LA46_0 = input.LA(1);
+            // InternalSignalDSL.g:3386:2: (kw= '++' | kw= '--' )
+            int alt49=2;
+            int LA49_0 = input.LA(1);
 
-            if ( (LA46_0==71) ) {
-                alt46=1;
+            if ( (LA49_0==71) ) {
+                alt49=1;
             }
-            else if ( (LA46_0==72) ) {
-                alt46=2;
+            else if ( (LA49_0==72) ) {
+                alt49=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 46, 0, input);
+                    new NoViableAltException("", 49, 0, input);
 
                 throw nvae;
             }
-            switch (alt46) {
+            switch (alt49) {
                 case 1 :
-                    // InternalSignalDSL.g:3223:3: kw= '++'
+                    // InternalSignalDSL.g:3387:3: kw= '++'
                     {
                     kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -9269,7 +9679,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3229:3: kw= '--'
+                    // InternalSignalDSL.g:3393:3: kw= '--'
                     {
                     kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -9306,7 +9716,7 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalSignalDSL.g:3238:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    // InternalSignalDSL.g:3402:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
     public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -9314,8 +9724,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3238:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
-            // InternalSignalDSL.g:3239:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
+            // InternalSignalDSL.g:3402:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalSignalDSL.g:3403:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
@@ -9346,7 +9756,7 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalSignalDSL.g:3245:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
+    // InternalSignalDSL.g:3409:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
     public final EObject ruleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -9382,18 +9792,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3251:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
-            // InternalSignalDSL.g:3252:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalSignalDSL.g:3415:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
+            // InternalSignalDSL.g:3416:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
             {
-            // InternalSignalDSL.g:3252:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
-            // InternalSignalDSL.g:3253:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            // InternalSignalDSL.g:3416:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalSignalDSL.g:3417:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_50);
+            pushFollow(FOLLOW_53);
             this_XPrimaryExpression_0=ruleXPrimaryExpression();
 
             state._fsp--;
@@ -9404,20 +9814,20 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:3261:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
-            loop55:
+            // InternalSignalDSL.g:3425:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            loop58:
             do {
-                int alt55=3;
+                int alt58=3;
                 switch ( input.LA(1) ) {
                 case 73:
                     {
-                    int LA55_2 = input.LA(2);
+                    int LA58_2 = input.LA(2);
 
                     if ( (synpred20_InternalSignalDSL()) ) {
-                        alt55=1;
+                        alt58=1;
                     }
                     else if ( (synpred21_InternalSignalDSL()) ) {
-                        alt55=2;
+                        alt58=2;
                     }
 
 
@@ -9425,13 +9835,13 @@
                     break;
                 case 74:
                     {
-                    int LA55_3 = input.LA(2);
+                    int LA58_3 = input.LA(2);
 
                     if ( (synpred20_InternalSignalDSL()) ) {
-                        alt55=1;
+                        alt58=1;
                     }
                     else if ( (synpred21_InternalSignalDSL()) ) {
-                        alt55=2;
+                        alt58=2;
                     }
 
 
@@ -9439,10 +9849,10 @@
                     break;
                 case 75:
                     {
-                    int LA55_4 = input.LA(2);
+                    int LA58_4 = input.LA(2);
 
                     if ( (synpred21_InternalSignalDSL()) ) {
-                        alt55=2;
+                        alt58=2;
                     }
 
 
@@ -9451,21 +9861,21 @@
 
                 }
 
-                switch (alt55) {
+                switch (alt58) {
             	case 1 :
-            	    // InternalSignalDSL.g:3262:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalSignalDSL.g:3426:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
             	    {
-            	    // InternalSignalDSL.g:3262:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
-            	    // InternalSignalDSL.g:3263:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalSignalDSL.g:3426:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalSignalDSL.g:3427:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
             	    {
-            	    // InternalSignalDSL.g:3263:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-            	    // InternalSignalDSL.g:3264:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalSignalDSL.g:3427:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalSignalDSL.g:3428:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
             	    {
-            	    // InternalSignalDSL.g:3284:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-            	    // InternalSignalDSL.g:3285:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    // InternalSignalDSL.g:3448:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalSignalDSL.g:3449:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
             	    {
-            	    // InternalSignalDSL.g:3285:7: ()
-            	    // InternalSignalDSL.g:3286:8: 
+            	    // InternalSignalDSL.g:3449:7: ()
+            	    // InternalSignalDSL.g:3450:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9477,28 +9887,28 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3292:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
-            	    int alt47=2;
-            	    int LA47_0 = input.LA(1);
+            	    // InternalSignalDSL.g:3456:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    int alt50=2;
+            	    int LA50_0 = input.LA(1);
 
-            	    if ( (LA47_0==73) ) {
-            	        alt47=1;
+            	    if ( (LA50_0==73) ) {
+            	        alt50=1;
             	    }
-            	    else if ( (LA47_0==74) ) {
-            	        alt47=2;
+            	    else if ( (LA50_0==74) ) {
+            	        alt50=2;
             	    }
             	    else {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 47, 0, input);
+            	            new NoViableAltException("", 50, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt47) {
+            	    switch (alt50) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3293:8: otherlv_2= '.'
+            	            // InternalSignalDSL.g:3457:8: otherlv_2= '.'
             	            {
-            	            otherlv_2=(Token)match(input,73,FOLLOW_51); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,73,FOLLOW_54); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
@@ -9508,15 +9918,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalSignalDSL.g:3298:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalSignalDSL.g:3462:8: ( (lv_explicitStatic_3_0= '::' ) )
             	            {
-            	            // InternalSignalDSL.g:3298:8: ( (lv_explicitStatic_3_0= '::' ) )
-            	            // InternalSignalDSL.g:3299:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalSignalDSL.g:3462:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalSignalDSL.g:3463:9: (lv_explicitStatic_3_0= '::' )
             	            {
-            	            // InternalSignalDSL.g:3299:9: (lv_explicitStatic_3_0= '::' )
-            	            // InternalSignalDSL.g:3300:10: lv_explicitStatic_3_0= '::'
+            	            // InternalSignalDSL.g:3463:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalSignalDSL.g:3464:10: lv_explicitStatic_3_0= '::'
             	            {
-            	            lv_explicitStatic_3_0=(Token)match(input,74,FOLLOW_51); if (state.failed) return current;
+            	            lv_explicitStatic_3_0=(Token)match(input,74,FOLLOW_54); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
@@ -9542,11 +9952,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3313:7: ( ( ruleFeatureCallID ) )
-            	    // InternalSignalDSL.g:3314:8: ( ruleFeatureCallID )
+            	    // InternalSignalDSL.g:3477:7: ( ( ruleFeatureCallID ) )
+            	    // InternalSignalDSL.g:3478:8: ( ruleFeatureCallID )
             	    {
-            	    // InternalSignalDSL.g:3314:8: ( ruleFeatureCallID )
-            	    // InternalSignalDSL.g:3315:9: ruleFeatureCallID
+            	    // InternalSignalDSL.g:3478:8: ( ruleFeatureCallID )
+            	    // InternalSignalDSL.g:3479:9: ruleFeatureCallID
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9560,7 +9970,7 @@
             	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0());
             	      								
             	    }
-            	    pushFollow(FOLLOW_27);
+            	    pushFollow(FOLLOW_30);
             	    ruleFeatureCallID();
 
             	    state._fsp--;
@@ -9581,7 +9991,7 @@
             	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3());
             	      						
             	    }
-            	    pushFollow(FOLLOW_28);
+            	    pushFollow(FOLLOW_31);
             	    ruleOpSingleAssign();
 
             	    state._fsp--;
@@ -9597,18 +10007,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3338:5: ( (lv_value_6_0= ruleXAssignment ) )
-            	    // InternalSignalDSL.g:3339:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalSignalDSL.g:3502:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalSignalDSL.g:3503:6: (lv_value_6_0= ruleXAssignment )
             	    {
-            	    // InternalSignalDSL.g:3339:6: (lv_value_6_0= ruleXAssignment )
-            	    // InternalSignalDSL.g:3340:7: lv_value_6_0= ruleXAssignment
+            	    // InternalSignalDSL.g:3503:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalSignalDSL.g:3504:7: lv_value_6_0= ruleXAssignment
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
             	      						
             	    }
-            	    pushFollow(FOLLOW_50);
+            	    pushFollow(FOLLOW_53);
             	    lv_value_6_0=ruleXAssignment();
 
             	    state._fsp--;
@@ -9639,19 +10049,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalSignalDSL.g:3359:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalSignalDSL.g:3523:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
             	    {
-            	    // InternalSignalDSL.g:3359:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
-            	    // InternalSignalDSL.g:3360:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    // InternalSignalDSL.g:3523:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalSignalDSL.g:3524:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
             	    {
-            	    // InternalSignalDSL.g:3360:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
-            	    // InternalSignalDSL.g:3361:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalSignalDSL.g:3524:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalSignalDSL.g:3525:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
             	    {
-            	    // InternalSignalDSL.g:3381:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
-            	    // InternalSignalDSL.g:3382:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    // InternalSignalDSL.g:3545:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalSignalDSL.g:3546:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
             	    {
-            	    // InternalSignalDSL.g:3382:7: ()
-            	    // InternalSignalDSL.g:3383:8: 
+            	    // InternalSignalDSL.g:3546:7: ()
+            	    // InternalSignalDSL.g:3547:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9663,37 +10073,37 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3389:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
-            	    int alt48=3;
+            	    // InternalSignalDSL.g:3553:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    int alt51=3;
             	    switch ( input.LA(1) ) {
             	    case 73:
             	        {
-            	        alt48=1;
+            	        alt51=1;
             	        }
             	        break;
             	    case 75:
             	        {
-            	        alt48=2;
+            	        alt51=2;
             	        }
             	        break;
             	    case 74:
             	        {
-            	        alt48=3;
+            	        alt51=3;
             	        }
             	        break;
             	    default:
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 48, 0, input);
+            	            new NoViableAltException("", 51, 0, input);
 
             	        throw nvae;
             	    }
 
-            	    switch (alt48) {
+            	    switch (alt51) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3390:8: otherlv_8= '.'
+            	            // InternalSignalDSL.g:3554:8: otherlv_8= '.'
             	            {
-            	            otherlv_8=(Token)match(input,73,FOLLOW_52); if (state.failed) return current;
+            	            otherlv_8=(Token)match(input,73,FOLLOW_55); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
@@ -9703,15 +10113,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalSignalDSL.g:3395:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalSignalDSL.g:3559:8: ( (lv_nullSafe_9_0= '?.' ) )
             	            {
-            	            // InternalSignalDSL.g:3395:8: ( (lv_nullSafe_9_0= '?.' ) )
-            	            // InternalSignalDSL.g:3396:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalSignalDSL.g:3559:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalSignalDSL.g:3560:9: (lv_nullSafe_9_0= '?.' )
             	            {
-            	            // InternalSignalDSL.g:3396:9: (lv_nullSafe_9_0= '?.' )
-            	            // InternalSignalDSL.g:3397:10: lv_nullSafe_9_0= '?.'
+            	            // InternalSignalDSL.g:3560:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalSignalDSL.g:3561:10: lv_nullSafe_9_0= '?.'
             	            {
-            	            lv_nullSafe_9_0=(Token)match(input,75,FOLLOW_52); if (state.failed) return current;
+            	            lv_nullSafe_9_0=(Token)match(input,75,FOLLOW_55); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
@@ -9735,15 +10145,15 @@
             	            }
             	            break;
             	        case 3 :
-            	            // InternalSignalDSL.g:3410:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalSignalDSL.g:3574:8: ( (lv_explicitStatic_10_0= '::' ) )
             	            {
-            	            // InternalSignalDSL.g:3410:8: ( (lv_explicitStatic_10_0= '::' ) )
-            	            // InternalSignalDSL.g:3411:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalSignalDSL.g:3574:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalSignalDSL.g:3575:9: (lv_explicitStatic_10_0= '::' )
             	            {
-            	            // InternalSignalDSL.g:3411:9: (lv_explicitStatic_10_0= '::' )
-            	            // InternalSignalDSL.g:3412:10: lv_explicitStatic_10_0= '::'
+            	            // InternalSignalDSL.g:3575:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalSignalDSL.g:3576:10: lv_explicitStatic_10_0= '::'
             	            {
-            	            lv_explicitStatic_10_0=(Token)match(input,74,FOLLOW_52); if (state.failed) return current;
+            	            lv_explicitStatic_10_0=(Token)match(input,74,FOLLOW_55); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
@@ -9775,35 +10185,35 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3427:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
-            	    int alt50=2;
-            	    int LA50_0 = input.LA(1);
+            	    // InternalSignalDSL.g:3591:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    int alt53=2;
+            	    int LA53_0 = input.LA(1);
 
-            	    if ( (LA50_0==48) ) {
-            	        alt50=1;
+            	    if ( (LA53_0==48) ) {
+            	        alt53=1;
             	    }
-            	    switch (alt50) {
+            	    switch (alt53) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3428:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            // InternalSignalDSL.g:3592:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
             	            {
-            	            otherlv_11=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
+            	            otherlv_11=(Token)match(input,48,FOLLOW_56); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
             	              					
             	            }
-            	            // InternalSignalDSL.g:3432:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
-            	            // InternalSignalDSL.g:3433:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalSignalDSL.g:3596:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalSignalDSL.g:3597:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
             	            {
-            	            // InternalSignalDSL.g:3433:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
-            	            // InternalSignalDSL.g:3434:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            // InternalSignalDSL.g:3597:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalSignalDSL.g:3598:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
             	            {
             	            if ( state.backtracking==0 ) {
 
             	              								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
             	              							
             	            }
-            	            pushFollow(FOLLOW_54);
+            	            pushFollow(FOLLOW_57);
             	            lv_typeArguments_12_0=ruleJvmArgumentTypeReference();
 
             	            state._fsp--;
@@ -9827,39 +10237,39 @@
 
             	            }
 
-            	            // InternalSignalDSL.g:3451:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
-            	            loop49:
+            	            // InternalSignalDSL.g:3615:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            loop52:
             	            do {
-            	                int alt49=2;
-            	                int LA49_0 = input.LA(1);
+            	                int alt52=2;
+            	                int LA52_0 = input.LA(1);
 
-            	                if ( (LA49_0==37) ) {
-            	                    alt49=1;
+            	                if ( (LA52_0==37) ) {
+            	                    alt52=1;
             	                }
 
 
-            	                switch (alt49) {
+            	                switch (alt52) {
             	            	case 1 :
-            	            	    // InternalSignalDSL.g:3452:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalSignalDSL.g:3616:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
             	            	    {
-            	            	    otherlv_13=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
+            	            	    otherlv_13=(Token)match(input,37,FOLLOW_56); if (state.failed) return current;
             	            	    if ( state.backtracking==0 ) {
 
             	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
             	            	      						
             	            	    }
-            	            	    // InternalSignalDSL.g:3456:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
-            	            	    // InternalSignalDSL.g:3457:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalSignalDSL.g:3620:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalSignalDSL.g:3621:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
             	            	    {
-            	            	    // InternalSignalDSL.g:3457:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
-            	            	    // InternalSignalDSL.g:3458:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    // InternalSignalDSL.g:3621:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalSignalDSL.g:3622:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
             	            	    {
             	            	    if ( state.backtracking==0 ) {
 
             	            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
             	            	      								
             	            	    }
-            	            	    pushFollow(FOLLOW_54);
+            	            	    pushFollow(FOLLOW_57);
             	            	    lv_typeArguments_14_0=ruleJvmArgumentTypeReference();
 
             	            	    state._fsp--;
@@ -9888,11 +10298,11 @@
             	            	    break;
 
             	            	default :
-            	            	    break loop49;
+            	            	    break loop52;
             	                }
             	            } while (true);
 
-            	            otherlv_15=(Token)match(input,49,FOLLOW_52); if (state.failed) return current;
+            	            otherlv_15=(Token)match(input,49,FOLLOW_55); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
@@ -9904,11 +10314,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3481:5: ( ( ruleIdOrSuper ) )
-            	    // InternalSignalDSL.g:3482:6: ( ruleIdOrSuper )
+            	    // InternalSignalDSL.g:3645:5: ( ( ruleIdOrSuper ) )
+            	    // InternalSignalDSL.g:3646:6: ( ruleIdOrSuper )
             	    {
-            	    // InternalSignalDSL.g:3482:6: ( ruleIdOrSuper )
-            	    // InternalSignalDSL.g:3483:7: ruleIdOrSuper
+            	    // InternalSignalDSL.g:3646:6: ( ruleIdOrSuper )
+            	    // InternalSignalDSL.g:3647:7: ruleIdOrSuper
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9922,7 +10332,7 @@
             	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0());
             	      						
             	    }
-            	    pushFollow(FOLLOW_55);
+            	    pushFollow(FOLLOW_58);
             	    ruleIdOrSuper();
 
             	    state._fsp--;
@@ -9938,20 +10348,20 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3497:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
-            	    int alt53=2;
-            	    alt53 = dfa53.predict(input);
-            	    switch (alt53) {
+            	    // InternalSignalDSL.g:3661:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
+            	    int alt56=2;
+            	    alt56 = dfa56.predict(input);
+            	    switch (alt56) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3498:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
+            	            // InternalSignalDSL.g:3662:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
             	            {
-            	            // InternalSignalDSL.g:3498:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
-            	            // InternalSignalDSL.g:3499:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalSignalDSL.g:3662:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalSignalDSL.g:3663:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
             	            {
-            	            // InternalSignalDSL.g:3503:7: (lv_explicitOperationCall_17_0= '(' )
-            	            // InternalSignalDSL.g:3504:8: lv_explicitOperationCall_17_0= '('
+            	            // InternalSignalDSL.g:3667:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalSignalDSL.g:3668:8: lv_explicitOperationCall_17_0= '('
             	            {
-            	            lv_explicitOperationCall_17_0=(Token)match(input,36,FOLLOW_56); if (state.failed) return current;
+            	            lv_explicitOperationCall_17_0=(Token)match(input,36,FOLLOW_59); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
@@ -9971,25 +10381,25 @@
 
             	            }
 
-            	            // InternalSignalDSL.g:3516:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
-            	            int alt52=3;
-            	            alt52 = dfa52.predict(input);
-            	            switch (alt52) {
+            	            // InternalSignalDSL.g:3680:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            int alt55=3;
+            	            alt55 = dfa55.predict(input);
+            	            switch (alt55) {
             	                case 1 :
-            	                    // InternalSignalDSL.g:3517:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalSignalDSL.g:3681:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
             	                    {
-            	                    // InternalSignalDSL.g:3517:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
-            	                    // InternalSignalDSL.g:3518:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalSignalDSL.g:3681:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalSignalDSL.g:3682:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
             	                    {
-            	                    // InternalSignalDSL.g:3543:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
-            	                    // InternalSignalDSL.g:3544:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    // InternalSignalDSL.g:3707:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalSignalDSL.g:3708:9: lv_memberCallArguments_18_0= ruleXShortClosure
             	                    {
             	                    if ( state.backtracking==0 ) {
 
             	                      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
             	                      								
             	                    }
-            	                    pushFollow(FOLLOW_26);
+            	                    pushFollow(FOLLOW_29);
             	                    lv_memberCallArguments_18_0=ruleXShortClosure();
 
             	                    state._fsp--;
@@ -10017,23 +10427,23 @@
             	                    }
             	                    break;
             	                case 2 :
-            	                    // InternalSignalDSL.g:3562:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalSignalDSL.g:3726:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
             	                    {
-            	                    // InternalSignalDSL.g:3562:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
-            	                    // InternalSignalDSL.g:3563:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    // InternalSignalDSL.g:3726:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalSignalDSL.g:3727:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
             	                    {
-            	                    // InternalSignalDSL.g:3563:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
-            	                    // InternalSignalDSL.g:3564:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalSignalDSL.g:3727:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalSignalDSL.g:3728:9: (lv_memberCallArguments_19_0= ruleXExpression )
             	                    {
-            	                    // InternalSignalDSL.g:3564:9: (lv_memberCallArguments_19_0= ruleXExpression )
-            	                    // InternalSignalDSL.g:3565:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    // InternalSignalDSL.g:3728:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalSignalDSL.g:3729:10: lv_memberCallArguments_19_0= ruleXExpression
             	                    {
             	                    if ( state.backtracking==0 ) {
 
             	                      										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
             	                      									
             	                    }
-            	                    pushFollow(FOLLOW_25);
+            	                    pushFollow(FOLLOW_28);
             	                    lv_memberCallArguments_19_0=ruleXExpression();
 
             	                    state._fsp--;
@@ -10057,39 +10467,39 @@
 
             	                    }
 
-            	                    // InternalSignalDSL.g:3582:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
-            	                    loop51:
+            	                    // InternalSignalDSL.g:3746:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    loop54:
             	                    do {
-            	                        int alt51=2;
-            	                        int LA51_0 = input.LA(1);
+            	                        int alt54=2;
+            	                        int LA54_0 = input.LA(1);
 
-            	                        if ( (LA51_0==37) ) {
-            	                            alt51=1;
+            	                        if ( (LA54_0==37) ) {
+            	                            alt54=1;
             	                        }
 
 
-            	                        switch (alt51) {
+            	                        switch (alt54) {
             	                    	case 1 :
-            	                    	    // InternalSignalDSL.g:3583:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalSignalDSL.g:3747:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
             	                    	    {
-            	                    	    otherlv_20=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+            	                    	    otherlv_20=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
             	                    	    if ( state.backtracking==0 ) {
 
             	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
             	                    	      								
             	                    	    }
-            	                    	    // InternalSignalDSL.g:3587:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
-            	                    	    // InternalSignalDSL.g:3588:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalSignalDSL.g:3751:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalSignalDSL.g:3752:10: (lv_memberCallArguments_21_0= ruleXExpression )
             	                    	    {
-            	                    	    // InternalSignalDSL.g:3588:10: (lv_memberCallArguments_21_0= ruleXExpression )
-            	                    	    // InternalSignalDSL.g:3589:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    // InternalSignalDSL.g:3752:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalSignalDSL.g:3753:11: lv_memberCallArguments_21_0= ruleXExpression
             	                    	    {
             	                    	    if ( state.backtracking==0 ) {
 
             	                    	      											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
             	                    	      										
             	                    	    }
-            	                    	    pushFollow(FOLLOW_25);
+            	                    	    pushFollow(FOLLOW_28);
             	                    	    lv_memberCallArguments_21_0=ruleXExpression();
 
             	                    	    state._fsp--;
@@ -10118,7 +10528,7 @@
             	                    	    break;
 
             	                    	default :
-            	                    	    break loop51;
+            	                    	    break loop54;
             	                        }
             	                    } while (true);
 
@@ -10131,7 +10541,7 @@
 
             	            }
 
-            	            otherlv_22=(Token)match(input,38,FOLLOW_57); if (state.failed) return current;
+            	            otherlv_22=(Token)match(input,38,FOLLOW_60); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
@@ -10143,22 +10553,22 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3614:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
-            	    int alt54=2;
-            	    alt54 = dfa54.predict(input);
-            	    switch (alt54) {
+            	    // InternalSignalDSL.g:3778:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    int alt57=2;
+            	    alt57 = dfa57.predict(input);
+            	    switch (alt57) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3615:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalSignalDSL.g:3779:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
             	            {
-            	            // InternalSignalDSL.g:3621:6: (lv_memberCallArguments_23_0= ruleXClosure )
-            	            // InternalSignalDSL.g:3622:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            // InternalSignalDSL.g:3785:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalSignalDSL.g:3786:7: lv_memberCallArguments_23_0= ruleXClosure
             	            {
             	            if ( state.backtracking==0 ) {
 
             	              							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
             	              						
             	            }
-            	            pushFollow(FOLLOW_50);
+            	            pushFollow(FOLLOW_53);
             	            lv_memberCallArguments_23_0=ruleXClosure();
 
             	            state._fsp--;
@@ -10193,7 +10603,7 @@
             	    break;
 
             	default :
-            	    break loop55;
+            	    break loop58;
                 }
             } while (true);
 
@@ -10222,7 +10632,7 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalSignalDSL.g:3645:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    // InternalSignalDSL.g:3809:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
     public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10230,8 +10640,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3645:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
-            // InternalSignalDSL.g:3646:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
+            // InternalSignalDSL.g:3809:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalSignalDSL.g:3810:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
@@ -10262,7 +10672,7 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalSignalDSL.g:3652:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) ;
+    // InternalSignalDSL.g:3816:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) ;
     public final EObject ruleXPrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -10301,15 +10711,15 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3658:2: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) )
-            // InternalSignalDSL.g:3659:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            // InternalSignalDSL.g:3822:2: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) )
+            // InternalSignalDSL.g:3823:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
             {
-            // InternalSignalDSL.g:3659:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
-            int alt56=15;
-            alt56 = dfa56.predict(input);
-            switch (alt56) {
+            // InternalSignalDSL.g:3823:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            int alt59=15;
+            alt59 = dfa59.predict(input);
+            switch (alt59) {
                 case 1 :
-                    // InternalSignalDSL.g:3660:3: this_XConstructorCall_0= ruleXConstructorCall
+                    // InternalSignalDSL.g:3824:3: this_XConstructorCall_0= ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10331,7 +10741,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3669:3: this_XBlockExpression_1= ruleXBlockExpression
+                    // InternalSignalDSL.g:3833:3: this_XBlockExpression_1= ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10353,7 +10763,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3678:3: this_XSwitchExpression_2= ruleXSwitchExpression
+                    // InternalSignalDSL.g:3842:3: this_XSwitchExpression_2= ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10375,10 +10785,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3687:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3851:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
                     {
-                    // InternalSignalDSL.g:3687:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
-                    // InternalSignalDSL.g:3688:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
+                    // InternalSignalDSL.g:3851:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3852:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10403,7 +10813,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3705:3: this_XFeatureCall_4= ruleXFeatureCall
+                    // InternalSignalDSL.g:3869:3: this_XFeatureCall_4= ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10425,7 +10835,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3714:3: this_XLiteral_5= ruleXLiteral
+                    // InternalSignalDSL.g:3878:3: this_XLiteral_5= ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10447,7 +10857,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3723:3: this_XIfExpression_6= ruleXIfExpression
+                    // InternalSignalDSL.g:3887:3: this_XIfExpression_6= ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10469,10 +10879,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:3732:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3896:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
                     {
-                    // InternalSignalDSL.g:3732:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
-                    // InternalSignalDSL.g:3733:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
+                    // InternalSignalDSL.g:3896:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3897:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10497,7 +10907,7 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:3756:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
+                    // InternalSignalDSL.g:3920:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10519,7 +10929,7 @@
                     }
                     break;
                 case 10 :
-                    // InternalSignalDSL.g:3765:3: this_XWhileExpression_9= ruleXWhileExpression
+                    // InternalSignalDSL.g:3929:3: this_XWhileExpression_9= ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10541,7 +10951,7 @@
                     }
                     break;
                 case 11 :
-                    // InternalSignalDSL.g:3774:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
+                    // InternalSignalDSL.g:3938:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10563,7 +10973,7 @@
                     }
                     break;
                 case 12 :
-                    // InternalSignalDSL.g:3783:3: this_XThrowExpression_11= ruleXThrowExpression
+                    // InternalSignalDSL.g:3947:3: this_XThrowExpression_11= ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10585,7 +10995,7 @@
                     }
                     break;
                 case 13 :
-                    // InternalSignalDSL.g:3792:3: this_XReturnExpression_12= ruleXReturnExpression
+                    // InternalSignalDSL.g:3956:3: this_XReturnExpression_12= ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10607,7 +11017,7 @@
                     }
                     break;
                 case 14 :
-                    // InternalSignalDSL.g:3801:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
+                    // InternalSignalDSL.g:3965:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10629,7 +11039,7 @@
                     }
                     break;
                 case 15 :
-                    // InternalSignalDSL.g:3810:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
+                    // InternalSignalDSL.g:3974:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10675,7 +11085,7 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalSignalDSL.g:3822:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    // InternalSignalDSL.g:3986:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
     public final EObject entryRuleXLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10683,8 +11093,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3822:49: (iv_ruleXLiteral= ruleXLiteral EOF )
-            // InternalSignalDSL.g:3823:2: iv_ruleXLiteral= ruleXLiteral EOF
+            // InternalSignalDSL.g:3986:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalSignalDSL.g:3987:2: iv_ruleXLiteral= ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXLiteralRule()); 
@@ -10715,7 +11125,7 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalSignalDSL.g:3829:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
+    // InternalSignalDSL.g:3993:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
     public final EObject ruleXLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10738,44 +11148,44 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3835:2: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
-            // InternalSignalDSL.g:3836:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            // InternalSignalDSL.g:3999:2: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
+            // InternalSignalDSL.g:4000:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
             {
-            // InternalSignalDSL.g:3836:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
-            int alt57=7;
-            int LA57_0 = input.LA(1);
+            // InternalSignalDSL.g:4000:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            int alt60=7;
+            int LA60_0 = input.LA(1);
 
-            if ( (LA57_0==40) ) {
-                alt57=1;
+            if ( (LA60_0==40) ) {
+                alt60=1;
             }
-            else if ( (LA57_0==41) && (synpred27_InternalSignalDSL())) {
-                alt57=2;
+            else if ( (LA60_0==41) && (synpred27_InternalSignalDSL())) {
+                alt60=2;
             }
-            else if ( ((LA57_0>=90 && LA57_0<=91)) ) {
-                alt57=3;
+            else if ( ((LA60_0>=90 && LA60_0<=91)) ) {
+                alt60=3;
             }
-            else if ( (LA57_0==RULE_INT||(LA57_0>=RULE_HEX && LA57_0<=RULE_DECIMAL)) ) {
-                alt57=4;
+            else if ( ((LA60_0>=RULE_INT && LA60_0<=RULE_DECIMAL)) ) {
+                alt60=4;
             }
-            else if ( (LA57_0==92) ) {
-                alt57=5;
+            else if ( (LA60_0==92) ) {
+                alt60=5;
             }
-            else if ( (LA57_0==RULE_STRING) ) {
-                alt57=6;
+            else if ( (LA60_0==RULE_STRING) ) {
+                alt60=6;
             }
-            else if ( (LA57_0==93) ) {
-                alt57=7;
+            else if ( (LA60_0==93) ) {
+                alt60=7;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 57, 0, input);
+                    new NoViableAltException("", 60, 0, input);
 
                 throw nvae;
             }
-            switch (alt57) {
+            switch (alt60) {
                 case 1 :
-                    // InternalSignalDSL.g:3837:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
+                    // InternalSignalDSL.g:4001:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10797,10 +11207,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3846:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalSignalDSL.g:4010:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
                     {
-                    // InternalSignalDSL.g:3846:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
-                    // InternalSignalDSL.g:3847:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
+                    // InternalSignalDSL.g:4010:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalSignalDSL.g:4011:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10825,7 +11235,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3863:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
+                    // InternalSignalDSL.g:4027:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10847,7 +11257,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3872:3: this_XNumberLiteral_3= ruleXNumberLiteral
+                    // InternalSignalDSL.g:4036:3: this_XNumberLiteral_3= ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10869,7 +11279,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3881:3: this_XNullLiteral_4= ruleXNullLiteral
+                    // InternalSignalDSL.g:4045:3: this_XNullLiteral_4= ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10891,7 +11301,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3890:3: this_XStringLiteral_5= ruleXStringLiteral
+                    // InternalSignalDSL.g:4054:3: this_XStringLiteral_5= ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10913,7 +11323,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3899:3: this_XTypeLiteral_6= ruleXTypeLiteral
+                    // InternalSignalDSL.g:4063:3: this_XTypeLiteral_6= ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10959,7 +11369,7 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalSignalDSL.g:3911:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    // InternalSignalDSL.g:4075:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
     public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10967,8 +11377,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3911:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
-            // InternalSignalDSL.g:3912:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
+            // InternalSignalDSL.g:4075:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalSignalDSL.g:4076:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCollectionLiteralRule()); 
@@ -10999,7 +11409,7 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalSignalDSL.g:3918:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
+    // InternalSignalDSL.g:4082:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
     public final EObject ruleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -11012,26 +11422,26 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3924:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
-            // InternalSignalDSL.g:3925:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            // InternalSignalDSL.g:4088:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalSignalDSL.g:4089:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
             {
-            // InternalSignalDSL.g:3925:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
-            int alt58=2;
-            int LA58_0 = input.LA(1);
+            // InternalSignalDSL.g:4089:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            int alt61=2;
+            int LA61_0 = input.LA(1);
 
-            if ( (LA58_0==40) ) {
-                int LA58_1 = input.LA(2);
+            if ( (LA61_0==40) ) {
+                int LA61_1 = input.LA(2);
 
-                if ( (LA58_1==41) ) {
-                    alt58=2;
+                if ( (LA61_1==41) ) {
+                    alt61=2;
                 }
-                else if ( (LA58_1==14) ) {
-                    alt58=1;
+                else if ( (LA61_1==14) ) {
+                    alt61=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 58, 1, input);
+                        new NoViableAltException("", 61, 1, input);
 
                     throw nvae;
                 }
@@ -11039,13 +11449,13 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 58, 0, input);
+                    new NoViableAltException("", 61, 0, input);
 
                 throw nvae;
             }
-            switch (alt58) {
+            switch (alt61) {
                 case 1 :
-                    // InternalSignalDSL.g:3926:3: this_XSetLiteral_0= ruleXSetLiteral
+                    // InternalSignalDSL.g:4090:3: this_XSetLiteral_0= ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11067,7 +11477,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3935:3: this_XListLiteral_1= ruleXListLiteral
+                    // InternalSignalDSL.g:4099:3: this_XListLiteral_1= ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11113,7 +11523,7 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalSignalDSL.g:3947:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    // InternalSignalDSL.g:4111:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
     public final EObject entryRuleXSetLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -11121,8 +11531,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3947:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
-            // InternalSignalDSL.g:3948:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
+            // InternalSignalDSL.g:4111:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalSignalDSL.g:4112:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSetLiteralRule()); 
@@ -11153,7 +11563,7 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalSignalDSL.g:3954:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
+    // InternalSignalDSL.g:4118:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
     public final EObject ruleXSetLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -11170,14 +11580,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3960:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
-            // InternalSignalDSL.g:3961:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalSignalDSL.g:4124:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalSignalDSL.g:4125:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
             {
-            // InternalSignalDSL.g:3961:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
-            // InternalSignalDSL.g:3962:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            // InternalSignalDSL.g:4125:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalSignalDSL.g:4126:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
             {
-            // InternalSignalDSL.g:3962:3: ()
-            // InternalSignalDSL.g:3963:4: 
+            // InternalSignalDSL.g:4126:3: ()
+            // InternalSignalDSL.g:4127:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11189,41 +11599,41 @@
 
             }
 
-            otherlv_1=(Token)match(input,40,FOLLOW_9); if (state.failed) return current;
+            otherlv_1=(Token)match(input,40,FOLLOW_11); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,14,FOLLOW_58); if (state.failed) return current;
+            otherlv_2=(Token)match(input,14,FOLLOW_61); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
               		
             }
-            // InternalSignalDSL.g:3977:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
-            int alt60=2;
-            int LA60_0 = input.LA(1);
+            // InternalSignalDSL.g:4141:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
 
-            if ( ((LA60_0>=RULE_STRING && LA60_0<=RULE_DECIMAL)||LA60_0==14||(LA60_0>=29 && LA60_0<=31)||LA60_0==36||(LA60_0>=40 && LA60_0<=41)||LA60_0==48||(LA60_0>=64 && LA60_0<=65)||LA60_0==69||LA60_0==77||LA60_0==79||(LA60_0>=82 && LA60_0<=84)||(LA60_0>=87 && LA60_0<=96)||LA60_0==98) ) {
-                alt60=1;
+            if ( ((LA63_0>=RULE_STRING && LA63_0<=RULE_DECIMAL)||LA63_0==14||(LA63_0>=29 && LA63_0<=31)||LA63_0==36||(LA63_0>=40 && LA63_0<=41)||LA63_0==48||(LA63_0>=64 && LA63_0<=65)||LA63_0==69||LA63_0==77||LA63_0==79||(LA63_0>=82 && LA63_0<=84)||(LA63_0>=87 && LA63_0<=96)||LA63_0==98) ) {
+                alt63=1;
             }
-            switch (alt60) {
+            switch (alt63) {
                 case 1 :
-                    // InternalSignalDSL.g:3978:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalSignalDSL.g:4142:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalSignalDSL.g:3978:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:3979:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4142:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4143:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:3979:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalSignalDSL.g:3980:6: lv_elements_3_0= ruleXExpression
+                    // InternalSignalDSL.g:4143:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4144:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
                       					
                     }
-                    pushFollow(FOLLOW_59);
+                    pushFollow(FOLLOW_62);
                     lv_elements_3_0=ruleXExpression();
 
                     state._fsp--;
@@ -11247,39 +11657,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:3997:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
-                    loop59:
+                    // InternalSignalDSL.g:4161:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop62:
                     do {
-                        int alt59=2;
-                        int LA59_0 = input.LA(1);
+                        int alt62=2;
+                        int LA62_0 = input.LA(1);
 
-                        if ( (LA59_0==37) ) {
-                            alt59=1;
+                        if ( (LA62_0==37) ) {
+                            alt62=1;
                         }
 
 
-                        switch (alt59) {
+                        switch (alt62) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:3998:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:4162:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:4002:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalSignalDSL.g:4003:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4166:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:4167:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalSignalDSL.g:4003:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalSignalDSL.g:4004:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalSignalDSL.g:4167:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4168:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_59);
+                    	    pushFollow(FOLLOW_62);
                     	    lv_elements_5_0=ruleXExpression();
 
                     	    state._fsp--;
@@ -11308,7 +11718,7 @@
                     	    break;
 
                     	default :
-                    	    break loop59;
+                    	    break loop62;
                         }
                     } while (true);
 
@@ -11349,7 +11759,7 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalSignalDSL.g:4031:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    // InternalSignalDSL.g:4195:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
     public final EObject entryRuleXListLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -11357,8 +11767,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4031:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
-            // InternalSignalDSL.g:4032:2: iv_ruleXListLiteral= ruleXListLiteral EOF
+            // InternalSignalDSL.g:4195:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalSignalDSL.g:4196:2: iv_ruleXListLiteral= ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXListLiteralRule()); 
@@ -11389,7 +11799,7 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalSignalDSL.g:4038:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
+    // InternalSignalDSL.g:4202:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
     public final EObject ruleXListLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -11406,14 +11816,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4044:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
-            // InternalSignalDSL.g:4045:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalSignalDSL.g:4208:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalSignalDSL.g:4209:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
             {
-            // InternalSignalDSL.g:4045:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
-            // InternalSignalDSL.g:4046:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            // InternalSignalDSL.g:4209:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalSignalDSL.g:4210:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
             {
-            // InternalSignalDSL.g:4046:3: ()
-            // InternalSignalDSL.g:4047:4: 
+            // InternalSignalDSL.g:4210:3: ()
+            // InternalSignalDSL.g:4211:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11425,41 +11835,41 @@
 
             }
 
-            otherlv_1=(Token)match(input,40,FOLLOW_29); if (state.failed) return current;
+            otherlv_1=(Token)match(input,40,FOLLOW_32); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,41,FOLLOW_30); if (state.failed) return current;
+            otherlv_2=(Token)match(input,41,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
               		
             }
-            // InternalSignalDSL.g:4061:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
-            int alt62=2;
-            int LA62_0 = input.LA(1);
+            // InternalSignalDSL.g:4225:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
 
-            if ( ((LA62_0>=RULE_STRING && LA62_0<=RULE_DECIMAL)||LA62_0==14||(LA62_0>=29 && LA62_0<=31)||LA62_0==36||(LA62_0>=40 && LA62_0<=41)||LA62_0==48||(LA62_0>=64 && LA62_0<=65)||LA62_0==69||LA62_0==77||LA62_0==79||(LA62_0>=82 && LA62_0<=84)||(LA62_0>=87 && LA62_0<=96)||LA62_0==98) ) {
-                alt62=1;
+            if ( ((LA65_0>=RULE_STRING && LA65_0<=RULE_DECIMAL)||LA65_0==14||(LA65_0>=29 && LA65_0<=31)||LA65_0==36||(LA65_0>=40 && LA65_0<=41)||LA65_0==48||(LA65_0>=64 && LA65_0<=65)||LA65_0==69||LA65_0==77||LA65_0==79||(LA65_0>=82 && LA65_0<=84)||(LA65_0>=87 && LA65_0<=96)||LA65_0==98) ) {
+                alt65=1;
             }
-            switch (alt62) {
+            switch (alt65) {
                 case 1 :
-                    // InternalSignalDSL.g:4062:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalSignalDSL.g:4226:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalSignalDSL.g:4062:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4063:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4226:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4227:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4063:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalSignalDSL.g:4064:6: lv_elements_3_0= ruleXExpression
+                    // InternalSignalDSL.g:4227:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4228:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
                       					
                     }
-                    pushFollow(FOLLOW_31);
+                    pushFollow(FOLLOW_34);
                     lv_elements_3_0=ruleXExpression();
 
                     state._fsp--;
@@ -11483,39 +11893,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:4081:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
-                    loop61:
+                    // InternalSignalDSL.g:4245:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop64:
                     do {
-                        int alt61=2;
-                        int LA61_0 = input.LA(1);
+                        int alt64=2;
+                        int LA64_0 = input.LA(1);
 
-                        if ( (LA61_0==37) ) {
-                            alt61=1;
+                        if ( (LA64_0==37) ) {
+                            alt64=1;
                         }
 
 
-                        switch (alt61) {
+                        switch (alt64) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:4082:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:4246:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:4086:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalSignalDSL.g:4087:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4250:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:4251:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalSignalDSL.g:4087:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalSignalDSL.g:4088:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalSignalDSL.g:4251:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4252:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_31);
+                    	    pushFollow(FOLLOW_34);
                     	    lv_elements_5_0=ruleXExpression();
 
                     	    state._fsp--;
@@ -11544,7 +11954,7 @@
                     	    break;
 
                     	default :
-                    	    break loop61;
+                    	    break loop64;
                         }
                     } while (true);
 
@@ -11585,7 +11995,7 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalSignalDSL.g:4115:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    // InternalSignalDSL.g:4279:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
     public final EObject entryRuleXClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11593,8 +12003,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4115:49: (iv_ruleXClosure= ruleXClosure EOF )
-            // InternalSignalDSL.g:4116:2: iv_ruleXClosure= ruleXClosure EOF
+            // InternalSignalDSL.g:4279:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalSignalDSL.g:4280:2: iv_ruleXClosure= ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXClosureRule()); 
@@ -11625,7 +12035,7 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalSignalDSL.g:4122:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
+    // InternalSignalDSL.g:4286:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
     public final EObject ruleXClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11644,20 +12054,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4128:2: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
-            // InternalSignalDSL.g:4129:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            // InternalSignalDSL.g:4292:2: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
+            // InternalSignalDSL.g:4293:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
             {
-            // InternalSignalDSL.g:4129:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
-            // InternalSignalDSL.g:4130:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
+            // InternalSignalDSL.g:4293:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            // InternalSignalDSL.g:4294:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
             {
-            // InternalSignalDSL.g:4130:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
-            // InternalSignalDSL.g:4131:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            // InternalSignalDSL.g:4294:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalSignalDSL.g:4295:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
             {
-            // InternalSignalDSL.g:4137:4: ( () otherlv_1= '[' )
-            // InternalSignalDSL.g:4138:5: () otherlv_1= '['
+            // InternalSignalDSL.g:4301:4: ( () otherlv_1= '[' )
+            // InternalSignalDSL.g:4302:5: () otherlv_1= '['
             {
-            // InternalSignalDSL.g:4138:5: ()
-            // InternalSignalDSL.g:4139:6: 
+            // InternalSignalDSL.g:4302:5: ()
+            // InternalSignalDSL.g:4303:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11669,7 +12079,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,41,FOLLOW_60); if (state.failed) return current;
+            otherlv_1=(Token)match(input,41,FOLLOW_63); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
@@ -11681,39 +12091,39 @@
 
             }
 
-            // InternalSignalDSL.g:4151:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
-            int alt65=2;
-            alt65 = dfa65.predict(input);
-            switch (alt65) {
+            // InternalSignalDSL.g:4315:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            int alt68=2;
+            alt68 = dfa68.predict(input);
+            switch (alt68) {
                 case 1 :
-                    // InternalSignalDSL.g:4152:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalSignalDSL.g:4316:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                     {
-                    // InternalSignalDSL.g:4175:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
-                    // InternalSignalDSL.g:4176:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalSignalDSL.g:4339:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalSignalDSL.g:4340:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
                     {
-                    // InternalSignalDSL.g:4176:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
-                    int alt64=2;
-                    int LA64_0 = input.LA(1);
+                    // InternalSignalDSL.g:4340:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    int alt67=2;
+                    int LA67_0 = input.LA(1);
 
-                    if ( (LA64_0==RULE_ID||LA64_0==36||LA64_0==61) ) {
-                        alt64=1;
+                    if ( (LA67_0==RULE_ID||LA67_0==36||LA67_0==61) ) {
+                        alt67=1;
                     }
-                    switch (alt64) {
+                    switch (alt67) {
                         case 1 :
-                            // InternalSignalDSL.g:4177:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            // InternalSignalDSL.g:4341:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                             {
-                            // InternalSignalDSL.g:4177:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
-                            // InternalSignalDSL.g:4178:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4341:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalSignalDSL.g:4342:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                             {
-                            // InternalSignalDSL.g:4178:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
-                            // InternalSignalDSL.g:4179:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            // InternalSignalDSL.g:4342:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4343:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
                               								newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0());
                               							
                             }
-                            pushFollow(FOLLOW_61);
+                            pushFollow(FOLLOW_64);
                             lv_declaredFormalParameters_2_0=ruleJvmFormalParameter();
 
                             state._fsp--;
@@ -11737,39 +12147,39 @@
 
                             }
 
-                            // InternalSignalDSL.g:4196:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
-                            loop63:
+                            // InternalSignalDSL.g:4360:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            loop66:
                             do {
-                                int alt63=2;
-                                int LA63_0 = input.LA(1);
+                                int alt66=2;
+                                int LA66_0 = input.LA(1);
 
-                                if ( (LA63_0==37) ) {
-                                    alt63=1;
+                                if ( (LA66_0==37) ) {
+                                    alt66=1;
                                 }
 
 
-                                switch (alt63) {
+                                switch (alt66) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:4197:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalSignalDSL.g:4361:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                             	    {
-                            	    otherlv_3=(Token)match(input,37,FOLLOW_41); if (state.failed) return current;
+                            	    otherlv_3=(Token)match(input,37,FOLLOW_44); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:4201:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
-                            	    // InternalSignalDSL.g:4202:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalSignalDSL.g:4365:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalSignalDSL.g:4366:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                             	    {
-                            	    // InternalSignalDSL.g:4202:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
-                            	    // InternalSignalDSL.g:4203:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    // InternalSignalDSL.g:4366:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalSignalDSL.g:4367:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      									newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0());
                             	      								
                             	    }
-                            	    pushFollow(FOLLOW_61);
+                            	    pushFollow(FOLLOW_64);
                             	    lv_declaredFormalParameters_4_0=ruleJvmFormalParameter();
 
                             	    state._fsp--;
@@ -11798,7 +12208,7 @@
                             	    break;
 
                             	default :
-                            	    break loop63;
+                            	    break loop66;
                                 }
                             } while (true);
 
@@ -11808,13 +12218,13 @@
 
                     }
 
-                    // InternalSignalDSL.g:4222:5: ( (lv_explicitSyntax_5_0= '|' ) )
-                    // InternalSignalDSL.g:4223:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalSignalDSL.g:4386:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalSignalDSL.g:4387:6: (lv_explicitSyntax_5_0= '|' )
                     {
-                    // InternalSignalDSL.g:4223:6: (lv_explicitSyntax_5_0= '|' )
-                    // InternalSignalDSL.g:4224:7: lv_explicitSyntax_5_0= '|'
+                    // InternalSignalDSL.g:4387:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalSignalDSL.g:4388:7: lv_explicitSyntax_5_0= '|'
                     {
-                    lv_explicitSyntax_5_0=(Token)match(input,76,FOLLOW_62); if (state.failed) return current;
+                    lv_explicitSyntax_5_0=(Token)match(input,76,FOLLOW_65); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
@@ -11843,18 +12253,18 @@
 
             }
 
-            // InternalSignalDSL.g:4238:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
-            // InternalSignalDSL.g:4239:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalSignalDSL.g:4402:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalSignalDSL.g:4403:4: (lv_expression_6_0= ruleXExpressionInClosure )
             {
-            // InternalSignalDSL.g:4239:4: (lv_expression_6_0= ruleXExpressionInClosure )
-            // InternalSignalDSL.g:4240:5: lv_expression_6_0= ruleXExpressionInClosure
+            // InternalSignalDSL.g:4403:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalSignalDSL.g:4404:5: lv_expression_6_0= ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_63);
+            pushFollow(FOLLOW_66);
             lv_expression_6_0=ruleXExpressionInClosure();
 
             state._fsp--;
@@ -11909,7 +12319,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalSignalDSL.g:4265:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    // InternalSignalDSL.g:4429:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
     public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11917,8 +12327,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4265:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
-            // InternalSignalDSL.g:4266:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
+            // InternalSignalDSL.g:4429:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalSignalDSL.g:4430:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionInClosureRule()); 
@@ -11949,7 +12359,7 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalSignalDSL.g:4272:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
+    // InternalSignalDSL.g:4436:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
     public final EObject ruleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11961,14 +12371,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4278:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
-            // InternalSignalDSL.g:4279:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalSignalDSL.g:4442:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalSignalDSL.g:4443:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
             {
-            // InternalSignalDSL.g:4279:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
-            // InternalSignalDSL.g:4280:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            // InternalSignalDSL.g:4443:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalSignalDSL.g:4444:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
             {
-            // InternalSignalDSL.g:4280:3: ()
-            // InternalSignalDSL.g:4281:4: 
+            // InternalSignalDSL.g:4444:3: ()
+            // InternalSignalDSL.g:4445:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11980,33 +12390,33 @@
 
             }
 
-            // InternalSignalDSL.g:4287:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
-            loop67:
+            // InternalSignalDSL.g:4451:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            loop70:
             do {
-                int alt67=2;
-                int LA67_0 = input.LA(1);
+                int alt70=2;
+                int LA70_0 = input.LA(1);
 
-                if ( ((LA67_0>=RULE_STRING && LA67_0<=RULE_DECIMAL)||LA67_0==14||(LA67_0>=29 && LA67_0<=31)||LA67_0==36||(LA67_0>=40 && LA67_0<=41)||LA67_0==48||(LA67_0>=64 && LA67_0<=65)||LA67_0==69||LA67_0==77||LA67_0==79||(LA67_0>=82 && LA67_0<=96)||LA67_0==98) ) {
-                    alt67=1;
+                if ( ((LA70_0>=RULE_STRING && LA70_0<=RULE_DECIMAL)||LA70_0==14||(LA70_0>=29 && LA70_0<=31)||LA70_0==36||(LA70_0>=40 && LA70_0<=41)||LA70_0==48||(LA70_0>=64 && LA70_0<=65)||LA70_0==69||LA70_0==77||LA70_0==79||(LA70_0>=82 && LA70_0<=96)||LA70_0==98) ) {
+                    alt70=1;
                 }
 
 
-                switch (alt67) {
+                switch (alt70) {
             	case 1 :
-            	    // InternalSignalDSL.g:4288:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    // InternalSignalDSL.g:4452:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
             	    {
-            	    // InternalSignalDSL.g:4288:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalSignalDSL.g:4289:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:4452:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalSignalDSL.g:4453:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalSignalDSL.g:4289:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalSignalDSL.g:4290:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    // InternalSignalDSL.g:4453:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:4454:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_64);
+            	    pushFollow(FOLLOW_67);
             	    lv_expressions_1_0=ruleXExpressionOrVarDeclaration();
 
             	    state._fsp--;
@@ -12030,18 +12440,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:4307:4: (otherlv_2= ';' )?
-            	    int alt66=2;
-            	    int LA66_0 = input.LA(1);
+            	    // InternalSignalDSL.g:4471:4: (otherlv_2= ';' )?
+            	    int alt69=2;
+            	    int LA69_0 = input.LA(1);
 
-            	    if ( (LA66_0==34) ) {
-            	        alt66=1;
+            	    if ( (LA69_0==34) ) {
+            	        alt69=1;
             	    }
-            	    switch (alt66) {
+            	    switch (alt69) {
             	        case 1 :
-            	            // InternalSignalDSL.g:4308:5: otherlv_2= ';'
+            	            // InternalSignalDSL.g:4472:5: otherlv_2= ';'
             	            {
-            	            otherlv_2=(Token)match(input,34,FOLLOW_65); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,34,FOLLOW_68); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
@@ -12058,7 +12468,7 @@
             	    break;
 
             	default :
-            	    break loop67;
+            	    break loop70;
                 }
             } while (true);
 
@@ -12087,7 +12497,7 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalSignalDSL.g:4318:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    // InternalSignalDSL.g:4482:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
     public final EObject entryRuleXShortClosure() throws RecognitionException {
         EObject current = null;
 
@@ -12095,8 +12505,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4318:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
-            // InternalSignalDSL.g:4319:2: iv_ruleXShortClosure= ruleXShortClosure EOF
+            // InternalSignalDSL.g:4482:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalSignalDSL.g:4483:2: iv_ruleXShortClosure= ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXShortClosureRule()); 
@@ -12127,7 +12537,7 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalSignalDSL.g:4325:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:4489:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXShortClosure() throws RecognitionException {
         EObject current = null;
 
@@ -12144,20 +12554,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4331:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:4332:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:4495:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:4496:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:4332:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:4333:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4496:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:4497:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:4333:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
-            // InternalSignalDSL.g:4334:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalSignalDSL.g:4497:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalSignalDSL.g:4498:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
             {
-            // InternalSignalDSL.g:4359:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
-            // InternalSignalDSL.g:4360:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalSignalDSL.g:4523:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalSignalDSL.g:4524:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
             {
-            // InternalSignalDSL.g:4360:5: ()
-            // InternalSignalDSL.g:4361:6: 
+            // InternalSignalDSL.g:4524:5: ()
+            // InternalSignalDSL.g:4525:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -12169,29 +12579,29 @@
 
             }
 
-            // InternalSignalDSL.g:4367:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
-            int alt69=2;
-            int LA69_0 = input.LA(1);
+            // InternalSignalDSL.g:4531:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
 
-            if ( (LA69_0==RULE_ID||LA69_0==36||LA69_0==61) ) {
-                alt69=1;
+            if ( (LA72_0==RULE_ID||LA72_0==36||LA72_0==61) ) {
+                alt72=1;
             }
-            switch (alt69) {
+            switch (alt72) {
                 case 1 :
-                    // InternalSignalDSL.g:4368:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    // InternalSignalDSL.g:4532:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                     {
-                    // InternalSignalDSL.g:4368:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
-                    // InternalSignalDSL.g:4369:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4532:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalSignalDSL.g:4533:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                     {
-                    // InternalSignalDSL.g:4369:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
-                    // InternalSignalDSL.g:4370:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    // InternalSignalDSL.g:4533:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4534:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
                       								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
                       							
                     }
-                    pushFollow(FOLLOW_61);
+                    pushFollow(FOLLOW_64);
                     lv_declaredFormalParameters_1_0=ruleJvmFormalParameter();
 
                     state._fsp--;
@@ -12215,39 +12625,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:4387:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
-                    loop68:
+                    // InternalSignalDSL.g:4551:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    loop71:
                     do {
-                        int alt68=2;
-                        int LA68_0 = input.LA(1);
+                        int alt71=2;
+                        int LA71_0 = input.LA(1);
 
-                        if ( (LA68_0==37) ) {
-                            alt68=1;
+                        if ( (LA71_0==37) ) {
+                            alt71=1;
                         }
 
 
-                        switch (alt68) {
+                        switch (alt71) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:4388:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalSignalDSL.g:4552:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                     	    {
-                    	    otherlv_2=(Token)match(input,37,FOLLOW_41); if (state.failed) return current;
+                    	    otherlv_2=(Token)match(input,37,FOLLOW_44); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                     	      						
                     	    }
-                    	    // InternalSignalDSL.g:4392:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
-                    	    // InternalSignalDSL.g:4393:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalSignalDSL.g:4556:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalSignalDSL.g:4557:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                     	    {
-                    	    // InternalSignalDSL.g:4393:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
-                    	    // InternalSignalDSL.g:4394:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    // InternalSignalDSL.g:4557:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalSignalDSL.g:4558:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
                     	      								
                     	    }
-                    	    pushFollow(FOLLOW_61);
+                    	    pushFollow(FOLLOW_64);
                     	    lv_declaredFormalParameters_3_0=ruleJvmFormalParameter();
 
                     	    state._fsp--;
@@ -12276,7 +12686,7 @@
                     	    break;
 
                     	default :
-                    	    break loop68;
+                    	    break loop71;
                         }
                     } while (true);
 
@@ -12286,13 +12696,13 @@
 
             }
 
-            // InternalSignalDSL.g:4413:5: ( (lv_explicitSyntax_4_0= '|' ) )
-            // InternalSignalDSL.g:4414:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalSignalDSL.g:4577:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalSignalDSL.g:4578:6: (lv_explicitSyntax_4_0= '|' )
             {
-            // InternalSignalDSL.g:4414:6: (lv_explicitSyntax_4_0= '|' )
-            // InternalSignalDSL.g:4415:7: lv_explicitSyntax_4_0= '|'
+            // InternalSignalDSL.g:4578:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalSignalDSL.g:4579:7: lv_explicitSyntax_4_0= '|'
             {
-            lv_explicitSyntax_4_0=(Token)match(input,76,FOLLOW_28); if (state.failed) return current;
+            lv_explicitSyntax_4_0=(Token)match(input,76,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
@@ -12318,11 +12728,11 @@
 
             }
 
-            // InternalSignalDSL.g:4429:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4430:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4593:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4594:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4430:4: (lv_expression_5_0= ruleXExpression )
-            // InternalSignalDSL.g:4431:5: lv_expression_5_0= ruleXExpression
+            // InternalSignalDSL.g:4594:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4595:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -12378,7 +12788,7 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalSignalDSL.g:4452:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    // InternalSignalDSL.g:4616:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
     public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12386,8 +12796,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4452:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
-            // InternalSignalDSL.g:4453:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
+            // InternalSignalDSL.g:4616:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalSignalDSL.g:4617:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -12418,7 +12828,7 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalSignalDSL.g:4459:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
+    // InternalSignalDSL.g:4623:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
     public final EObject ruleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12431,13 +12841,13 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4465:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
-            // InternalSignalDSL.g:4466:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalSignalDSL.g:4629:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalSignalDSL.g:4630:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
             {
-            // InternalSignalDSL.g:4466:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
-            // InternalSignalDSL.g:4467:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            // InternalSignalDSL.g:4630:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalSignalDSL.g:4631:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
             {
-            otherlv_0=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
+            otherlv_0=(Token)match(input,36,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
@@ -12448,7 +12858,7 @@
               			newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1());
               		
             }
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             this_XExpression_1=ruleXExpression();
 
             state._fsp--;
@@ -12490,7 +12900,7 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalSignalDSL.g:4487:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    // InternalSignalDSL.g:4651:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
     public final EObject entryRuleXIfExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12498,8 +12908,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4487:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
-            // InternalSignalDSL.g:4488:2: iv_ruleXIfExpression= ruleXIfExpression EOF
+            // InternalSignalDSL.g:4651:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalSignalDSL.g:4652:2: iv_ruleXIfExpression= ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXIfExpressionRule()); 
@@ -12530,7 +12940,7 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalSignalDSL.g:4494:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
+    // InternalSignalDSL.g:4658:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
     public final EObject ruleXIfExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12549,14 +12959,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4500:2: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
-            // InternalSignalDSL.g:4501:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:4664:2: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
+            // InternalSignalDSL.g:4665:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
             {
-            // InternalSignalDSL.g:4501:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
-            // InternalSignalDSL.g:4502:3: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            // InternalSignalDSL.g:4665:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:4666:3: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
             {
-            // InternalSignalDSL.g:4502:3: ()
-            // InternalSignalDSL.g:4503:4: 
+            // InternalSignalDSL.g:4666:3: ()
+            // InternalSignalDSL.g:4667:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -12568,30 +12978,30 @@
 
             }
 
-            otherlv_1=(Token)match(input,77,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,77,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:4517:3: ( (lv_if_3_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4518:4: (lv_if_3_0= ruleXExpression )
+            // InternalSignalDSL.g:4681:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4682:4: (lv_if_3_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4518:4: (lv_if_3_0= ruleXExpression )
-            // InternalSignalDSL.g:4519:5: lv_if_3_0= ruleXExpression
+            // InternalSignalDSL.g:4682:4: (lv_if_3_0= ruleXExpression )
+            // InternalSignalDSL.g:4683:5: lv_if_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0());
               				
             }
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             lv_if_3_0=ruleXExpression();
 
             state._fsp--;
@@ -12615,24 +13025,24 @@
 
             }
 
-            otherlv_4=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,38,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalSignalDSL.g:4540:3: ( (lv_then_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4541:4: (lv_then_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4704:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4705:4: (lv_then_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4541:4: (lv_then_5_0= ruleXExpression )
-            // InternalSignalDSL.g:4542:5: lv_then_5_0= ruleXExpression
+            // InternalSignalDSL.g:4705:4: (lv_then_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4706:5: lv_then_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0());
               				
             }
-            pushFollow(FOLLOW_67);
+            pushFollow(FOLLOW_70);
             lv_then_5_0=ruleXExpression();
 
             state._fsp--;
@@ -12656,25 +13066,25 @@
 
             }
 
-            // InternalSignalDSL.g:4559:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
-            int alt70=2;
-            int LA70_0 = input.LA(1);
+            // InternalSignalDSL.g:4723:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            int alt73=2;
+            int LA73_0 = input.LA(1);
 
-            if ( (LA70_0==78) ) {
-                int LA70_1 = input.LA(2);
+            if ( (LA73_0==78) ) {
+                int LA73_1 = input.LA(2);
 
                 if ( (synpred31_InternalSignalDSL()) ) {
-                    alt70=1;
+                    alt73=1;
                 }
             }
-            switch (alt70) {
+            switch (alt73) {
                 case 1 :
-                    // InternalSignalDSL.g:4560:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4724:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
                     {
-                    // InternalSignalDSL.g:4560:4: ( ( 'else' )=>otherlv_6= 'else' )
-                    // InternalSignalDSL.g:4561:5: ( 'else' )=>otherlv_6= 'else'
+                    // InternalSignalDSL.g:4724:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalSignalDSL.g:4725:5: ( 'else' )=>otherlv_6= 'else'
                     {
-                    otherlv_6=(Token)match(input,78,FOLLOW_28); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,78,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
@@ -12683,11 +13093,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:4567:4: ( (lv_else_7_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4568:5: (lv_else_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:4731:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4732:5: (lv_else_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4568:5: (lv_else_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:4569:6: lv_else_7_0= ruleXExpression
+                    // InternalSignalDSL.g:4732:5: (lv_else_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:4733:6: lv_else_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12749,7 +13159,7 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalSignalDSL.g:4591:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    // InternalSignalDSL.g:4755:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
     public final EObject entryRuleXSwitchExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12757,8 +13167,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4591:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
-            // InternalSignalDSL.g:4592:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
+            // InternalSignalDSL.g:4755:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalSignalDSL.g:4756:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
@@ -12789,7 +13199,7 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalSignalDSL.g:4598:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
+    // InternalSignalDSL.g:4762:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
     public final EObject ruleXSwitchExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12819,14 +13229,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4604:2: ( ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
-            // InternalSignalDSL.g:4605:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            // InternalSignalDSL.g:4768:2: ( ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
+            // InternalSignalDSL.g:4769:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
             {
-            // InternalSignalDSL.g:4605:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
-            // InternalSignalDSL.g:4606:3: () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
+            // InternalSignalDSL.g:4769:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            // InternalSignalDSL.g:4770:3: () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
             {
-            // InternalSignalDSL.g:4606:3: ()
-            // InternalSignalDSL.g:4607:4: 
+            // InternalSignalDSL.g:4770:3: ()
+            // InternalSignalDSL.g:4771:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -12838,46 +13248,46 @@
 
             }
 
-            otherlv_1=(Token)match(input,79,FOLLOW_68); if (state.failed) return current;
+            otherlv_1=(Token)match(input,79,FOLLOW_71); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
               		
             }
-            // InternalSignalDSL.g:4617:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
-            int alt72=2;
-            alt72 = dfa72.predict(input);
-            switch (alt72) {
+            // InternalSignalDSL.g:4781:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
+            int alt75=2;
+            alt75 = dfa75.predict(input);
+            switch (alt75) {
                 case 1 :
-                    // InternalSignalDSL.g:4618:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalSignalDSL.g:4782:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
                     {
-                    // InternalSignalDSL.g:4618:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
-                    // InternalSignalDSL.g:4619:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    // InternalSignalDSL.g:4782:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalSignalDSL.g:4783:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
                     {
-                    // InternalSignalDSL.g:4619:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-                    // InternalSignalDSL.g:4620:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalSignalDSL.g:4783:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalSignalDSL.g:4784:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
                     {
-                    // InternalSignalDSL.g:4630:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-                    // InternalSignalDSL.g:4631:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    // InternalSignalDSL.g:4794:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalSignalDSL.g:4795:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
                     {
-                    otherlv_2=(Token)match(input,36,FOLLOW_41); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,36,FOLLOW_44); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
                       						
                     }
-                    // InternalSignalDSL.g:4635:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-                    // InternalSignalDSL.g:4636:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4799:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalSignalDSL.g:4800:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
                     {
-                    // InternalSignalDSL.g:4636:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-                    // InternalSignalDSL.g:4637:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    // InternalSignalDSL.g:4800:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4801:9: lv_declaredParam_3_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
                       									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
                       								
                     }
-                    pushFollow(FOLLOW_15);
+                    pushFollow(FOLLOW_18);
                     lv_declaredParam_3_0=ruleJvmFormalParameter();
 
                     state._fsp--;
@@ -12901,7 +13311,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,24,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
@@ -12913,18 +13323,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:4660:5: ( (lv_switch_5_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4661:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:4824:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4825:6: (lv_switch_5_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4661:6: (lv_switch_5_0= ruleXExpression )
-                    // InternalSignalDSL.g:4662:7: lv_switch_5_0= ruleXExpression
+                    // InternalSignalDSL.g:4825:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:4826:7: lv_switch_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0());
                       						
                     }
-                    pushFollow(FOLLOW_26);
+                    pushFollow(FOLLOW_29);
                     lv_switch_5_0=ruleXExpression();
 
                     state._fsp--;
@@ -12948,7 +13358,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,38,FOLLOW_9); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,38,FOLLOW_11); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
@@ -12961,33 +13371,33 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:4685:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:4849:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
                     {
-                    // InternalSignalDSL.g:4685:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
-                    // InternalSignalDSL.g:4686:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4849:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:4850:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
                     {
-                    // InternalSignalDSL.g:4686:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
-                    int alt71=2;
-                    alt71 = dfa71.predict(input);
-                    switch (alt71) {
+                    // InternalSignalDSL.g:4850:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    int alt74=2;
+                    alt74 = dfa74.predict(input);
+                    switch (alt74) {
                         case 1 :
-                            // InternalSignalDSL.g:4687:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalSignalDSL.g:4851:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
                             {
-                            // InternalSignalDSL.g:4696:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
-                            // InternalSignalDSL.g:4697:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            // InternalSignalDSL.g:4860:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalSignalDSL.g:4861:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
                             {
-                            // InternalSignalDSL.g:4697:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
-                            // InternalSignalDSL.g:4698:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4861:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalSignalDSL.g:4862:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
                             {
-                            // InternalSignalDSL.g:4698:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
-                            // InternalSignalDSL.g:4699:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            // InternalSignalDSL.g:4862:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4863:9: lv_declaredParam_7_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
                               									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
                               								
                             }
-                            pushFollow(FOLLOW_15);
+                            pushFollow(FOLLOW_18);
                             lv_declaredParam_7_0=ruleJvmFormalParameter();
 
                             state._fsp--;
@@ -13011,7 +13421,7 @@
 
                             }
 
-                            otherlv_8=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
+                            otherlv_8=(Token)match(input,24,FOLLOW_31); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
@@ -13026,18 +13436,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:4722:5: ( (lv_switch_9_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4723:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:4886:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4887:6: (lv_switch_9_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4723:6: (lv_switch_9_0= ruleXExpression )
-                    // InternalSignalDSL.g:4724:7: lv_switch_9_0= ruleXExpression
+                    // InternalSignalDSL.g:4887:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:4888:7: lv_switch_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
                       						
                     }
-                    pushFollow(FOLLOW_9);
+                    pushFollow(FOLLOW_11);
                     lv_switch_9_0=ruleXExpression();
 
                     state._fsp--;
@@ -13070,36 +13480,36 @@
 
             }
 
-            otherlv_10=(Token)match(input,14,FOLLOW_69); if (state.failed) return current;
+            otherlv_10=(Token)match(input,14,FOLLOW_72); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
               		
             }
-            // InternalSignalDSL.g:4747:3: ( (lv_cases_11_0= ruleXCasePart ) )*
-            loop73:
+            // InternalSignalDSL.g:4911:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            loop76:
             do {
-                int alt73=2;
-                int LA73_0 = input.LA(1);
+                int alt76=2;
+                int LA76_0 = input.LA(1);
 
-                if ( (LA73_0==RULE_ID||LA73_0==24||(LA73_0>=36 && LA73_0<=37)||LA73_0==61||LA73_0==81) ) {
-                    alt73=1;
+                if ( (LA76_0==RULE_ID||LA76_0==24||(LA76_0>=36 && LA76_0<=37)||LA76_0==61||LA76_0==81) ) {
+                    alt76=1;
                 }
 
 
-                switch (alt73) {
+                switch (alt76) {
             	case 1 :
-            	    // InternalSignalDSL.g:4748:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalSignalDSL.g:4912:4: (lv_cases_11_0= ruleXCasePart )
             	    {
-            	    // InternalSignalDSL.g:4748:4: (lv_cases_11_0= ruleXCasePart )
-            	    // InternalSignalDSL.g:4749:5: lv_cases_11_0= ruleXCasePart
+            	    // InternalSignalDSL.g:4912:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalSignalDSL.g:4913:5: lv_cases_11_0= ruleXCasePart
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
             	      				
             	    }
-            	    pushFollow(FOLLOW_69);
+            	    pushFollow(FOLLOW_72);
             	    lv_cases_11_0=ruleXCasePart();
 
             	    state._fsp--;
@@ -13125,45 +13535,45 @@
             	    break;
 
             	default :
-            	    break loop73;
+            	    break loop76;
                 }
             } while (true);
 
-            // InternalSignalDSL.g:4766:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
-            int alt74=2;
-            int LA74_0 = input.LA(1);
+            // InternalSignalDSL.g:4930:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            int alt77=2;
+            int LA77_0 = input.LA(1);
 
-            if ( (LA74_0==80) ) {
-                alt74=1;
+            if ( (LA77_0==80) ) {
+                alt77=1;
             }
-            switch (alt74) {
+            switch (alt77) {
                 case 1 :
-                    // InternalSignalDSL.g:4767:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4931:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
                     {
-                    otherlv_12=(Token)match(input,80,FOLLOW_15); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,80,FOLLOW_18); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
                       			
                     }
-                    otherlv_13=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,24,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
                       			
                     }
-                    // InternalSignalDSL.g:4775:4: ( (lv_default_14_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4776:5: (lv_default_14_0= ruleXExpression )
+                    // InternalSignalDSL.g:4939:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4940:5: (lv_default_14_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4776:5: (lv_default_14_0= ruleXExpression )
-                    // InternalSignalDSL.g:4777:6: lv_default_14_0= ruleXExpression
+                    // InternalSignalDSL.g:4940:5: (lv_default_14_0= ruleXExpression )
+                    // InternalSignalDSL.g:4941:6: lv_default_14_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
                       					
                     }
-                    pushFollow(FOLLOW_70);
+                    pushFollow(FOLLOW_13);
                     lv_default_14_0=ruleXExpression();
 
                     state._fsp--;
@@ -13224,7 +13634,7 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalSignalDSL.g:4803:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    // InternalSignalDSL.g:4967:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
     public final EObject entryRuleXCasePart() throws RecognitionException {
         EObject current = null;
 
@@ -13232,8 +13642,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4803:50: (iv_ruleXCasePart= ruleXCasePart EOF )
-            // InternalSignalDSL.g:4804:2: iv_ruleXCasePart= ruleXCasePart EOF
+            // InternalSignalDSL.g:4967:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalSignalDSL.g:4968:2: iv_ruleXCasePart= ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCasePartRule()); 
@@ -13264,7 +13674,7 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalSignalDSL.g:4810:1: ruleXCasePart returns [EObject current=null] : ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) ;
+    // InternalSignalDSL.g:4974:1: ruleXCasePart returns [EObject current=null] : ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) ;
     public final EObject ruleXCasePart() throws RecognitionException {
         EObject current = null;
 
@@ -13282,14 +13692,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4816:2: ( ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) )
-            // InternalSignalDSL.g:4817:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            // InternalSignalDSL.g:4980:2: ( ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) )
+            // InternalSignalDSL.g:4981:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
             {
-            // InternalSignalDSL.g:4817:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
-            // InternalSignalDSL.g:4818:3: () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            // InternalSignalDSL.g:4981:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            // InternalSignalDSL.g:4982:3: () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
             {
-            // InternalSignalDSL.g:4818:3: ()
-            // InternalSignalDSL.g:4819:4: 
+            // InternalSignalDSL.g:4982:3: ()
+            // InternalSignalDSL.g:4983:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -13301,26 +13711,26 @@
 
             }
 
-            // InternalSignalDSL.g:4825:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
-            int alt75=2;
-            int LA75_0 = input.LA(1);
+            // InternalSignalDSL.g:4989:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
 
-            if ( (LA75_0==RULE_ID||LA75_0==36||LA75_0==61) ) {
-                alt75=1;
+            if ( (LA78_0==RULE_ID||LA78_0==36||LA78_0==61) ) {
+                alt78=1;
             }
-            switch (alt75) {
+            switch (alt78) {
                 case 1 :
-                    // InternalSignalDSL.g:4826:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:4990:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:4826:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
-                    // InternalSignalDSL.g:4827:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:4990:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:4991:5: lv_typeGuard_1_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
                       					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
                       				
                     }
-                    pushFollow(FOLLOW_71);
+                    pushFollow(FOLLOW_73);
                     lv_typeGuard_1_0=ruleJvmTypeReference();
 
                     state._fsp--;
@@ -13347,35 +13757,35 @@
 
             }
 
-            // InternalSignalDSL.g:4844:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
-            int alt76=2;
-            int LA76_0 = input.LA(1);
+            // InternalSignalDSL.g:5008:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
 
-            if ( (LA76_0==81) ) {
-                alt76=1;
+            if ( (LA79_0==81) ) {
+                alt79=1;
             }
-            switch (alt76) {
+            switch (alt79) {
                 case 1 :
-                    // InternalSignalDSL.g:4845:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5009:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
                     {
-                    otherlv_2=(Token)match(input,81,FOLLOW_28); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,81,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
                       			
                     }
-                    // InternalSignalDSL.g:4849:4: ( (lv_case_3_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4850:5: (lv_case_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:5013:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5014:5: (lv_case_3_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4850:5: (lv_case_3_0= ruleXExpression )
-                    // InternalSignalDSL.g:4851:6: lv_case_3_0= ruleXExpression
+                    // InternalSignalDSL.g:5014:5: (lv_case_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:5015:6: lv_case_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_72);
+                    pushFollow(FOLLOW_74);
                     lv_case_3_0=ruleXExpression();
 
                     state._fsp--;
@@ -13405,41 +13815,41 @@
 
             }
 
-            // InternalSignalDSL.g:4869:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
-            int alt77=2;
-            int LA77_0 = input.LA(1);
+            // InternalSignalDSL.g:5033:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            int alt80=2;
+            int LA80_0 = input.LA(1);
 
-            if ( (LA77_0==24) ) {
-                alt77=1;
+            if ( (LA80_0==24) ) {
+                alt80=1;
             }
-            else if ( (LA77_0==37) ) {
-                alt77=2;
+            else if ( (LA80_0==37) ) {
+                alt80=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 77, 0, input);
+                    new NoViableAltException("", 80, 0, input);
 
                 throw nvae;
             }
-            switch (alt77) {
+            switch (alt80) {
                 case 1 :
-                    // InternalSignalDSL.g:4870:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:5034:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
                     {
-                    // InternalSignalDSL.g:4870:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
-                    // InternalSignalDSL.g:4871:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5034:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:5035:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
                     {
-                    otherlv_4=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,24,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
                       				
                     }
-                    // InternalSignalDSL.g:4875:5: ( (lv_then_5_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4876:6: (lv_then_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:5039:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5040:6: (lv_then_5_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4876:6: (lv_then_5_0= ruleXExpression )
-                    // InternalSignalDSL.g:4877:7: lv_then_5_0= ruleXExpression
+                    // InternalSignalDSL.g:5040:6: (lv_then_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:5041:7: lv_then_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13477,13 +13887,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:4896:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalSignalDSL.g:5060:4: ( (lv_fallThrough_6_0= ',' ) )
                     {
-                    // InternalSignalDSL.g:4896:4: ( (lv_fallThrough_6_0= ',' ) )
-                    // InternalSignalDSL.g:4897:5: (lv_fallThrough_6_0= ',' )
+                    // InternalSignalDSL.g:5060:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalSignalDSL.g:5061:5: (lv_fallThrough_6_0= ',' )
                     {
-                    // InternalSignalDSL.g:4897:5: (lv_fallThrough_6_0= ',' )
-                    // InternalSignalDSL.g:4898:6: lv_fallThrough_6_0= ','
+                    // InternalSignalDSL.g:5061:5: (lv_fallThrough_6_0= ',' )
+                    // InternalSignalDSL.g:5062:6: lv_fallThrough_6_0= ','
                     {
                     lv_fallThrough_6_0=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -13536,7 +13946,7 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalSignalDSL.g:4915:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    // InternalSignalDSL.g:5079:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
     public final EObject entryRuleXForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13544,8 +13954,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4915:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
-            // InternalSignalDSL.g:4916:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
+            // InternalSignalDSL.g:5079:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalSignalDSL.g:5080:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
@@ -13576,7 +13986,7 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalSignalDSL.g:4922:1: ruleXForLoopExpression returns [EObject current=null] : ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:5086:1: ruleXForLoopExpression returns [EObject current=null] : ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
     public final EObject ruleXForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13595,20 +14005,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4928:2: ( ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:4929:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5092:2: ( ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:5093:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:4929:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:4930:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5093:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5094:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:4930:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-            // InternalSignalDSL.g:4931:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalSignalDSL.g:5094:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalSignalDSL.g:5095:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
             {
-            // InternalSignalDSL.g:4944:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-            // InternalSignalDSL.g:4945:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            // InternalSignalDSL.g:5108:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalSignalDSL.g:5109:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
             {
-            // InternalSignalDSL.g:4945:5: ()
-            // InternalSignalDSL.g:4946:6: 
+            // InternalSignalDSL.g:5109:5: ()
+            // InternalSignalDSL.g:5110:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -13620,30 +14030,30 @@
 
             }
 
-            otherlv_1=(Token)match(input,82,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,82,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,36,FOLLOW_41); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_44); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
               				
             }
-            // InternalSignalDSL.g:4960:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:4961:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalSignalDSL.g:5124:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:5125:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:4961:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-            // InternalSignalDSL.g:4962:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            // InternalSignalDSL.g:5125:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalSignalDSL.g:5126:7: lv_declaredParam_3_0= ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
               							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
               						
             }
-            pushFollow(FOLLOW_15);
+            pushFollow(FOLLOW_18);
             lv_declaredParam_3_0=ruleJvmFormalParameter();
 
             state._fsp--;
@@ -13667,7 +14077,7 @@
 
             }
 
-            otherlv_4=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,24,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
@@ -13679,18 +14089,18 @@
 
             }
 
-            // InternalSignalDSL.g:4985:3: ( (lv_forExpression_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4986:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5149:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5150:4: (lv_forExpression_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4986:4: (lv_forExpression_5_0= ruleXExpression )
-            // InternalSignalDSL.g:4987:5: lv_forExpression_5_0= ruleXExpression
+            // InternalSignalDSL.g:5150:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5151:5: lv_forExpression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0());
               				
             }
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             lv_forExpression_5_0=ruleXExpression();
 
             state._fsp--;
@@ -13714,17 +14124,17 @@
 
             }
 
-            otherlv_6=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
+            otherlv_6=(Token)match(input,38,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:5008:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
-            // InternalSignalDSL.g:5009:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalSignalDSL.g:5172:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5173:4: (lv_eachExpression_7_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:5009:4: (lv_eachExpression_7_0= ruleXExpression )
-            // InternalSignalDSL.g:5010:5: lv_eachExpression_7_0= ruleXExpression
+            // InternalSignalDSL.g:5173:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalSignalDSL.g:5174:5: lv_eachExpression_7_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -13780,7 +14190,7 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalSignalDSL.g:5031:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    // InternalSignalDSL.g:5195:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
     public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13788,8 +14198,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5031:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
-            // InternalSignalDSL.g:5032:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
+            // InternalSignalDSL.g:5195:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalSignalDSL.g:5196:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -13820,7 +14230,7 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalSignalDSL.g:5038:1: ruleXBasicForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:5202:1: ruleXBasicForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) ;
     public final EObject ruleXBasicForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13848,14 +14258,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5044:2: ( ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:5045:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5208:2: ( ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:5209:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:5045:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:5046:3: () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5209:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5210:3: () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:5046:3: ()
-            // InternalSignalDSL.g:5047:4: 
+            // InternalSignalDSL.g:5210:3: ()
+            // InternalSignalDSL.g:5211:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -13867,41 +14277,41 @@
 
             }
 
-            otherlv_1=(Token)match(input,82,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,82,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,36,FOLLOW_73); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_75); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:5061:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
-            int alt79=2;
-            int LA79_0 = input.LA(1);
+            // InternalSignalDSL.g:5225:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
 
-            if ( ((LA79_0>=RULE_STRING && LA79_0<=RULE_DECIMAL)||LA79_0==14||(LA79_0>=29 && LA79_0<=31)||LA79_0==36||(LA79_0>=40 && LA79_0<=41)||LA79_0==48||(LA79_0>=64 && LA79_0<=65)||LA79_0==69||LA79_0==77||LA79_0==79||(LA79_0>=82 && LA79_0<=96)||LA79_0==98) ) {
-                alt79=1;
+            if ( ((LA82_0>=RULE_STRING && LA82_0<=RULE_DECIMAL)||LA82_0==14||(LA82_0>=29 && LA82_0<=31)||LA82_0==36||(LA82_0>=40 && LA82_0<=41)||LA82_0==48||(LA82_0>=64 && LA82_0<=65)||LA82_0==69||LA82_0==77||LA82_0==79||(LA82_0>=82 && LA82_0<=96)||LA82_0==98) ) {
+                alt82=1;
             }
-            switch (alt79) {
+            switch (alt82) {
                 case 1 :
-                    // InternalSignalDSL.g:5062:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    // InternalSignalDSL.g:5226:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
                     {
-                    // InternalSignalDSL.g:5062:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
-                    // InternalSignalDSL.g:5063:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalSignalDSL.g:5226:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalSignalDSL.g:5227:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
                     {
-                    // InternalSignalDSL.g:5063:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
-                    // InternalSignalDSL.g:5064:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    // InternalSignalDSL.g:5227:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalSignalDSL.g:5228:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
                       					
                     }
-                    pushFollow(FOLLOW_74);
+                    pushFollow(FOLLOW_76);
                     lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration();
 
                     state._fsp--;
@@ -13925,39 +14335,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:5081:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
-                    loop78:
+                    // InternalSignalDSL.g:5245:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    loop81:
                     do {
-                        int alt78=2;
-                        int LA78_0 = input.LA(1);
+                        int alt81=2;
+                        int LA81_0 = input.LA(1);
 
-                        if ( (LA78_0==37) ) {
-                            alt78=1;
+                        if ( (LA81_0==37) ) {
+                            alt81=1;
                         }
 
 
-                        switch (alt78) {
+                        switch (alt81) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:5082:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalSignalDSL.g:5246:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,37,FOLLOW_75); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,37,FOLLOW_77); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:5086:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
-                    	    // InternalSignalDSL.g:5087:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalSignalDSL.g:5250:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalSignalDSL.g:5251:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
                     	    {
-                    	    // InternalSignalDSL.g:5087:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
-                    	    // InternalSignalDSL.g:5088:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    // InternalSignalDSL.g:5251:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalSignalDSL.g:5252:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_74);
+                    	    pushFollow(FOLLOW_76);
                     	    lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration();
 
                     	    state._fsp--;
@@ -13986,7 +14396,7 @@
                     	    break;
 
                     	default :
-                    	    break loop78;
+                    	    break loop81;
                         }
                     } while (true);
 
@@ -13996,32 +14406,32 @@
 
             }
 
-            otherlv_6=(Token)match(input,34,FOLLOW_76); if (state.failed) return current;
+            otherlv_6=(Token)match(input,34,FOLLOW_78); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
               		
             }
-            // InternalSignalDSL.g:5111:3: ( (lv_expression_7_0= ruleXExpression ) )?
-            int alt80=2;
-            int LA80_0 = input.LA(1);
+            // InternalSignalDSL.g:5275:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
 
-            if ( ((LA80_0>=RULE_STRING && LA80_0<=RULE_DECIMAL)||LA80_0==14||(LA80_0>=29 && LA80_0<=31)||LA80_0==36||(LA80_0>=40 && LA80_0<=41)||LA80_0==48||(LA80_0>=64 && LA80_0<=65)||LA80_0==69||LA80_0==77||LA80_0==79||(LA80_0>=82 && LA80_0<=84)||(LA80_0>=87 && LA80_0<=96)||LA80_0==98) ) {
-                alt80=1;
+            if ( ((LA83_0>=RULE_STRING && LA83_0<=RULE_DECIMAL)||LA83_0==14||(LA83_0>=29 && LA83_0<=31)||LA83_0==36||(LA83_0>=40 && LA83_0<=41)||LA83_0==48||(LA83_0>=64 && LA83_0<=65)||LA83_0==69||LA83_0==77||LA83_0==79||(LA83_0>=82 && LA83_0<=84)||(LA83_0>=87 && LA83_0<=96)||LA83_0==98) ) {
+                alt83=1;
             }
-            switch (alt80) {
+            switch (alt83) {
                 case 1 :
-                    // InternalSignalDSL.g:5112:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5276:4: (lv_expression_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:5112:4: (lv_expression_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:5113:5: lv_expression_7_0= ruleXExpression
+                    // InternalSignalDSL.g:5276:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5277:5: lv_expression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
                       				
                     }
-                    pushFollow(FOLLOW_77);
+                    pushFollow(FOLLOW_79);
                     lv_expression_7_0=ruleXExpression();
 
                     state._fsp--;
@@ -14048,35 +14458,35 @@
 
             }
 
-            otherlv_8=(Token)match(input,34,FOLLOW_24); if (state.failed) return current;
+            otherlv_8=(Token)match(input,34,FOLLOW_27); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
               		
             }
-            // InternalSignalDSL.g:5134:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
-            int alt82=2;
-            int LA82_0 = input.LA(1);
+            // InternalSignalDSL.g:5298:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
 
-            if ( ((LA82_0>=RULE_STRING && LA82_0<=RULE_DECIMAL)||LA82_0==14||(LA82_0>=29 && LA82_0<=31)||LA82_0==36||(LA82_0>=40 && LA82_0<=41)||LA82_0==48||(LA82_0>=64 && LA82_0<=65)||LA82_0==69||LA82_0==77||LA82_0==79||(LA82_0>=82 && LA82_0<=84)||(LA82_0>=87 && LA82_0<=96)||LA82_0==98) ) {
-                alt82=1;
+            if ( ((LA85_0>=RULE_STRING && LA85_0<=RULE_DECIMAL)||LA85_0==14||(LA85_0>=29 && LA85_0<=31)||LA85_0==36||(LA85_0>=40 && LA85_0<=41)||LA85_0==48||(LA85_0>=64 && LA85_0<=65)||LA85_0==69||LA85_0==77||LA85_0==79||(LA85_0>=82 && LA85_0<=84)||(LA85_0>=87 && LA85_0<=96)||LA85_0==98) ) {
+                alt85=1;
             }
-            switch (alt82) {
+            switch (alt85) {
                 case 1 :
-                    // InternalSignalDSL.g:5135:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    // InternalSignalDSL.g:5299:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
                     {
-                    // InternalSignalDSL.g:5135:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:5136:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:5299:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5300:5: (lv_updateExpressions_9_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:5136:5: (lv_updateExpressions_9_0= ruleXExpression )
-                    // InternalSignalDSL.g:5137:6: lv_updateExpressions_9_0= ruleXExpression
+                    // InternalSignalDSL.g:5300:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:5301:6: lv_updateExpressions_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0());
                       					
                     }
-                    pushFollow(FOLLOW_25);
+                    pushFollow(FOLLOW_28);
                     lv_updateExpressions_9_0=ruleXExpression();
 
                     state._fsp--;
@@ -14100,39 +14510,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:5154:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
-                    loop81:
+                    // InternalSignalDSL.g:5318:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    loop84:
                     do {
-                        int alt81=2;
-                        int LA81_0 = input.LA(1);
+                        int alt84=2;
+                        int LA84_0 = input.LA(1);
 
-                        if ( (LA81_0==37) ) {
-                            alt81=1;
+                        if ( (LA84_0==37) ) {
+                            alt84=1;
                         }
 
 
-                        switch (alt81) {
+                        switch (alt84) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:5155:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:5319:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_10=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                    	    otherlv_10=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:5159:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
-                    	    // InternalSignalDSL.g:5160:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:5323:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:5324:6: (lv_updateExpressions_11_0= ruleXExpression )
                     	    {
-                    	    // InternalSignalDSL.g:5160:6: (lv_updateExpressions_11_0= ruleXExpression )
-                    	    // InternalSignalDSL.g:5161:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    // InternalSignalDSL.g:5324:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:5325:7: lv_updateExpressions_11_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_25);
+                    	    pushFollow(FOLLOW_28);
                     	    lv_updateExpressions_11_0=ruleXExpression();
 
                     	    state._fsp--;
@@ -14161,7 +14571,7 @@
                     	    break;
 
                     	default :
-                    	    break loop81;
+                    	    break loop84;
                         }
                     } while (true);
 
@@ -14171,17 +14581,17 @@
 
             }
 
-            otherlv_12=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
+            otherlv_12=(Token)match(input,38,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
               		
             }
-            // InternalSignalDSL.g:5184:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
-            // InternalSignalDSL.g:5185:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalSignalDSL.g:5348:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5349:4: (lv_eachExpression_13_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:5185:4: (lv_eachExpression_13_0= ruleXExpression )
-            // InternalSignalDSL.g:5186:5: lv_eachExpression_13_0= ruleXExpression
+            // InternalSignalDSL.g:5349:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalSignalDSL.g:5350:5: lv_eachExpression_13_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -14237,7 +14647,7 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalSignalDSL.g:5207:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    // InternalSignalDSL.g:5371:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
     public final EObject entryRuleXWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -14245,8 +14655,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5207:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
-            // InternalSignalDSL.g:5208:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
+            // InternalSignalDSL.g:5371:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalSignalDSL.g:5372:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
@@ -14277,7 +14687,7 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalSignalDSL.g:5214:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:5378:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -14293,14 +14703,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5220:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:5221:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5384:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:5385:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:5221:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:5222:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5385:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5386:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:5222:3: ()
-            // InternalSignalDSL.g:5223:4: 
+            // InternalSignalDSL.g:5386:3: ()
+            // InternalSignalDSL.g:5387:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14312,30 +14722,30 @@
 
             }
 
-            otherlv_1=(Token)match(input,83,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,83,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:5237:3: ( (lv_predicate_3_0= ruleXExpression ) )
-            // InternalSignalDSL.g:5238:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalSignalDSL.g:5401:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5402:4: (lv_predicate_3_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:5238:4: (lv_predicate_3_0= ruleXExpression )
-            // InternalSignalDSL.g:5239:5: lv_predicate_3_0= ruleXExpression
+            // InternalSignalDSL.g:5402:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalSignalDSL.g:5403:5: lv_predicate_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0());
               				
             }
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             lv_predicate_3_0=ruleXExpression();
 
             state._fsp--;
@@ -14359,17 +14769,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,38,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalSignalDSL.g:5260:3: ( (lv_body_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:5261:4: (lv_body_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5424:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5425:4: (lv_body_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:5261:4: (lv_body_5_0= ruleXExpression )
-            // InternalSignalDSL.g:5262:5: lv_body_5_0= ruleXExpression
+            // InternalSignalDSL.g:5425:4: (lv_body_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5426:5: lv_body_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -14425,7 +14835,7 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalSignalDSL.g:5283:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    // InternalSignalDSL.g:5447:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
     public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -14433,8 +14843,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5283:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
-            // InternalSignalDSL.g:5284:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
+            // InternalSignalDSL.g:5447:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalSignalDSL.g:5448:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
@@ -14465,7 +14875,7 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalSignalDSL.g:5290:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
+    // InternalSignalDSL.g:5454:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
     public final EObject ruleXDoWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -14482,14 +14892,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5296:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
-            // InternalSignalDSL.g:5297:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalSignalDSL.g:5460:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalSignalDSL.g:5461:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
             {
-            // InternalSignalDSL.g:5297:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
-            // InternalSignalDSL.g:5298:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            // InternalSignalDSL.g:5461:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalSignalDSL.g:5462:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
             {
-            // InternalSignalDSL.g:5298:3: ()
-            // InternalSignalDSL.g:5299:4: 
+            // InternalSignalDSL.g:5462:3: ()
+            // InternalSignalDSL.g:5463:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14501,24 +14911,24 @@
 
             }
 
-            otherlv_1=(Token)match(input,84,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,84,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
               		
             }
-            // InternalSignalDSL.g:5309:3: ( (lv_body_2_0= ruleXExpression ) )
-            // InternalSignalDSL.g:5310:4: (lv_body_2_0= ruleXExpression )
+            // InternalSignalDSL.g:5473:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5474:4: (lv_body_2_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:5310:4: (lv_body_2_0= ruleXExpression )
-            // InternalSignalDSL.g:5311:5: lv_body_2_0= ruleXExpression
+            // InternalSignalDSL.g:5474:4: (lv_body_2_0= ruleXExpression )
+            // InternalSignalDSL.g:5475:5: lv_body_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_78);
+            pushFollow(FOLLOW_80);
             lv_body_2_0=ruleXExpression();
 
             state._fsp--;
@@ -14542,30 +14952,30 @@
 
             }
 
-            otherlv_3=(Token)match(input,83,FOLLOW_66); if (state.failed) return current;
+            otherlv_3=(Token)match(input,83,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
               		
             }
-            otherlv_4=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,36,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
               		
             }
-            // InternalSignalDSL.g:5336:3: ( (lv_predicate_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:5337:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5500:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5501:4: (lv_predicate_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:5337:4: (lv_predicate_5_0= ruleXExpression )
-            // InternalSignalDSL.g:5338:5: lv_predicate_5_0= ruleXExpression
+            // InternalSignalDSL.g:5501:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5502:5: lv_predicate_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0());
               				
             }
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             lv_predicate_5_0=ruleXExpression();
 
             state._fsp--;
@@ -14620,7 +15030,7 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalSignalDSL.g:5363:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    // InternalSignalDSL.g:5527:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
     public final EObject entryRuleXBlockExpression() throws RecognitionException {
         EObject current = null;
 
@@ -14628,8 +15038,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5363:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
-            // InternalSignalDSL.g:5364:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
+            // InternalSignalDSL.g:5527:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalSignalDSL.g:5528:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
@@ -14660,7 +15070,7 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalSignalDSL.g:5370:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
+    // InternalSignalDSL.g:5534:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
     public final EObject ruleXBlockExpression() throws RecognitionException {
         EObject current = null;
 
@@ -14674,14 +15084,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5376:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
-            // InternalSignalDSL.g:5377:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalSignalDSL.g:5540:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalSignalDSL.g:5541:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
             {
-            // InternalSignalDSL.g:5377:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
-            // InternalSignalDSL.g:5378:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            // InternalSignalDSL.g:5541:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalSignalDSL.g:5542:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
             {
-            // InternalSignalDSL.g:5378:3: ()
-            // InternalSignalDSL.g:5379:4: 
+            // InternalSignalDSL.g:5542:3: ()
+            // InternalSignalDSL.g:5543:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14693,39 +15103,39 @@
 
             }
 
-            otherlv_1=(Token)match(input,14,FOLLOW_79); if (state.failed) return current;
+            otherlv_1=(Token)match(input,14,FOLLOW_81); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
               		
             }
-            // InternalSignalDSL.g:5389:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
-            loop84:
+            // InternalSignalDSL.g:5553:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            loop87:
             do {
-                int alt84=2;
-                int LA84_0 = input.LA(1);
+                int alt87=2;
+                int LA87_0 = input.LA(1);
 
-                if ( ((LA84_0>=RULE_STRING && LA84_0<=RULE_DECIMAL)||LA84_0==14||(LA84_0>=29 && LA84_0<=31)||LA84_0==36||(LA84_0>=40 && LA84_0<=41)||LA84_0==48||(LA84_0>=64 && LA84_0<=65)||LA84_0==69||LA84_0==77||LA84_0==79||(LA84_0>=82 && LA84_0<=96)||LA84_0==98) ) {
-                    alt84=1;
+                if ( ((LA87_0>=RULE_STRING && LA87_0<=RULE_DECIMAL)||LA87_0==14||(LA87_0>=29 && LA87_0<=31)||LA87_0==36||(LA87_0>=40 && LA87_0<=41)||LA87_0==48||(LA87_0>=64 && LA87_0<=65)||LA87_0==69||LA87_0==77||LA87_0==79||(LA87_0>=82 && LA87_0<=96)||LA87_0==98) ) {
+                    alt87=1;
                 }
 
 
-                switch (alt84) {
+                switch (alt87) {
             	case 1 :
-            	    // InternalSignalDSL.g:5390:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    // InternalSignalDSL.g:5554:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
             	    {
-            	    // InternalSignalDSL.g:5390:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalSignalDSL.g:5391:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:5554:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalSignalDSL.g:5555:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalSignalDSL.g:5391:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalSignalDSL.g:5392:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    // InternalSignalDSL.g:5555:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:5556:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_80);
+            	    pushFollow(FOLLOW_82);
             	    lv_expressions_2_0=ruleXExpressionOrVarDeclaration();
 
             	    state._fsp--;
@@ -14749,18 +15159,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:5409:4: (otherlv_3= ';' )?
-            	    int alt83=2;
-            	    int LA83_0 = input.LA(1);
+            	    // InternalSignalDSL.g:5573:4: (otherlv_3= ';' )?
+            	    int alt86=2;
+            	    int LA86_0 = input.LA(1);
 
-            	    if ( (LA83_0==34) ) {
-            	        alt83=1;
+            	    if ( (LA86_0==34) ) {
+            	        alt86=1;
             	    }
-            	    switch (alt83) {
+            	    switch (alt86) {
             	        case 1 :
-            	            // InternalSignalDSL.g:5410:5: otherlv_3= ';'
+            	            // InternalSignalDSL.g:5574:5: otherlv_3= ';'
             	            {
-            	            otherlv_3=(Token)match(input,34,FOLLOW_79); if (state.failed) return current;
+            	            otherlv_3=(Token)match(input,34,FOLLOW_81); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
@@ -14777,7 +15187,7 @@
             	    break;
 
             	default :
-            	    break loop84;
+            	    break loop87;
                 }
             } while (true);
 
@@ -14812,7 +15222,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:5424:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    // InternalSignalDSL.g:5588:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
     public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -14820,8 +15230,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5424:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
-            // InternalSignalDSL.g:5425:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
+            // InternalSignalDSL.g:5588:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalSignalDSL.g:5589:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -14852,7 +15262,7 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:5431:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
+    // InternalSignalDSL.g:5595:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -14865,29 +15275,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5437:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
-            // InternalSignalDSL.g:5438:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            // InternalSignalDSL.g:5601:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalSignalDSL.g:5602:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
             {
-            // InternalSignalDSL.g:5438:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
-            int alt85=2;
-            int LA85_0 = input.LA(1);
+            // InternalSignalDSL.g:5602:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            int alt88=2;
+            int LA88_0 = input.LA(1);
 
-            if ( ((LA85_0>=85 && LA85_0<=86)) ) {
-                alt85=1;
+            if ( ((LA88_0>=85 && LA88_0<=86)) ) {
+                alt88=1;
             }
-            else if ( ((LA85_0>=RULE_STRING && LA85_0<=RULE_DECIMAL)||LA85_0==14||(LA85_0>=29 && LA85_0<=31)||LA85_0==36||(LA85_0>=40 && LA85_0<=41)||LA85_0==48||(LA85_0>=64 && LA85_0<=65)||LA85_0==69||LA85_0==77||LA85_0==79||(LA85_0>=82 && LA85_0<=84)||(LA85_0>=87 && LA85_0<=96)||LA85_0==98) ) {
-                alt85=2;
+            else if ( ((LA88_0>=RULE_STRING && LA88_0<=RULE_DECIMAL)||LA88_0==14||(LA88_0>=29 && LA88_0<=31)||LA88_0==36||(LA88_0>=40 && LA88_0<=41)||LA88_0==48||(LA88_0>=64 && LA88_0<=65)||LA88_0==69||LA88_0==77||LA88_0==79||(LA88_0>=82 && LA88_0<=84)||(LA88_0>=87 && LA88_0<=96)||LA88_0==98) ) {
+                alt88=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 85, 0, input);
+                    new NoViableAltException("", 88, 0, input);
 
                 throw nvae;
             }
-            switch (alt85) {
+            switch (alt88) {
                 case 1 :
-                    // InternalSignalDSL.g:5439:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
+                    // InternalSignalDSL.g:5603:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14909,7 +15319,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5448:3: this_XExpression_1= ruleXExpression
+                    // InternalSignalDSL.g:5612:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14955,7 +15365,7 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalSignalDSL.g:5460:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    // InternalSignalDSL.g:5624:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
     public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -14963,8 +15373,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5460:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
-            // InternalSignalDSL.g:5461:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
+            // InternalSignalDSL.g:5624:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalSignalDSL.g:5625:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
@@ -14995,7 +15405,7 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalSignalDSL.g:5467:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
+    // InternalSignalDSL.g:5631:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
     public final EObject ruleXVariableDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -15015,14 +15425,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5473:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
-            // InternalSignalDSL.g:5474:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:5637:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
+            // InternalSignalDSL.g:5638:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
             {
-            // InternalSignalDSL.g:5474:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
-            // InternalSignalDSL.g:5475:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            // InternalSignalDSL.g:5638:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:5639:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
             {
-            // InternalSignalDSL.g:5475:3: ()
-            // InternalSignalDSL.g:5476:4: 
+            // InternalSignalDSL.g:5639:3: ()
+            // InternalSignalDSL.g:5640:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15034,34 +15444,34 @@
 
             }
 
-            // InternalSignalDSL.g:5482:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
-            int alt86=2;
-            int LA86_0 = input.LA(1);
+            // InternalSignalDSL.g:5646:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            int alt89=2;
+            int LA89_0 = input.LA(1);
 
-            if ( (LA86_0==85) ) {
-                alt86=1;
+            if ( (LA89_0==85) ) {
+                alt89=1;
             }
-            else if ( (LA86_0==86) ) {
-                alt86=2;
+            else if ( (LA89_0==86) ) {
+                alt89=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 86, 0, input);
+                    new NoViableAltException("", 89, 0, input);
 
                 throw nvae;
             }
-            switch (alt86) {
+            switch (alt89) {
                 case 1 :
-                    // InternalSignalDSL.g:5483:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalSignalDSL.g:5647:4: ( (lv_writeable_1_0= 'var' ) )
                     {
-                    // InternalSignalDSL.g:5483:4: ( (lv_writeable_1_0= 'var' ) )
-                    // InternalSignalDSL.g:5484:5: (lv_writeable_1_0= 'var' )
+                    // InternalSignalDSL.g:5647:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalSignalDSL.g:5648:5: (lv_writeable_1_0= 'var' )
                     {
-                    // InternalSignalDSL.g:5484:5: (lv_writeable_1_0= 'var' )
-                    // InternalSignalDSL.g:5485:6: lv_writeable_1_0= 'var'
+                    // InternalSignalDSL.g:5648:5: (lv_writeable_1_0= 'var' )
+                    // InternalSignalDSL.g:5649:6: lv_writeable_1_0= 'var'
                     {
-                    lv_writeable_1_0=(Token)match(input,85,FOLLOW_41); if (state.failed) return current;
+                    lv_writeable_1_0=(Token)match(input,85,FOLLOW_44); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
@@ -15085,9 +15495,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5498:4: otherlv_2= 'val'
+                    // InternalSignalDSL.g:5662:4: otherlv_2= 'val'
                     {
-                    otherlv_2=(Token)match(input,86,FOLLOW_41); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,86,FOLLOW_44); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
@@ -15099,55 +15509,55 @@
 
             }
 
-            // InternalSignalDSL.g:5503:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
-            int alt87=2;
-            int LA87_0 = input.LA(1);
+            // InternalSignalDSL.g:5667:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            int alt90=2;
+            int LA90_0 = input.LA(1);
 
-            if ( (LA87_0==RULE_ID) ) {
-                int LA87_1 = input.LA(2);
+            if ( (LA90_0==RULE_ID) ) {
+                int LA90_1 = input.LA(2);
 
                 if ( (synpred35_InternalSignalDSL()) ) {
-                    alt87=1;
+                    alt90=1;
                 }
                 else if ( (true) ) {
-                    alt87=2;
+                    alt90=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 87, 1, input);
+                        new NoViableAltException("", 90, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA87_0==36) && (synpred35_InternalSignalDSL())) {
-                alt87=1;
+            else if ( (LA90_0==36) && (synpred35_InternalSignalDSL())) {
+                alt90=1;
             }
-            else if ( (LA87_0==61) && (synpred35_InternalSignalDSL())) {
-                alt87=1;
+            else if ( (LA90_0==61) && (synpred35_InternalSignalDSL())) {
+                alt90=1;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 87, 0, input);
+                    new NoViableAltException("", 90, 0, input);
 
                 throw nvae;
             }
-            switch (alt87) {
+            switch (alt90) {
                 case 1 :
-                    // InternalSignalDSL.g:5504:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:5668:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                     {
-                    // InternalSignalDSL.g:5504:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
-                    // InternalSignalDSL.g:5505:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalSignalDSL.g:5668:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:5669:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                     {
-                    // InternalSignalDSL.g:5518:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
-                    // InternalSignalDSL.g:5519:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5682:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalSignalDSL.g:5683:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                     {
-                    // InternalSignalDSL.g:5519:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
-                    // InternalSignalDSL.g:5520:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5683:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalSignalDSL.g:5684:7: (lv_type_3_0= ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:5520:7: (lv_type_3_0= ruleJvmTypeReference )
-                    // InternalSignalDSL.g:5521:8: lv_type_3_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:5684:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5685:8: lv_type_3_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15178,18 +15588,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:5538:6: ( (lv_name_4_0= ruleValidID ) )
-                    // InternalSignalDSL.g:5539:7: (lv_name_4_0= ruleValidID )
+                    // InternalSignalDSL.g:5702:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5703:7: (lv_name_4_0= ruleValidID )
                     {
-                    // InternalSignalDSL.g:5539:7: (lv_name_4_0= ruleValidID )
-                    // InternalSignalDSL.g:5540:8: lv_name_4_0= ruleValidID
+                    // InternalSignalDSL.g:5703:7: (lv_name_4_0= ruleValidID )
+                    // InternalSignalDSL.g:5704:8: lv_name_4_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
                       								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
                       							
                     }
-                    pushFollow(FOLLOW_81);
+                    pushFollow(FOLLOW_83);
                     lv_name_4_0=ruleValidID();
 
                     state._fsp--;
@@ -15223,20 +15633,20 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5560:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5724:4: ( (lv_name_5_0= ruleValidID ) )
                     {
-                    // InternalSignalDSL.g:5560:4: ( (lv_name_5_0= ruleValidID ) )
-                    // InternalSignalDSL.g:5561:5: (lv_name_5_0= ruleValidID )
+                    // InternalSignalDSL.g:5724:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5725:5: (lv_name_5_0= ruleValidID )
                     {
-                    // InternalSignalDSL.g:5561:5: (lv_name_5_0= ruleValidID )
-                    // InternalSignalDSL.g:5562:6: lv_name_5_0= ruleValidID
+                    // InternalSignalDSL.g:5725:5: (lv_name_5_0= ruleValidID )
+                    // InternalSignalDSL.g:5726:6: lv_name_5_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_81);
+                    pushFollow(FOLLOW_83);
                     lv_name_5_0=ruleValidID();
 
                     state._fsp--;
@@ -15266,28 +15676,28 @@
 
             }
 
-            // InternalSignalDSL.g:5580:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
-            int alt88=2;
-            int LA88_0 = input.LA(1);
+            // InternalSignalDSL.g:5744:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            int alt91=2;
+            int LA91_0 = input.LA(1);
 
-            if ( (LA88_0==39) ) {
-                alt88=1;
+            if ( (LA91_0==39) ) {
+                alt91=1;
             }
-            switch (alt88) {
+            switch (alt91) {
                 case 1 :
-                    // InternalSignalDSL.g:5581:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5745:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,39,FOLLOW_28); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,39,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
                       			
                     }
-                    // InternalSignalDSL.g:5585:4: ( (lv_right_7_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:5586:5: (lv_right_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5749:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5750:5: (lv_right_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:5586:5: (lv_right_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:5587:6: lv_right_7_0= ruleXExpression
+                    // InternalSignalDSL.g:5750:5: (lv_right_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5751:6: lv_right_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15349,7 +15759,7 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalSignalDSL.g:5609:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:5773:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
     public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -15357,8 +15767,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5609:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
-            // InternalSignalDSL.g:5610:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
+            // InternalSignalDSL.g:5773:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalSignalDSL.g:5774:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
@@ -15389,7 +15799,7 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalSignalDSL.g:5616:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalSignalDSL.g:5780:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
     public final EObject ruleJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -15402,32 +15812,32 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5622:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalSignalDSL.g:5623:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5786:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalSignalDSL.g:5787:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalSignalDSL.g:5623:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalSignalDSL.g:5624:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5787:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5788:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalSignalDSL.g:5624:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
-            int alt89=2;
-            int LA89_0 = input.LA(1);
+            // InternalSignalDSL.g:5788:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            int alt92=2;
+            int LA92_0 = input.LA(1);
 
-            if ( (LA89_0==RULE_ID) ) {
-                int LA89_1 = input.LA(2);
+            if ( (LA92_0==RULE_ID) ) {
+                int LA92_1 = input.LA(2);
 
-                if ( (LA89_1==RULE_ID||LA89_1==41||LA89_1==48||LA89_1==73) ) {
-                    alt89=1;
+                if ( (LA92_1==RULE_ID||LA92_1==41||LA92_1==48||LA92_1==73) ) {
+                    alt92=1;
                 }
             }
-            else if ( (LA89_0==36||LA89_0==61) ) {
-                alt89=1;
+            else if ( (LA92_0==36||LA92_0==61) ) {
+                alt92=1;
             }
-            switch (alt89) {
+            switch (alt92) {
                 case 1 :
-                    // InternalSignalDSL.g:5625:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5789:4: (lv_parameterType_0_0= ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:5625:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-                    // InternalSignalDSL.g:5626:5: lv_parameterType_0_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:5789:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5790:5: lv_parameterType_0_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15461,11 +15871,11 @@
 
             }
 
-            // InternalSignalDSL.g:5643:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalSignalDSL.g:5644:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5807:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5808:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalSignalDSL.g:5644:4: (lv_name_1_0= ruleValidID )
-            // InternalSignalDSL.g:5645:5: lv_name_1_0= ruleValidID
+            // InternalSignalDSL.g:5808:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5809:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -15521,7 +15931,7 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalSignalDSL.g:5666:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:5830:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
     public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -15529,8 +15939,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5666:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
-            // InternalSignalDSL.g:5667:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
+            // InternalSignalDSL.g:5830:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalSignalDSL.g:5831:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -15561,7 +15971,7 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalSignalDSL.g:5673:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalSignalDSL.g:5837:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
     public final EObject ruleFullJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -15574,17 +15984,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5679:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalSignalDSL.g:5680:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5843:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalSignalDSL.g:5844:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalSignalDSL.g:5680:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalSignalDSL.g:5681:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5844:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5845:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalSignalDSL.g:5681:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:5682:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:5845:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:5846:4: (lv_parameterType_0_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:5682:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:5683:5: lv_parameterType_0_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:5846:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:5847:5: lv_parameterType_0_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -15615,11 +16025,11 @@
 
             }
 
-            // InternalSignalDSL.g:5700:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalSignalDSL.g:5701:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5864:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5865:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalSignalDSL.g:5701:4: (lv_name_1_0= ruleValidID )
-            // InternalSignalDSL.g:5702:5: lv_name_1_0= ruleValidID
+            // InternalSignalDSL.g:5865:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5866:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -15675,7 +16085,7 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalSignalDSL.g:5723:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    // InternalSignalDSL.g:5887:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
     public final EObject entryRuleXFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -15683,8 +16093,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5723:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
-            // InternalSignalDSL.g:5724:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
+            // InternalSignalDSL.g:5887:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalSignalDSL.g:5888:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFeatureCallRule()); 
@@ -15715,7 +16125,7 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalSignalDSL.g:5730:1: ruleXFeatureCall returns [EObject current=null] : ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) ;
+    // InternalSignalDSL.g:5894:1: ruleXFeatureCall returns [EObject current=null] : ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) ;
     public final EObject ruleXFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -15742,14 +16152,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5736:2: ( ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) )
-            // InternalSignalDSL.g:5737:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:5900:2: ( ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) )
+            // InternalSignalDSL.g:5901:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
             {
-            // InternalSignalDSL.g:5737:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
-            // InternalSignalDSL.g:5738:3: () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            // InternalSignalDSL.g:5901:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:5902:3: () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
             {
-            // InternalSignalDSL.g:5738:3: ()
-            // InternalSignalDSL.g:5739:4: 
+            // InternalSignalDSL.g:5902:3: ()
+            // InternalSignalDSL.g:5903:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15761,35 +16171,35 @@
 
             }
 
-            // InternalSignalDSL.g:5745:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
-            int alt91=2;
-            int LA91_0 = input.LA(1);
+            // InternalSignalDSL.g:5909:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            int alt94=2;
+            int LA94_0 = input.LA(1);
 
-            if ( (LA91_0==48) ) {
-                alt91=1;
+            if ( (LA94_0==48) ) {
+                alt94=1;
             }
-            switch (alt91) {
+            switch (alt94) {
                 case 1 :
-                    // InternalSignalDSL.g:5746:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    // InternalSignalDSL.g:5910:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
                     {
-                    otherlv_1=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,48,FOLLOW_56); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
                       			
                     }
-                    // InternalSignalDSL.g:5750:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalSignalDSL.g:5751:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:5914:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalSignalDSL.g:5915:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalSignalDSL.g:5751:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalSignalDSL.g:5752:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalSignalDSL.g:5915:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:5916:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_54);
+                    pushFollow(FOLLOW_57);
                     lv_typeArguments_2_0=ruleJvmArgumentTypeReference();
 
                     state._fsp--;
@@ -15813,39 +16223,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:5769:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
-                    loop90:
+                    // InternalSignalDSL.g:5933:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop93:
                     do {
-                        int alt90=2;
-                        int LA90_0 = input.LA(1);
+                        int alt93=2;
+                        int LA93_0 = input.LA(1);
 
-                        if ( (LA90_0==37) ) {
-                            alt90=1;
+                        if ( (LA93_0==37) ) {
+                            alt93=1;
                         }
 
 
-                        switch (alt90) {
+                        switch (alt93) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:5770:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:5934:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,37,FOLLOW_56); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:5774:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalSignalDSL.g:5775:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:5938:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:5939:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalSignalDSL.g:5775:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalSignalDSL.g:5776:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalSignalDSL.g:5939:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:5940:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_54);
+                    	    pushFollow(FOLLOW_57);
                     	    lv_typeArguments_4_0=ruleJvmArgumentTypeReference();
 
                     	    state._fsp--;
@@ -15874,11 +16284,11 @@
                     	    break;
 
                     	default :
-                    	    break loop90;
+                    	    break loop93;
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,49,FOLLOW_52); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,49,FOLLOW_55); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
@@ -15890,11 +16300,11 @@
 
             }
 
-            // InternalSignalDSL.g:5799:3: ( ( ruleIdOrSuper ) )
-            // InternalSignalDSL.g:5800:4: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:5963:3: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:5964:4: ( ruleIdOrSuper )
             {
-            // InternalSignalDSL.g:5800:4: ( ruleIdOrSuper )
-            // InternalSignalDSL.g:5801:5: ruleIdOrSuper
+            // InternalSignalDSL.g:5964:4: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:5965:5: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
 
@@ -15908,7 +16318,7 @@
               					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0());
               				
             }
-            pushFollow(FOLLOW_82);
+            pushFollow(FOLLOW_84);
             ruleIdOrSuper();
 
             state._fsp--;
@@ -15924,20 +16334,20 @@
 
             }
 
-            // InternalSignalDSL.g:5815:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
-            int alt94=2;
-            alt94 = dfa94.predict(input);
-            switch (alt94) {
+            // InternalSignalDSL.g:5979:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
+            int alt97=2;
+            alt97 = dfa97.predict(input);
+            switch (alt97) {
                 case 1 :
-                    // InternalSignalDSL.g:5816:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')'
+                    // InternalSignalDSL.g:5980:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')'
                     {
-                    // InternalSignalDSL.g:5816:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
-                    // InternalSignalDSL.g:5817:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    // InternalSignalDSL.g:5980:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalSignalDSL.g:5981:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
                     {
-                    // InternalSignalDSL.g:5821:5: (lv_explicitOperationCall_7_0= '(' )
-                    // InternalSignalDSL.g:5822:6: lv_explicitOperationCall_7_0= '('
+                    // InternalSignalDSL.g:5985:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalSignalDSL.g:5986:6: lv_explicitOperationCall_7_0= '('
                     {
-                    lv_explicitOperationCall_7_0=(Token)match(input,36,FOLLOW_56); if (state.failed) return current;
+                    lv_explicitOperationCall_7_0=(Token)match(input,36,FOLLOW_59); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
@@ -15957,25 +16367,25 @@
 
                     }
 
-                    // InternalSignalDSL.g:5834:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
-                    int alt93=3;
-                    alt93 = dfa93.predict(input);
-                    switch (alt93) {
+                    // InternalSignalDSL.g:5998:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    int alt96=3;
+                    alt96 = dfa96.predict(input);
+                    switch (alt96) {
                         case 1 :
-                            // InternalSignalDSL.g:5835:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:5999:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
                             {
-                            // InternalSignalDSL.g:5835:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
-                            // InternalSignalDSL.g:5836:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:5999:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:6000:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
                             {
-                            // InternalSignalDSL.g:5861:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
-                            // InternalSignalDSL.g:5862:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            // InternalSignalDSL.g:6025:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:6026:7: lv_featureCallArguments_8_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
                               							newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0());
                               						
                             }
-                            pushFollow(FOLLOW_26);
+                            pushFollow(FOLLOW_29);
                             lv_featureCallArguments_8_0=ruleXShortClosure();
 
                             state._fsp--;
@@ -16003,23 +16413,23 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:5880:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:6044:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
                             {
-                            // InternalSignalDSL.g:5880:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
-                            // InternalSignalDSL.g:5881:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            // InternalSignalDSL.g:6044:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:6045:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:5881:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
-                            // InternalSignalDSL.g:5882:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalSignalDSL.g:6045:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:6046:7: (lv_featureCallArguments_9_0= ruleXExpression )
                             {
-                            // InternalSignalDSL.g:5882:7: (lv_featureCallArguments_9_0= ruleXExpression )
-                            // InternalSignalDSL.g:5883:8: lv_featureCallArguments_9_0= ruleXExpression
+                            // InternalSignalDSL.g:6046:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalSignalDSL.g:6047:8: lv_featureCallArguments_9_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
                               								newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0());
                               							
                             }
-                            pushFollow(FOLLOW_25);
+                            pushFollow(FOLLOW_28);
                             lv_featureCallArguments_9_0=ruleXExpression();
 
                             state._fsp--;
@@ -16043,39 +16453,39 @@
 
                             }
 
-                            // InternalSignalDSL.g:5900:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
-                            loop92:
+                            // InternalSignalDSL.g:6064:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            loop95:
                             do {
-                                int alt92=2;
-                                int LA92_0 = input.LA(1);
+                                int alt95=2;
+                                int LA95_0 = input.LA(1);
 
-                                if ( (LA92_0==37) ) {
-                                    alt92=1;
+                                if ( (LA95_0==37) ) {
+                                    alt95=1;
                                 }
 
 
-                                switch (alt92) {
+                                switch (alt95) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:5901:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:6065:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_10=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_10=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:5905:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
-                            	    // InternalSignalDSL.g:5906:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:6069:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:6070:8: (lv_featureCallArguments_11_0= ruleXExpression )
                             	    {
-                            	    // InternalSignalDSL.g:5906:8: (lv_featureCallArguments_11_0= ruleXExpression )
-                            	    // InternalSignalDSL.g:5907:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    // InternalSignalDSL.g:6070:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:6071:9: lv_featureCallArguments_11_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      									newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0());
                             	      								
                             	    }
-                            	    pushFollow(FOLLOW_25);
+                            	    pushFollow(FOLLOW_28);
                             	    lv_featureCallArguments_11_0=ruleXExpression();
 
                             	    state._fsp--;
@@ -16104,7 +16514,7 @@
                             	    break;
 
                             	default :
-                            	    break loop92;
+                            	    break loop95;
                                 }
                             } while (true);
 
@@ -16117,7 +16527,7 @@
 
                     }
 
-                    otherlv_12=(Token)match(input,38,FOLLOW_83); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,38,FOLLOW_85); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
@@ -16129,15 +16539,15 @@
 
             }
 
-            // InternalSignalDSL.g:5932:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
-            int alt95=2;
-            alt95 = dfa95.predict(input);
-            switch (alt95) {
+            // InternalSignalDSL.g:6096:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            int alt98=2;
+            alt98 = dfa98.predict(input);
+            switch (alt98) {
                 case 1 :
-                    // InternalSignalDSL.g:5933:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalSignalDSL.g:6097:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
                     {
-                    // InternalSignalDSL.g:5939:4: (lv_featureCallArguments_13_0= ruleXClosure )
-                    // InternalSignalDSL.g:5940:5: lv_featureCallArguments_13_0= ruleXClosure
+                    // InternalSignalDSL.g:6103:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalSignalDSL.g:6104:5: lv_featureCallArguments_13_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16196,7 +16606,7 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalSignalDSL.g:5961:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    // InternalSignalDSL.g:6125:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
     public final String entryRuleFeatureCallID() throws RecognitionException {
         String current = null;
 
@@ -16204,8 +16614,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5961:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
-            // InternalSignalDSL.g:5962:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
+            // InternalSignalDSL.g:6125:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalSignalDSL.g:6126:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFeatureCallIDRule()); 
@@ -16236,7 +16646,7 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalSignalDSL.g:5968:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
+    // InternalSignalDSL.g:6132:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
     public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -16248,48 +16658,48 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5974:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
-            // InternalSignalDSL.g:5975:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            // InternalSignalDSL.g:6138:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalSignalDSL.g:6139:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
             {
-            // InternalSignalDSL.g:5975:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
-            int alt96=5;
+            // InternalSignalDSL.g:6139:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            int alt99=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                alt96=1;
+                alt99=1;
                 }
                 break;
             case 87:
                 {
-                alt96=2;
+                alt99=2;
                 }
                 break;
             case 30:
                 {
-                alt96=3;
+                alt99=3;
                 }
                 break;
             case 29:
                 {
-                alt96=4;
+                alt99=4;
                 }
                 break;
             case 31:
                 {
-                alt96=5;
+                alt99=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 96, 0, input);
+                    new NoViableAltException("", 99, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt96) {
+            switch (alt99) {
                 case 1 :
-                    // InternalSignalDSL.g:5976:3: this_ValidID_0= ruleValidID
+                    // InternalSignalDSL.g:6140:3: this_ValidID_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16315,7 +16725,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5987:3: kw= 'extends'
+                    // InternalSignalDSL.g:6151:3: kw= 'extends'
                     {
                     kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -16328,7 +16738,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:5993:3: kw= 'static'
+                    // InternalSignalDSL.g:6157:3: kw= 'static'
                     {
                     kw=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -16341,7 +16751,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:5999:3: kw= 'import'
+                    // InternalSignalDSL.g:6163:3: kw= 'import'
                     {
                     kw=(Token)match(input,29,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -16354,7 +16764,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:6005:3: kw= 'extension'
+                    // InternalSignalDSL.g:6169:3: kw= 'extension'
                     {
                     kw=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -16391,7 +16801,7 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalSignalDSL.g:6014:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    // InternalSignalDSL.g:6178:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
     public final String entryRuleIdOrSuper() throws RecognitionException {
         String current = null;
 
@@ -16399,8 +16809,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6014:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
-            // InternalSignalDSL.g:6015:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
+            // InternalSignalDSL.g:6178:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalSignalDSL.g:6179:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getIdOrSuperRule()); 
@@ -16431,7 +16841,7 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalSignalDSL.g:6021:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
+    // InternalSignalDSL.g:6185:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
     public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -16443,29 +16853,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6027:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
-            // InternalSignalDSL.g:6028:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            // InternalSignalDSL.g:6191:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalSignalDSL.g:6192:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
             {
-            // InternalSignalDSL.g:6028:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
-            int alt97=2;
-            int LA97_0 = input.LA(1);
+            // InternalSignalDSL.g:6192:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            int alt100=2;
+            int LA100_0 = input.LA(1);
 
-            if ( (LA97_0==RULE_ID||(LA97_0>=29 && LA97_0<=31)||LA97_0==87) ) {
-                alt97=1;
+            if ( (LA100_0==RULE_ID||(LA100_0>=29 && LA100_0<=31)||LA100_0==87) ) {
+                alt100=1;
             }
-            else if ( (LA97_0==88) ) {
-                alt97=2;
+            else if ( (LA100_0==88) ) {
+                alt100=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 97, 0, input);
+                    new NoViableAltException("", 100, 0, input);
 
                 throw nvae;
             }
-            switch (alt97) {
+            switch (alt100) {
                 case 1 :
-                    // InternalSignalDSL.g:6029:3: this_FeatureCallID_0= ruleFeatureCallID
+                    // InternalSignalDSL.g:6193:3: this_FeatureCallID_0= ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16491,7 +16901,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:6040:3: kw= 'super'
+                    // InternalSignalDSL.g:6204:3: kw= 'super'
                     {
                     kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -16528,7 +16938,7 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalSignalDSL.g:6049:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    // InternalSignalDSL.g:6213:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
     public final EObject entryRuleXConstructorCall() throws RecognitionException {
         EObject current = null;
 
@@ -16536,8 +16946,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6049:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
-            // InternalSignalDSL.g:6050:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
+            // InternalSignalDSL.g:6213:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalSignalDSL.g:6214:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXConstructorCallRule()); 
@@ -16568,7 +16978,7 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalSignalDSL.g:6056:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
+    // InternalSignalDSL.g:6220:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
     public final EObject ruleXConstructorCall() throws RecognitionException {
         EObject current = null;
 
@@ -16596,14 +17006,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6062:2: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
-            // InternalSignalDSL.g:6063:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:6226:2: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
+            // InternalSignalDSL.g:6227:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
             {
-            // InternalSignalDSL.g:6063:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
-            // InternalSignalDSL.g:6064:3: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            // InternalSignalDSL.g:6227:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:6228:3: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
             {
-            // InternalSignalDSL.g:6064:3: ()
-            // InternalSignalDSL.g:6065:4: 
+            // InternalSignalDSL.g:6228:3: ()
+            // InternalSignalDSL.g:6229:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16621,11 +17031,11 @@
               			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6075:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:6076:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6239:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:6240:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:6076:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:6077:5: ruleQualifiedName
+            // InternalSignalDSL.g:6240:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6241:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -16639,7 +17049,7 @@
               					newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0());
               				
             }
-            pushFollow(FOLLOW_84);
+            pushFollow(FOLLOW_86);
             ruleQualifiedName();
 
             state._fsp--;
@@ -16655,17 +17065,17 @@
 
             }
 
-            // InternalSignalDSL.g:6091:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
-            int alt99=2;
-            alt99 = dfa99.predict(input);
-            switch (alt99) {
+            // InternalSignalDSL.g:6255:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            int alt102=2;
+            alt102 = dfa102.predict(input);
+            switch (alt102) {
                 case 1 :
-                    // InternalSignalDSL.g:6092:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    // InternalSignalDSL.g:6256:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
                     {
-                    // InternalSignalDSL.g:6092:4: ( ( '<' )=>otherlv_3= '<' )
-                    // InternalSignalDSL.g:6093:5: ( '<' )=>otherlv_3= '<'
+                    // InternalSignalDSL.g:6256:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalSignalDSL.g:6257:5: ( '<' )=>otherlv_3= '<'
                     {
-                    otherlv_3=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,48,FOLLOW_56); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
@@ -16674,18 +17084,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:6099:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    // InternalSignalDSL.g:6100:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:6263:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalSignalDSL.g:6264:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalSignalDSL.g:6100:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    // InternalSignalDSL.g:6101:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    // InternalSignalDSL.g:6264:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:6265:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_54);
+                    pushFollow(FOLLOW_57);
                     lv_typeArguments_4_0=ruleJvmArgumentTypeReference();
 
                     state._fsp--;
@@ -16709,39 +17119,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:6118:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
-                    loop98:
+                    // InternalSignalDSL.g:6282:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop101:
                     do {
-                        int alt98=2;
-                        int LA98_0 = input.LA(1);
+                        int alt101=2;
+                        int LA101_0 = input.LA(1);
 
-                        if ( (LA98_0==37) ) {
-                            alt98=1;
+                        if ( (LA101_0==37) ) {
+                            alt101=1;
                         }
 
 
-                        switch (alt98) {
+                        switch (alt101) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:6119:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:6283:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_5=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
+                    	    otherlv_5=(Token)match(input,37,FOLLOW_56); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:6123:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalSignalDSL.g:6124:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:6287:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:6288:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalSignalDSL.g:6124:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
-                    	    // InternalSignalDSL.g:6125:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    // InternalSignalDSL.g:6288:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:6289:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_54);
+                    	    pushFollow(FOLLOW_57);
                     	    lv_typeArguments_6_0=ruleJvmArgumentTypeReference();
 
                     	    state._fsp--;
@@ -16770,11 +17180,11 @@
                     	    break;
 
                     	default :
-                    	    break loop98;
+                    	    break loop101;
                         }
                     } while (true);
 
-                    otherlv_7=(Token)match(input,49,FOLLOW_82); if (state.failed) return current;
+                    otherlv_7=(Token)match(input,49,FOLLOW_84); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
@@ -16786,20 +17196,20 @@
 
             }
 
-            // InternalSignalDSL.g:6148:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
-            int alt102=2;
-            alt102 = dfa102.predict(input);
-            switch (alt102) {
+            // InternalSignalDSL.g:6312:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
+            int alt105=2;
+            alt105 = dfa105.predict(input);
+            switch (alt105) {
                 case 1 :
-                    // InternalSignalDSL.g:6149:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
+                    // InternalSignalDSL.g:6313:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
                     {
-                    // InternalSignalDSL.g:6149:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
-                    // InternalSignalDSL.g:6150:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalSignalDSL.g:6313:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalSignalDSL.g:6314:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
                     {
-                    // InternalSignalDSL.g:6154:5: (lv_explicitConstructorCall_8_0= '(' )
-                    // InternalSignalDSL.g:6155:6: lv_explicitConstructorCall_8_0= '('
+                    // InternalSignalDSL.g:6318:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalSignalDSL.g:6319:6: lv_explicitConstructorCall_8_0= '('
                     {
-                    lv_explicitConstructorCall_8_0=(Token)match(input,36,FOLLOW_56); if (state.failed) return current;
+                    lv_explicitConstructorCall_8_0=(Token)match(input,36,FOLLOW_59); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
@@ -16819,25 +17229,25 @@
 
                     }
 
-                    // InternalSignalDSL.g:6167:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
-                    int alt101=3;
-                    alt101 = dfa101.predict(input);
-                    switch (alt101) {
+                    // InternalSignalDSL.g:6331:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    int alt104=3;
+                    alt104 = dfa104.predict(input);
+                    switch (alt104) {
                         case 1 :
-                            // InternalSignalDSL.g:6168:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:6332:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                             {
-                            // InternalSignalDSL.g:6168:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
-                            // InternalSignalDSL.g:6169:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:6332:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:6333:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
                             {
-                            // InternalSignalDSL.g:6194:6: (lv_arguments_9_0= ruleXShortClosure )
-                            // InternalSignalDSL.g:6195:7: lv_arguments_9_0= ruleXShortClosure
+                            // InternalSignalDSL.g:6358:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:6359:7: lv_arguments_9_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
                               							newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0());
                               						
                             }
-                            pushFollow(FOLLOW_26);
+                            pushFollow(FOLLOW_29);
                             lv_arguments_9_0=ruleXShortClosure();
 
                             state._fsp--;
@@ -16865,23 +17275,23 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:6213:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:6377:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                             {
-                            // InternalSignalDSL.g:6213:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
-                            // InternalSignalDSL.g:6214:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            // InternalSignalDSL.g:6377:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:6378:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:6214:6: ( (lv_arguments_10_0= ruleXExpression ) )
-                            // InternalSignalDSL.g:6215:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalSignalDSL.g:6378:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:6379:7: (lv_arguments_10_0= ruleXExpression )
                             {
-                            // InternalSignalDSL.g:6215:7: (lv_arguments_10_0= ruleXExpression )
-                            // InternalSignalDSL.g:6216:8: lv_arguments_10_0= ruleXExpression
+                            // InternalSignalDSL.g:6379:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalSignalDSL.g:6380:8: lv_arguments_10_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
                               								newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0());
                               							
                             }
-                            pushFollow(FOLLOW_25);
+                            pushFollow(FOLLOW_28);
                             lv_arguments_10_0=ruleXExpression();
 
                             state._fsp--;
@@ -16905,39 +17315,39 @@
 
                             }
 
-                            // InternalSignalDSL.g:6233:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
-                            loop100:
+                            // InternalSignalDSL.g:6397:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            loop103:
                             do {
-                                int alt100=2;
-                                int LA100_0 = input.LA(1);
+                                int alt103=2;
+                                int LA103_0 = input.LA(1);
 
-                                if ( (LA100_0==37) ) {
-                                    alt100=1;
+                                if ( (LA103_0==37) ) {
+                                    alt103=1;
                                 }
 
 
-                                switch (alt100) {
+                                switch (alt103) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:6234:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:6398:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_11=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_11=(Token)match(input,37,FOLLOW_31); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:6238:7: ( (lv_arguments_12_0= ruleXExpression ) )
-                            	    // InternalSignalDSL.g:6239:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:6402:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:6403:8: (lv_arguments_12_0= ruleXExpression )
                             	    {
-                            	    // InternalSignalDSL.g:6239:8: (lv_arguments_12_0= ruleXExpression )
-                            	    // InternalSignalDSL.g:6240:9: lv_arguments_12_0= ruleXExpression
+                            	    // InternalSignalDSL.g:6403:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:6404:9: lv_arguments_12_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      									newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0());
                             	      								
                             	    }
-                            	    pushFollow(FOLLOW_25);
+                            	    pushFollow(FOLLOW_28);
                             	    lv_arguments_12_0=ruleXExpression();
 
                             	    state._fsp--;
@@ -16966,7 +17376,7 @@
                             	    break;
 
                             	default :
-                            	    break loop100;
+                            	    break loop103;
                                 }
                             } while (true);
 
@@ -16979,7 +17389,7 @@
 
                     }
 
-                    otherlv_13=(Token)match(input,38,FOLLOW_83); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,38,FOLLOW_85); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
@@ -16991,15 +17401,15 @@
 
             }
 
-            // InternalSignalDSL.g:6265:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
-            int alt103=2;
-            alt103 = dfa103.predict(input);
-            switch (alt103) {
+            // InternalSignalDSL.g:6429:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            int alt106=2;
+            alt106 = dfa106.predict(input);
+            switch (alt106) {
                 case 1 :
-                    // InternalSignalDSL.g:6266:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    // InternalSignalDSL.g:6430:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
                     {
-                    // InternalSignalDSL.g:6272:4: (lv_arguments_14_0= ruleXClosure )
-                    // InternalSignalDSL.g:6273:5: lv_arguments_14_0= ruleXClosure
+                    // InternalSignalDSL.g:6436:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalSignalDSL.g:6437:5: lv_arguments_14_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17058,7 +17468,7 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalSignalDSL.g:6294:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    // InternalSignalDSL.g:6458:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
     public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17066,8 +17476,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6294:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
-            // InternalSignalDSL.g:6295:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
+            // InternalSignalDSL.g:6458:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalSignalDSL.g:6459:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
@@ -17098,7 +17508,7 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalSignalDSL.g:6301:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
+    // InternalSignalDSL.g:6465:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
     public final EObject ruleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17109,14 +17519,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6307:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
-            // InternalSignalDSL.g:6308:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalSignalDSL.g:6471:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalSignalDSL.g:6472:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
             {
-            // InternalSignalDSL.g:6308:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
-            // InternalSignalDSL.g:6309:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            // InternalSignalDSL.g:6472:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalSignalDSL.g:6473:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
             {
-            // InternalSignalDSL.g:6309:3: ()
-            // InternalSignalDSL.g:6310:4: 
+            // InternalSignalDSL.g:6473:3: ()
+            // InternalSignalDSL.g:6474:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17128,26 +17538,26 @@
 
             }
 
-            // InternalSignalDSL.g:6316:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
-            int alt104=2;
-            int LA104_0 = input.LA(1);
+            // InternalSignalDSL.g:6480:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            int alt107=2;
+            int LA107_0 = input.LA(1);
 
-            if ( (LA104_0==90) ) {
-                alt104=1;
+            if ( (LA107_0==90) ) {
+                alt107=1;
             }
-            else if ( (LA104_0==91) ) {
-                alt104=2;
+            else if ( (LA107_0==91) ) {
+                alt107=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 104, 0, input);
+                    new NoViableAltException("", 107, 0, input);
 
                 throw nvae;
             }
-            switch (alt104) {
+            switch (alt107) {
                 case 1 :
-                    // InternalSignalDSL.g:6317:4: otherlv_1= 'false'
+                    // InternalSignalDSL.g:6481:4: otherlv_1= 'false'
                     {
                     otherlv_1=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -17159,13 +17569,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:6322:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalSignalDSL.g:6486:4: ( (lv_isTrue_2_0= 'true' ) )
                     {
-                    // InternalSignalDSL.g:6322:4: ( (lv_isTrue_2_0= 'true' ) )
-                    // InternalSignalDSL.g:6323:5: (lv_isTrue_2_0= 'true' )
+                    // InternalSignalDSL.g:6486:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalSignalDSL.g:6487:5: (lv_isTrue_2_0= 'true' )
                     {
-                    // InternalSignalDSL.g:6323:5: (lv_isTrue_2_0= 'true' )
-                    // InternalSignalDSL.g:6324:6: lv_isTrue_2_0= 'true'
+                    // InternalSignalDSL.g:6487:5: (lv_isTrue_2_0= 'true' )
+                    // InternalSignalDSL.g:6488:6: lv_isTrue_2_0= 'true'
                     {
                     lv_isTrue_2_0=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -17218,7 +17628,7 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalSignalDSL.g:6341:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    // InternalSignalDSL.g:6505:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
     public final EObject entryRuleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17226,8 +17636,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6341:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
-            // InternalSignalDSL.g:6342:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
+            // InternalSignalDSL.g:6505:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalSignalDSL.g:6506:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNullLiteralRule()); 
@@ -17258,7 +17668,7 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalSignalDSL.g:6348:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    // InternalSignalDSL.g:6512:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
     public final EObject ruleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17268,14 +17678,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6354:2: ( ( () otherlv_1= 'null' ) )
-            // InternalSignalDSL.g:6355:2: ( () otherlv_1= 'null' )
+            // InternalSignalDSL.g:6518:2: ( ( () otherlv_1= 'null' ) )
+            // InternalSignalDSL.g:6519:2: ( () otherlv_1= 'null' )
             {
-            // InternalSignalDSL.g:6355:2: ( () otherlv_1= 'null' )
-            // InternalSignalDSL.g:6356:3: () otherlv_1= 'null'
+            // InternalSignalDSL.g:6519:2: ( () otherlv_1= 'null' )
+            // InternalSignalDSL.g:6520:3: () otherlv_1= 'null'
             {
-            // InternalSignalDSL.g:6356:3: ()
-            // InternalSignalDSL.g:6357:4: 
+            // InternalSignalDSL.g:6520:3: ()
+            // InternalSignalDSL.g:6521:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17318,7 +17728,7 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalSignalDSL.g:6371:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    // InternalSignalDSL.g:6535:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
     public final EObject entryRuleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17326,8 +17736,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6371:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
-            // InternalSignalDSL.g:6372:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
+            // InternalSignalDSL.g:6535:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalSignalDSL.g:6536:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNumberLiteralRule()); 
@@ -17358,7 +17768,7 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalSignalDSL.g:6378:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
+    // InternalSignalDSL.g:6542:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
     public final EObject ruleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17369,14 +17779,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6384:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
-            // InternalSignalDSL.g:6385:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalSignalDSL.g:6548:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalSignalDSL.g:6549:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
             {
-            // InternalSignalDSL.g:6385:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
-            // InternalSignalDSL.g:6386:3: () ( (lv_value_1_0= ruleNumber ) )
+            // InternalSignalDSL.g:6549:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalSignalDSL.g:6550:3: () ( (lv_value_1_0= ruleNumber ) )
             {
-            // InternalSignalDSL.g:6386:3: ()
-            // InternalSignalDSL.g:6387:4: 
+            // InternalSignalDSL.g:6550:3: ()
+            // InternalSignalDSL.g:6551:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17388,11 +17798,11 @@
 
             }
 
-            // InternalSignalDSL.g:6393:3: ( (lv_value_1_0= ruleNumber ) )
-            // InternalSignalDSL.g:6394:4: (lv_value_1_0= ruleNumber )
+            // InternalSignalDSL.g:6557:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalSignalDSL.g:6558:4: (lv_value_1_0= ruleNumber )
             {
-            // InternalSignalDSL.g:6394:4: (lv_value_1_0= ruleNumber )
-            // InternalSignalDSL.g:6395:5: lv_value_1_0= ruleNumber
+            // InternalSignalDSL.g:6558:4: (lv_value_1_0= ruleNumber )
+            // InternalSignalDSL.g:6559:5: lv_value_1_0= ruleNumber
             {
             if ( state.backtracking==0 ) {
 
@@ -17448,7 +17858,7 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalSignalDSL.g:6416:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    // InternalSignalDSL.g:6580:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
     public final EObject entryRuleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17456,8 +17866,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6416:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
-            // InternalSignalDSL.g:6417:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
+            // InternalSignalDSL.g:6580:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalSignalDSL.g:6581:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXStringLiteralRule()); 
@@ -17488,7 +17898,7 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalSignalDSL.g:6423:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
+    // InternalSignalDSL.g:6587:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
     public final EObject ruleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17498,14 +17908,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6429:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
-            // InternalSignalDSL.g:6430:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:6593:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalSignalDSL.g:6594:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
             {
-            // InternalSignalDSL.g:6430:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
-            // InternalSignalDSL.g:6431:3: () ( (lv_value_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:6594:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:6595:3: () ( (lv_value_1_0= RULE_STRING ) )
             {
-            // InternalSignalDSL.g:6431:3: ()
-            // InternalSignalDSL.g:6432:4: 
+            // InternalSignalDSL.g:6595:3: ()
+            // InternalSignalDSL.g:6596:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17517,11 +17927,11 @@
 
             }
 
-            // InternalSignalDSL.g:6438:3: ( (lv_value_1_0= RULE_STRING ) )
-            // InternalSignalDSL.g:6439:4: (lv_value_1_0= RULE_STRING )
+            // InternalSignalDSL.g:6602:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:6603:4: (lv_value_1_0= RULE_STRING )
             {
-            // InternalSignalDSL.g:6439:4: (lv_value_1_0= RULE_STRING )
-            // InternalSignalDSL.g:6440:5: lv_value_1_0= RULE_STRING
+            // InternalSignalDSL.g:6603:4: (lv_value_1_0= RULE_STRING )
+            // InternalSignalDSL.g:6604:5: lv_value_1_0= RULE_STRING
             {
             lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -17572,7 +17982,7 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalSignalDSL.g:6460:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    // InternalSignalDSL.g:6624:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
     public final EObject entryRuleXTypeLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17580,8 +17990,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6460:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
-            // InternalSignalDSL.g:6461:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
+            // InternalSignalDSL.g:6624:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalSignalDSL.g:6625:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
@@ -17612,7 +18022,7 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalSignalDSL.g:6467:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
+    // InternalSignalDSL.g:6631:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
     public final EObject ruleXTypeLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -17626,14 +18036,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6473:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
-            // InternalSignalDSL.g:6474:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalSignalDSL.g:6637:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalSignalDSL.g:6638:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
             {
-            // InternalSignalDSL.g:6474:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
-            // InternalSignalDSL.g:6475:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            // InternalSignalDSL.g:6638:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalSignalDSL.g:6639:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
             {
-            // InternalSignalDSL.g:6475:3: ()
-            // InternalSignalDSL.g:6476:4: 
+            // InternalSignalDSL.g:6639:3: ()
+            // InternalSignalDSL.g:6640:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17645,7 +18055,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,93,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,93,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
@@ -17657,11 +18067,11 @@
               			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:6490:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:6491:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6654:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:6655:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:6491:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:6492:5: ruleQualifiedName
+            // InternalSignalDSL.g:6655:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6656:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -17675,7 +18085,7 @@
               					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0());
               				
             }
-            pushFollow(FOLLOW_85);
+            pushFollow(FOLLOW_87);
             ruleQualifiedName();
 
             state._fsp--;
@@ -17691,30 +18101,30 @@
 
             }
 
-            // InternalSignalDSL.g:6506:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
-            loop105:
+            // InternalSignalDSL.g:6670:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            loop108:
             do {
-                int alt105=2;
-                int LA105_0 = input.LA(1);
+                int alt108=2;
+                int LA108_0 = input.LA(1);
 
-                if ( (LA105_0==41) ) {
-                    alt105=1;
+                if ( (LA108_0==41) ) {
+                    alt108=1;
                 }
 
 
-                switch (alt105) {
+                switch (alt108) {
             	case 1 :
-            	    // InternalSignalDSL.g:6507:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalSignalDSL.g:6671:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
             	    {
-            	    // InternalSignalDSL.g:6507:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
-            	    // InternalSignalDSL.g:6508:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    // InternalSignalDSL.g:6671:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalSignalDSL.g:6672:5: lv_arrayDimensions_4_0= ruleArrayBrackets
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
             	      				
             	    }
-            	    pushFollow(FOLLOW_85);
+            	    pushFollow(FOLLOW_87);
             	    lv_arrayDimensions_4_0=ruleArrayBrackets();
 
             	    state._fsp--;
@@ -17740,7 +18150,7 @@
             	    break;
 
             	default :
-            	    break loop105;
+            	    break loop108;
                 }
             } while (true);
 
@@ -17775,7 +18185,7 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalSignalDSL.g:6533:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    // InternalSignalDSL.g:6697:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
     public final EObject entryRuleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17783,8 +18193,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6533:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
-            // InternalSignalDSL.g:6534:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
+            // InternalSignalDSL.g:6697:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalSignalDSL.g:6698:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
@@ -17815,7 +18225,7 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalSignalDSL.g:6540:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:6704:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
     public final EObject ruleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17827,14 +18237,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6546:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:6547:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6710:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:6711:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:6547:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:6548:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6711:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6712:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:6548:3: ()
-            // InternalSignalDSL.g:6549:4: 
+            // InternalSignalDSL.g:6712:3: ()
+            // InternalSignalDSL.g:6713:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17846,17 +18256,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,94,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,94,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6559:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6560:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6723:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6724:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6560:4: (lv_expression_2_0= ruleXExpression )
-            // InternalSignalDSL.g:6561:5: lv_expression_2_0= ruleXExpression
+            // InternalSignalDSL.g:6724:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6725:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17912,7 +18322,7 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalSignalDSL.g:6582:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    // InternalSignalDSL.g:6746:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
     public final EObject entryRuleXReturnExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17920,8 +18330,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6582:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
-            // InternalSignalDSL.g:6583:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
+            // InternalSignalDSL.g:6746:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalSignalDSL.g:6747:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
@@ -17952,7 +18362,7 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalSignalDSL.g:6589:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
+    // InternalSignalDSL.g:6753:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
     public final EObject ruleXReturnExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17964,14 +18374,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6595:2: ( ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) )
-            // InternalSignalDSL.g:6596:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            // InternalSignalDSL.g:6759:2: ( ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) )
+            // InternalSignalDSL.g:6760:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
             {
-            // InternalSignalDSL.g:6596:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
-            // InternalSignalDSL.g:6597:3: () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            // InternalSignalDSL.g:6760:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            // InternalSignalDSL.g:6761:3: () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
             {
-            // InternalSignalDSL.g:6597:3: ()
-            // InternalSignalDSL.g:6598:4: 
+            // InternalSignalDSL.g:6761:3: ()
+            // InternalSignalDSL.g:6762:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17983,21 +18393,21 @@
 
             }
 
-            otherlv_1=(Token)match(input,95,FOLLOW_86); if (state.failed) return current;
+            otherlv_1=(Token)match(input,95,FOLLOW_88); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6608:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
-            int alt106=2;
-            alt106 = dfa106.predict(input);
-            switch (alt106) {
+            // InternalSignalDSL.g:6772:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            int alt109=2;
+            alt109 = dfa109.predict(input);
+            switch (alt109) {
                 case 1 :
-                    // InternalSignalDSL.g:6609:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression )
+                    // InternalSignalDSL.g:6773:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:6610:4: (lv_expression_2_0= ruleXExpression )
-                    // InternalSignalDSL.g:6611:5: lv_expression_2_0= ruleXExpression
+                    // InternalSignalDSL.g:6774:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalSignalDSL.g:6775:5: lv_expression_2_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18056,7 +18466,7 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:6632:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    // InternalSignalDSL.g:6796:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
     public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18064,8 +18474,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6632:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
-            // InternalSignalDSL.g:6633:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
+            // InternalSignalDSL.g:6796:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalSignalDSL.g:6797:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -18096,7 +18506,7 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:6639:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
+    // InternalSignalDSL.g:6803:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
     public final EObject ruleXTryCatchFinallyExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18116,14 +18526,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6645:2: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
-            // InternalSignalDSL.g:6646:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            // InternalSignalDSL.g:6809:2: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
+            // InternalSignalDSL.g:6810:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
             {
-            // InternalSignalDSL.g:6646:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
-            // InternalSignalDSL.g:6647:3: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:6810:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            // InternalSignalDSL.g:6811:3: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
             {
-            // InternalSignalDSL.g:6647:3: ()
-            // InternalSignalDSL.g:6648:4: 
+            // InternalSignalDSL.g:6811:3: ()
+            // InternalSignalDSL.g:6812:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -18135,24 +18545,24 @@
 
             }
 
-            otherlv_1=(Token)match(input,96,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,96,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6658:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6659:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6822:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6823:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6659:4: (lv_expression_2_0= ruleXExpression )
-            // InternalSignalDSL.g:6660:5: lv_expression_2_0= ruleXExpression
+            // InternalSignalDSL.g:6823:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6824:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_89);
             lv_expression_2_0=ruleXExpression();
 
             state._fsp--;
@@ -18176,61 +18586,61 @@
 
             }
 
-            // InternalSignalDSL.g:6677:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
-            int alt109=2;
-            int LA109_0 = input.LA(1);
+            // InternalSignalDSL.g:6841:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            int alt112=2;
+            int LA112_0 = input.LA(1);
 
-            if ( (LA109_0==99) ) {
-                alt109=1;
+            if ( (LA112_0==99) ) {
+                alt112=1;
             }
-            else if ( (LA109_0==97) ) {
-                alt109=2;
+            else if ( (LA112_0==97) ) {
+                alt112=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 109, 0, input);
+                    new NoViableAltException("", 112, 0, input);
 
                 throw nvae;
             }
-            switch (alt109) {
+            switch (alt112) {
                 case 1 :
-                    // InternalSignalDSL.g:6678:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalSignalDSL.g:6842:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                     {
-                    // InternalSignalDSL.g:6678:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
-                    // InternalSignalDSL.g:6679:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    // InternalSignalDSL.g:6842:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalSignalDSL.g:6843:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                     {
-                    // InternalSignalDSL.g:6679:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
-                    int cnt107=0;
-                    loop107:
+                    // InternalSignalDSL.g:6843:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    int cnt110=0;
+                    loop110:
                     do {
-                        int alt107=2;
-                        int LA107_0 = input.LA(1);
+                        int alt110=2;
+                        int LA110_0 = input.LA(1);
 
-                        if ( (LA107_0==99) ) {
-                            int LA107_2 = input.LA(2);
+                        if ( (LA110_0==99) ) {
+                            int LA110_2 = input.LA(2);
 
                             if ( (synpred44_InternalSignalDSL()) ) {
-                                alt107=1;
+                                alt110=1;
                             }
 
 
                         }
 
 
-                        switch (alt107) {
+                        switch (alt110) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:6680:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalSignalDSL.g:6844:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
                     	    {
-                    	    // InternalSignalDSL.g:6681:6: (lv_catchClauses_3_0= ruleXCatchClause )
-                    	    // InternalSignalDSL.g:6682:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    // InternalSignalDSL.g:6845:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalSignalDSL.g:6846:7: lv_catchClauses_3_0= ruleXCatchClause
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_88);
+                    	    pushFollow(FOLLOW_90);
                     	    lv_catchClauses_3_0=ruleXCatchClause();
 
                     	    state._fsp--;
@@ -18256,34 +18666,34 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt107 >= 1 ) break loop107;
+                    	    if ( cnt110 >= 1 ) break loop110;
                     	    if (state.backtracking>0) {state.failed=true; return current;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(107, input);
+                                    new EarlyExitException(110, input);
                                 throw eee;
                         }
-                        cnt107++;
+                        cnt110++;
                     } while (true);
 
-                    // InternalSignalDSL.g:6699:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
-                    int alt108=2;
-                    int LA108_0 = input.LA(1);
+                    // InternalSignalDSL.g:6863:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    int alt111=2;
+                    int LA111_0 = input.LA(1);
 
-                    if ( (LA108_0==97) ) {
-                        int LA108_1 = input.LA(2);
+                    if ( (LA111_0==97) ) {
+                        int LA111_1 = input.LA(2);
 
                         if ( (synpred45_InternalSignalDSL()) ) {
-                            alt108=1;
+                            alt111=1;
                         }
                     }
-                    switch (alt108) {
+                    switch (alt111) {
                         case 1 :
-                            // InternalSignalDSL.g:6700:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:6864:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
                             {
-                            // InternalSignalDSL.g:6700:6: ( ( 'finally' )=>otherlv_4= 'finally' )
-                            // InternalSignalDSL.g:6701:7: ( 'finally' )=>otherlv_4= 'finally'
+                            // InternalSignalDSL.g:6864:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalSignalDSL.g:6865:7: ( 'finally' )=>otherlv_4= 'finally'
                             {
-                            otherlv_4=(Token)match(input,97,FOLLOW_28); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,97,FOLLOW_31); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
@@ -18292,11 +18702,11 @@
 
                             }
 
-                            // InternalSignalDSL.g:6707:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
-                            // InternalSignalDSL.g:6708:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalSignalDSL.g:6871:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:6872:7: (lv_finallyExpression_5_0= ruleXExpression )
                             {
-                            // InternalSignalDSL.g:6708:7: (lv_finallyExpression_5_0= ruleXExpression )
-                            // InternalSignalDSL.g:6709:8: lv_finallyExpression_5_0= ruleXExpression
+                            // InternalSignalDSL.g:6872:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalSignalDSL.g:6873:8: lv_finallyExpression_5_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -18340,22 +18750,22 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:6729:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:6893:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                     {
-                    // InternalSignalDSL.g:6729:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
-                    // InternalSignalDSL.g:6730:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:6893:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:6894:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,97,FOLLOW_28); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,97,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
                       				
                     }
-                    // InternalSignalDSL.g:6734:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:6735:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:6898:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:6899:6: (lv_finallyExpression_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:6735:6: (lv_finallyExpression_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:6736:7: lv_finallyExpression_7_0= ruleXExpression
+                    // InternalSignalDSL.g:6899:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:6900:7: lv_finallyExpression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18420,7 +18830,7 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalSignalDSL.g:6759:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    // InternalSignalDSL.g:6923:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
     public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18428,8 +18838,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6759:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
-            // InternalSignalDSL.g:6760:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
+            // InternalSignalDSL.g:6923:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalSignalDSL.g:6924:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -18460,7 +18870,7 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalSignalDSL.g:6766:1: ruleXSynchronizedExpression returns [EObject current=null] : ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:6930:1: ruleXSynchronizedExpression returns [EObject current=null] : ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXSynchronizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -18476,20 +18886,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6772:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:6773:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6936:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:6937:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:6773:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:6774:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6937:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6938:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:6774:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
-            // InternalSignalDSL.g:6775:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalSignalDSL.g:6938:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalSignalDSL.g:6939:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
             {
-            // InternalSignalDSL.g:6782:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
-            // InternalSignalDSL.g:6783:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            // InternalSignalDSL.g:6946:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalSignalDSL.g:6947:5: () otherlv_1= 'synchronized' otherlv_2= '('
             {
-            // InternalSignalDSL.g:6783:5: ()
-            // InternalSignalDSL.g:6784:6: 
+            // InternalSignalDSL.g:6947:5: ()
+            // InternalSignalDSL.g:6948:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -18501,13 +18911,13 @@
 
             }
 
-            otherlv_1=(Token)match(input,98,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,98,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
@@ -18519,18 +18929,18 @@
 
             }
 
-            // InternalSignalDSL.g:6800:3: ( (lv_param_3_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6801:4: (lv_param_3_0= ruleXExpression )
+            // InternalSignalDSL.g:6964:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6965:4: (lv_param_3_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6801:4: (lv_param_3_0= ruleXExpression )
-            // InternalSignalDSL.g:6802:5: lv_param_3_0= ruleXExpression
+            // InternalSignalDSL.g:6965:4: (lv_param_3_0= ruleXExpression )
+            // InternalSignalDSL.g:6966:5: lv_param_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0());
               				
             }
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             lv_param_3_0=ruleXExpression();
 
             state._fsp--;
@@ -18554,17 +18964,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,38,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:6823:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6824:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:6987:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6988:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6824:4: (lv_expression_5_0= ruleXExpression )
-            // InternalSignalDSL.g:6825:5: lv_expression_5_0= ruleXExpression
+            // InternalSignalDSL.g:6988:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:6989:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -18620,7 +19030,7 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalSignalDSL.g:6846:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    // InternalSignalDSL.g:7010:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
     public final EObject entryRuleXCatchClause() throws RecognitionException {
         EObject current = null;
 
@@ -18628,8 +19038,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6846:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
-            // InternalSignalDSL.g:6847:2: iv_ruleXCatchClause= ruleXCatchClause EOF
+            // InternalSignalDSL.g:7010:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalSignalDSL.g:7011:2: iv_ruleXCatchClause= ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCatchClauseRule()); 
@@ -18660,7 +19070,7 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalSignalDSL.g:6853:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:7017:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
     public final EObject ruleXCatchClause() throws RecognitionException {
         EObject current = null;
 
@@ -18676,16 +19086,16 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6859:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:6860:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:7023:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:7024:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:6860:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:6861:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalSignalDSL.g:7024:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:7025:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:6861:3: ( ( 'catch' )=>otherlv_0= 'catch' )
-            // InternalSignalDSL.g:6862:4: ( 'catch' )=>otherlv_0= 'catch'
+            // InternalSignalDSL.g:7025:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalSignalDSL.g:7026:4: ( 'catch' )=>otherlv_0= 'catch'
             {
-            otherlv_0=(Token)match(input,99,FOLLOW_66); if (state.failed) return current;
+            otherlv_0=(Token)match(input,99,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
@@ -18694,24 +19104,24 @@
 
             }
 
-            otherlv_1=(Token)match(input,36,FOLLOW_41); if (state.failed) return current;
+            otherlv_1=(Token)match(input,36,FOLLOW_44); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6872:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
-            // InternalSignalDSL.g:6873:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:7036:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalSignalDSL.g:7037:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
             {
-            // InternalSignalDSL.g:6873:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
-            // InternalSignalDSL.g:6874:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            // InternalSignalDSL.g:7037:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:7038:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_26);
+            pushFollow(FOLLOW_29);
             lv_declaredParam_2_0=ruleFullJvmFormalParameter();
 
             state._fsp--;
@@ -18735,17 +19145,17 @@
 
             }
 
-            otherlv_3=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
+            otherlv_3=(Token)match(input,38,FOLLOW_31); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
               		
             }
-            // InternalSignalDSL.g:6895:3: ( (lv_expression_4_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6896:4: (lv_expression_4_0= ruleXExpression )
+            // InternalSignalDSL.g:7059:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalSignalDSL.g:7060:4: (lv_expression_4_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6896:4: (lv_expression_4_0= ruleXExpression )
-            // InternalSignalDSL.g:6897:5: lv_expression_4_0= ruleXExpression
+            // InternalSignalDSL.g:7060:4: (lv_expression_4_0= ruleXExpression )
+            // InternalSignalDSL.g:7061:5: lv_expression_4_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -18801,7 +19211,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalSignalDSL.g:6918:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    // InternalSignalDSL.g:7082:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
     public final String entryRuleQualifiedName() throws RecognitionException {
         String current = null;
 
@@ -18809,8 +19219,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6918:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
-            // InternalSignalDSL.g:6919:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+            // InternalSignalDSL.g:7082:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalSignalDSL.g:7083:2: iv_ruleQualifiedName= ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameRule()); 
@@ -18841,7 +19251,7 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalSignalDSL.g:6925:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
+    // InternalSignalDSL.g:7089:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
     public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -18855,18 +19265,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6931:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
-            // InternalSignalDSL.g:6932:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalSignalDSL.g:7095:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalSignalDSL.g:7096:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
             {
-            // InternalSignalDSL.g:6932:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            // InternalSignalDSL.g:6933:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            // InternalSignalDSL.g:7096:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalSignalDSL.g:7097:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_89);
+            pushFollow(FOLLOW_91);
             this_ValidID_0=ruleValidID();
 
             state._fsp--;
@@ -18881,20 +19291,20 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:6943:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
-            loop110:
+            // InternalSignalDSL.g:7107:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            loop113:
             do {
-                int alt110=2;
-                int LA110_0 = input.LA(1);
+                int alt113=2;
+                int LA113_0 = input.LA(1);
 
-                if ( (LA110_0==73) ) {
-                    int LA110_2 = input.LA(2);
+                if ( (LA113_0==73) ) {
+                    int LA113_2 = input.LA(2);
 
-                    if ( (LA110_2==RULE_ID) ) {
-                        int LA110_3 = input.LA(3);
+                    if ( (LA113_2==RULE_ID) ) {
+                        int LA113_3 = input.LA(3);
 
                         if ( (synpred48_InternalSignalDSL()) ) {
-                            alt110=1;
+                            alt113=1;
                         }
 
 
@@ -18904,12 +19314,12 @@
                 }
 
 
-                switch (alt110) {
+                switch (alt113) {
             	case 1 :
-            	    // InternalSignalDSL.g:6944:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    // InternalSignalDSL.g:7108:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
             	    {
-            	    // InternalSignalDSL.g:6944:4: ( ( '.' )=>kw= '.' )
-            	    // InternalSignalDSL.g:6945:5: ( '.' )=>kw= '.'
+            	    // InternalSignalDSL.g:7108:4: ( ( '.' )=>kw= '.' )
+            	    // InternalSignalDSL.g:7109:5: ( '.' )=>kw= '.'
             	    {
             	    kw=(Token)match(input,73,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
@@ -18926,7 +19336,7 @@
             	      				newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
             	      			
             	    }
-            	    pushFollow(FOLLOW_89);
+            	    pushFollow(FOLLOW_91);
             	    this_ValidID_2=ruleValidID();
 
             	    state._fsp--;
@@ -18946,7 +19356,7 @@
             	    break;
 
             	default :
-            	    break loop110;
+            	    break loop113;
                 }
             } while (true);
 
@@ -18975,7 +19385,7 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalSignalDSL.g:6967:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
+    // InternalSignalDSL.g:7131:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
     public final String entryRuleNumber() throws RecognitionException {
         String current = null;
 
@@ -18986,8 +19396,8 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalSignalDSL.g:6969:2: (iv_ruleNumber= ruleNumber EOF )
-            // InternalSignalDSL.g:6970:2: iv_ruleNumber= ruleNumber EOF
+            // InternalSignalDSL.g:7133:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalSignalDSL.g:7134:2: iv_ruleNumber= ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNumberRule()); 
@@ -19021,7 +19431,7 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalSignalDSL.g:6979:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
+    // InternalSignalDSL.g:7143:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
     public final AntlrDatatypeRuleToken ruleNumber() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -19037,29 +19447,29 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalSignalDSL.g:6986:2: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
-            // InternalSignalDSL.g:6987:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            // InternalSignalDSL.g:7150:2: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
+            // InternalSignalDSL.g:7151:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
             {
-            // InternalSignalDSL.g:6987:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
-            int alt114=2;
-            int LA114_0 = input.LA(1);
+            // InternalSignalDSL.g:7151:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            int alt117=2;
+            int LA117_0 = input.LA(1);
 
-            if ( (LA114_0==RULE_HEX) ) {
-                alt114=1;
+            if ( (LA117_0==RULE_HEX) ) {
+                alt117=1;
             }
-            else if ( (LA114_0==RULE_INT||LA114_0==RULE_DECIMAL) ) {
-                alt114=2;
+            else if ( (LA117_0==RULE_INT||LA117_0==RULE_DECIMAL) ) {
+                alt117=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 114, 0, input);
+                    new NoViableAltException("", 117, 0, input);
 
                 throw nvae;
             }
-            switch (alt114) {
+            switch (alt117) {
                 case 1 :
-                    // InternalSignalDSL.g:6988:3: this_HEX_0= RULE_HEX
+                    // InternalSignalDSL.g:7152:3: this_HEX_0= RULE_HEX
                     {
                     this_HEX_0=(Token)match(input,RULE_HEX,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -19076,33 +19486,33 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:6996:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalSignalDSL.g:7160:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
                     {
-                    // InternalSignalDSL.g:6996:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
-                    // InternalSignalDSL.g:6997:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    // InternalSignalDSL.g:7160:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalSignalDSL.g:7161:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                     {
-                    // InternalSignalDSL.g:6997:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
-                    int alt111=2;
-                    int LA111_0 = input.LA(1);
+                    // InternalSignalDSL.g:7161:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    int alt114=2;
+                    int LA114_0 = input.LA(1);
 
-                    if ( (LA111_0==RULE_INT) ) {
-                        alt111=1;
+                    if ( (LA114_0==RULE_INT) ) {
+                        alt114=1;
                     }
-                    else if ( (LA111_0==RULE_DECIMAL) ) {
-                        alt111=2;
+                    else if ( (LA114_0==RULE_DECIMAL) ) {
+                        alt114=2;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 111, 0, input);
+                            new NoViableAltException("", 114, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt111) {
+                    switch (alt114) {
                         case 1 :
-                            // InternalSignalDSL.g:6998:5: this_INT_1= RULE_INT
+                            // InternalSignalDSL.g:7162:5: this_INT_1= RULE_INT
                             {
-                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_89); if (state.failed) return current;
+                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_91); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(this_INT_1);
@@ -19117,9 +19527,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:7006:5: this_DECIMAL_2= RULE_DECIMAL
+                            // InternalSignalDSL.g:7170:5: this_DECIMAL_2= RULE_DECIMAL
                             {
-                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_89); if (state.failed) return current;
+                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_91); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(this_DECIMAL_2);
@@ -19136,48 +19546,48 @@
 
                     }
 
-                    // InternalSignalDSL.g:7014:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
-                    int alt113=2;
-                    int LA113_0 = input.LA(1);
+                    // InternalSignalDSL.g:7178:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    int alt116=2;
+                    int LA116_0 = input.LA(1);
 
-                    if ( (LA113_0==73) ) {
-                        int LA113_1 = input.LA(2);
+                    if ( (LA116_0==73) ) {
+                        int LA116_1 = input.LA(2);
 
-                        if ( (LA113_1==RULE_INT||LA113_1==RULE_DECIMAL) ) {
-                            alt113=1;
+                        if ( (LA116_1==RULE_INT||LA116_1==RULE_DECIMAL) ) {
+                            alt116=1;
                         }
                     }
-                    switch (alt113) {
+                    switch (alt116) {
                         case 1 :
-                            // InternalSignalDSL.g:7015:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            // InternalSignalDSL.g:7179:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                             {
-                            kw=(Token)match(input,73,FOLLOW_90); if (state.failed) return current;
+                            kw=(Token)match(input,73,FOLLOW_92); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
                               					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
                               				
                             }
-                            // InternalSignalDSL.g:7020:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
-                            int alt112=2;
-                            int LA112_0 = input.LA(1);
+                            // InternalSignalDSL.g:7184:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            int alt115=2;
+                            int LA115_0 = input.LA(1);
 
-                            if ( (LA112_0==RULE_INT) ) {
-                                alt112=1;
+                            if ( (LA115_0==RULE_INT) ) {
+                                alt115=1;
                             }
-                            else if ( (LA112_0==RULE_DECIMAL) ) {
-                                alt112=2;
+                            else if ( (LA115_0==RULE_DECIMAL) ) {
+                                alt115=2;
                             }
                             else {
                                 if (state.backtracking>0) {state.failed=true; return current;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("", 112, 0, input);
+                                    new NoViableAltException("", 115, 0, input);
 
                                 throw nvae;
                             }
-                            switch (alt112) {
+                            switch (alt115) {
                                 case 1 :
-                                    // InternalSignalDSL.g:7021:6: this_INT_4= RULE_INT
+                                    // InternalSignalDSL.g:7185:6: this_INT_4= RULE_INT
                                     {
                                     this_INT_4=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
                                     if ( state.backtracking==0 ) {
@@ -19194,7 +19604,7 @@
                                     }
                                     break;
                                 case 2 :
-                                    // InternalSignalDSL.g:7029:6: this_DECIMAL_5= RULE_DECIMAL
+                                    // InternalSignalDSL.g:7193:6: this_DECIMAL_5= RULE_DECIMAL
                                     {
                                     this_DECIMAL_5=(Token)match(input,RULE_DECIMAL,FOLLOW_2); if (state.failed) return current;
                                     if ( state.backtracking==0 ) {
@@ -19253,7 +19663,7 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalSignalDSL.g:7046:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    // InternalSignalDSL.g:7210:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
     public final EObject entryRuleJvmTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19261,8 +19671,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7046:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
-            // InternalSignalDSL.g:7047:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
+            // InternalSignalDSL.g:7210:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalSignalDSL.g:7211:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
@@ -19293,7 +19703,7 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalSignalDSL.g:7053:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
+    // InternalSignalDSL.g:7217:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
     public final EObject ruleJvmTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19306,39 +19716,39 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7059:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
-            // InternalSignalDSL.g:7060:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            // InternalSignalDSL.g:7223:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalSignalDSL.g:7224:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
             {
-            // InternalSignalDSL.g:7060:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
-            int alt116=2;
-            int LA116_0 = input.LA(1);
+            // InternalSignalDSL.g:7224:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            int alt119=2;
+            int LA119_0 = input.LA(1);
 
-            if ( (LA116_0==RULE_ID) ) {
-                alt116=1;
+            if ( (LA119_0==RULE_ID) ) {
+                alt119=1;
             }
-            else if ( (LA116_0==36||LA116_0==61) ) {
-                alt116=2;
+            else if ( (LA119_0==36||LA119_0==61) ) {
+                alt119=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 116, 0, input);
+                    new NoViableAltException("", 119, 0, input);
 
                 throw nvae;
             }
-            switch (alt116) {
+            switch (alt119) {
                 case 1 :
-                    // InternalSignalDSL.g:7061:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalSignalDSL.g:7225:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
                     {
-                    // InternalSignalDSL.g:7061:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
-                    // InternalSignalDSL.g:7062:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    // InternalSignalDSL.g:7225:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalSignalDSL.g:7226:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                     {
                     if ( state.backtracking==0 ) {
 
                       				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
                       			
                     }
-                    pushFollow(FOLLOW_83);
+                    pushFollow(FOLLOW_85);
                     this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
 
                     state._fsp--;
@@ -19349,20 +19759,20 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:7070:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
-                    loop115:
+                    // InternalSignalDSL.g:7234:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    loop118:
                     do {
-                        int alt115=2;
-                        int LA115_0 = input.LA(1);
+                        int alt118=2;
+                        int LA118_0 = input.LA(1);
 
-                        if ( (LA115_0==41) ) {
-                            int LA115_2 = input.LA(2);
+                        if ( (LA118_0==41) ) {
+                            int LA118_2 = input.LA(2);
 
-                            if ( (LA115_2==42) ) {
-                                int LA115_3 = input.LA(3);
+                            if ( (LA118_2==42) ) {
+                                int LA118_3 = input.LA(3);
 
                                 if ( (synpred49_InternalSignalDSL()) ) {
-                                    alt115=1;
+                                    alt118=1;
                                 }
 
 
@@ -19372,15 +19782,15 @@
                         }
 
 
-                        switch (alt115) {
+                        switch (alt118) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7071:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    // InternalSignalDSL.g:7235:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
                     	    {
-                    	    // InternalSignalDSL.g:7077:5: ( () ruleArrayBrackets )
-                    	    // InternalSignalDSL.g:7078:6: () ruleArrayBrackets
+                    	    // InternalSignalDSL.g:7241:5: ( () ruleArrayBrackets )
+                    	    // InternalSignalDSL.g:7242:6: () ruleArrayBrackets
                     	    {
-                    	    // InternalSignalDSL.g:7078:6: ()
-                    	    // InternalSignalDSL.g:7079:7: 
+                    	    // InternalSignalDSL.g:7242:6: ()
+                    	    // InternalSignalDSL.g:7243:7: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -19397,7 +19807,7 @@
                     	      						newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
                     	      					
                     	    }
-                    	    pushFollow(FOLLOW_83);
+                    	    pushFollow(FOLLOW_85);
                     	    ruleArrayBrackets();
 
                     	    state._fsp--;
@@ -19415,7 +19825,7 @@
                     	    break;
 
                     	default :
-                    	    break loop115;
+                    	    break loop118;
                         }
                     } while (true);
 
@@ -19426,7 +19836,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7096:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
+                    // InternalSignalDSL.g:7260:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19472,7 +19882,7 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalSignalDSL.g:7108:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    // InternalSignalDSL.g:7272:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
     public final String entryRuleArrayBrackets() throws RecognitionException {
         String current = null;
 
@@ -19480,8 +19890,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7108:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
-            // InternalSignalDSL.g:7109:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
+            // InternalSignalDSL.g:7272:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalSignalDSL.g:7273:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getArrayBracketsRule()); 
@@ -19512,7 +19922,7 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalSignalDSL.g:7115:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    // InternalSignalDSL.g:7279:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
     public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -19522,13 +19932,13 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7121:2: ( (kw= '[' kw= ']' ) )
-            // InternalSignalDSL.g:7122:2: (kw= '[' kw= ']' )
+            // InternalSignalDSL.g:7285:2: ( (kw= '[' kw= ']' ) )
+            // InternalSignalDSL.g:7286:2: (kw= '[' kw= ']' )
             {
-            // InternalSignalDSL.g:7122:2: (kw= '[' kw= ']' )
-            // InternalSignalDSL.g:7123:3: kw= '[' kw= ']'
+            // InternalSignalDSL.g:7286:2: (kw= '[' kw= ']' )
+            // InternalSignalDSL.g:7287:3: kw= '[' kw= ']'
             {
-            kw=(Token)match(input,41,FOLLOW_63); if (state.failed) return current;
+            kw=(Token)match(input,41,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -19567,7 +19977,7 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalSignalDSL.g:7137:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    // InternalSignalDSL.g:7301:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
     public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
         EObject current = null;
 
@@ -19575,8 +19985,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7137:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
-            // InternalSignalDSL.g:7138:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
+            // InternalSignalDSL.g:7301:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalSignalDSL.g:7302:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
@@ -19607,7 +20017,7 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalSignalDSL.g:7144:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7308:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleXFunctionTypeRef() throws RecognitionException {
         EObject current = null;
 
@@ -19626,52 +20036,52 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7150:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7151:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7314:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7315:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7151:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7152:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7315:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7316:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
             {
-            // InternalSignalDSL.g:7152:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
-            int alt119=2;
-            int LA119_0 = input.LA(1);
+            // InternalSignalDSL.g:7316:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            int alt122=2;
+            int LA122_0 = input.LA(1);
 
-            if ( (LA119_0==36) ) {
-                alt119=1;
+            if ( (LA122_0==36) ) {
+                alt122=1;
             }
-            switch (alt119) {
+            switch (alt122) {
                 case 1 :
-                    // InternalSignalDSL.g:7153:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    // InternalSignalDSL.g:7317:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
                     {
-                    otherlv_0=(Token)match(input,36,FOLLOW_91); if (state.failed) return current;
+                    otherlv_0=(Token)match(input,36,FOLLOW_93); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
                       			
                     }
-                    // InternalSignalDSL.g:7157:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
-                    int alt118=2;
-                    int LA118_0 = input.LA(1);
+                    // InternalSignalDSL.g:7321:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    int alt121=2;
+                    int LA121_0 = input.LA(1);
 
-                    if ( (LA118_0==RULE_ID||LA118_0==36||LA118_0==61) ) {
-                        alt118=1;
+                    if ( (LA121_0==RULE_ID||LA121_0==36||LA121_0==61) ) {
+                        alt121=1;
                     }
-                    switch (alt118) {
+                    switch (alt121) {
                         case 1 :
-                            // InternalSignalDSL.g:7158:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            // InternalSignalDSL.g:7322:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                             {
-                            // InternalSignalDSL.g:7158:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
-                            // InternalSignalDSL.g:7159:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalSignalDSL.g:7322:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalSignalDSL.g:7323:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
                             {
-                            // InternalSignalDSL.g:7159:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
-                            // InternalSignalDSL.g:7160:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            // InternalSignalDSL.g:7323:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalSignalDSL.g:7324:7: lv_paramTypes_1_0= ruleJvmTypeReference
                             {
                             if ( state.backtracking==0 ) {
 
                               							newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
                               						
                             }
-                            pushFollow(FOLLOW_25);
+                            pushFollow(FOLLOW_28);
                             lv_paramTypes_1_0=ruleJvmTypeReference();
 
                             state._fsp--;
@@ -19695,39 +20105,39 @@
 
                             }
 
-                            // InternalSignalDSL.g:7177:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
-                            loop117:
+                            // InternalSignalDSL.g:7341:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            loop120:
                             do {
-                                int alt117=2;
-                                int LA117_0 = input.LA(1);
+                                int alt120=2;
+                                int LA120_0 = input.LA(1);
 
-                                if ( (LA117_0==37) ) {
-                                    alt117=1;
+                                if ( (LA120_0==37) ) {
+                                    alt120=1;
                                 }
 
 
-                                switch (alt117) {
+                                switch (alt120) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:7178:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalSignalDSL.g:7342:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                             	    {
-                            	    otherlv_2=(Token)match(input,37,FOLLOW_41); if (state.failed) return current;
+                            	    otherlv_2=(Token)match(input,37,FOLLOW_44); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:7182:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
-                            	    // InternalSignalDSL.g:7183:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalSignalDSL.g:7346:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalSignalDSL.g:7347:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
                             	    {
-                            	    // InternalSignalDSL.g:7183:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
-                            	    // InternalSignalDSL.g:7184:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    // InternalSignalDSL.g:7347:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalSignalDSL.g:7348:8: lv_paramTypes_3_0= ruleJvmTypeReference
                             	    {
                             	    if ( state.backtracking==0 ) {
 
                             	      								newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
                             	      							
                             	    }
-                            	    pushFollow(FOLLOW_25);
+                            	    pushFollow(FOLLOW_28);
                             	    lv_paramTypes_3_0=ruleJvmTypeReference();
 
                             	    state._fsp--;
@@ -19756,7 +20166,7 @@
                             	    break;
 
                             	default :
-                            	    break loop117;
+                            	    break loop120;
                                 }
                             } while (true);
 
@@ -19766,7 +20176,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,38,FOLLOW_92); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,38,FOLLOW_94); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
@@ -19778,17 +20188,17 @@
 
             }
 
-            otherlv_5=(Token)match(input,61,FOLLOW_41); if (state.failed) return current;
+            otherlv_5=(Token)match(input,61,FOLLOW_44); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
               		
             }
-            // InternalSignalDSL.g:7212:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7213:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7376:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7377:4: (lv_returnType_6_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7213:4: (lv_returnType_6_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7214:5: lv_returnType_6_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7377:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7378:5: lv_returnType_6_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -19844,7 +20254,7 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:7235:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    // InternalSignalDSL.g:7399:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
     public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19852,8 +20262,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7235:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
-            // InternalSignalDSL.g:7236:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
+            // InternalSignalDSL.g:7399:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalSignalDSL.g:7400:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -19884,7 +20294,7 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:7242:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
+    // InternalSignalDSL.g:7406:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
     public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19908,17 +20318,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7248:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
-            // InternalSignalDSL.g:7249:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            // InternalSignalDSL.g:7412:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
+            // InternalSignalDSL.g:7413:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
             {
-            // InternalSignalDSL.g:7249:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
-            // InternalSignalDSL.g:7250:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            // InternalSignalDSL.g:7413:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            // InternalSignalDSL.g:7414:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
             {
-            // InternalSignalDSL.g:7250:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:7251:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:7414:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:7415:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:7251:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:7252:5: ruleQualifiedName
+            // InternalSignalDSL.g:7415:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:7416:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -19932,7 +20342,7 @@
               					newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
               				
             }
-            pushFollow(FOLLOW_93);
+            pushFollow(FOLLOW_95);
             ruleQualifiedName();
 
             state._fsp--;
@@ -19948,17 +20358,17 @@
 
             }
 
-            // InternalSignalDSL.g:7266:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
-            int alt124=2;
-            alt124 = dfa124.predict(input);
-            switch (alt124) {
+            // InternalSignalDSL.g:7430:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            int alt127=2;
+            alt127 = dfa127.predict(input);
+            switch (alt127) {
                 case 1 :
-                    // InternalSignalDSL.g:7267:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    // InternalSignalDSL.g:7431:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
                     {
-                    // InternalSignalDSL.g:7267:4: ( ( '<' )=>otherlv_1= '<' )
-                    // InternalSignalDSL.g:7268:5: ( '<' )=>otherlv_1= '<'
+                    // InternalSignalDSL.g:7431:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalSignalDSL.g:7432:5: ( '<' )=>otherlv_1= '<'
                     {
-                    otherlv_1=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,48,FOLLOW_56); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
@@ -19967,18 +20377,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:7274:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalSignalDSL.g:7275:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:7438:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalSignalDSL.g:7439:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalSignalDSL.g:7275:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalSignalDSL.g:7276:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalSignalDSL.g:7439:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:7440:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_54);
+                    pushFollow(FOLLOW_57);
                     lv_arguments_2_0=ruleJvmArgumentTypeReference();
 
                     state._fsp--;
@@ -20002,39 +20412,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:7293:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
-                    loop120:
+                    // InternalSignalDSL.g:7457:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop123:
                     do {
-                        int alt120=2;
-                        int LA120_0 = input.LA(1);
+                        int alt123=2;
+                        int LA123_0 = input.LA(1);
 
-                        if ( (LA120_0==37) ) {
-                            alt120=1;
+                        if ( (LA123_0==37) ) {
+                            alt123=1;
                         }
 
 
-                        switch (alt120) {
+                        switch (alt123) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7294:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:7458:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,37,FOLLOW_56); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:7298:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalSignalDSL.g:7299:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:7462:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:7463:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalSignalDSL.g:7299:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalSignalDSL.g:7300:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalSignalDSL.g:7463:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:7464:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_54);
+                    	    pushFollow(FOLLOW_57);
                     	    lv_arguments_4_0=ruleJvmArgumentTypeReference();
 
                     	    state._fsp--;
@@ -20063,30 +20473,30 @@
                     	    break;
 
                     	default :
-                    	    break loop120;
+                    	    break loop123;
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,49,FOLLOW_89); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,49,FOLLOW_91); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
                       			
                     }
-                    // InternalSignalDSL.g:7322:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
-                    loop123:
+                    // InternalSignalDSL.g:7486:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    loop126:
                     do {
-                        int alt123=2;
-                        int LA123_0 = input.LA(1);
+                        int alt126=2;
+                        int LA126_0 = input.LA(1);
 
-                        if ( (LA123_0==73) ) {
-                            int LA123_2 = input.LA(2);
+                        if ( (LA126_0==73) ) {
+                            int LA126_2 = input.LA(2);
 
-                            if ( (LA123_2==RULE_ID) ) {
-                                int LA123_3 = input.LA(3);
+                            if ( (LA126_2==RULE_ID) ) {
+                                int LA126_3 = input.LA(3);
 
                                 if ( (synpred51_InternalSignalDSL()) ) {
-                                    alt123=1;
+                                    alt126=1;
                                 }
 
 
@@ -20096,18 +20506,18 @@
                         }
 
 
-                        switch (alt123) {
+                        switch (alt126) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7323:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    // InternalSignalDSL.g:7487:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
                     	    {
-                    	    // InternalSignalDSL.g:7323:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
-                    	    // InternalSignalDSL.g:7324:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    // InternalSignalDSL.g:7487:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalSignalDSL.g:7488:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
                     	    {
-                    	    // InternalSignalDSL.g:7330:6: ( () otherlv_7= '.' )
-                    	    // InternalSignalDSL.g:7331:7: () otherlv_7= '.'
+                    	    // InternalSignalDSL.g:7494:6: ( () otherlv_7= '.' )
+                    	    // InternalSignalDSL.g:7495:7: () otherlv_7= '.'
                     	    {
-                    	    // InternalSignalDSL.g:7331:7: ()
-                    	    // InternalSignalDSL.g:7332:8: 
+                    	    // InternalSignalDSL.g:7495:7: ()
+                    	    // InternalSignalDSL.g:7496:8: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -20131,11 +20541,11 @@
 
                     	    }
 
-                    	    // InternalSignalDSL.g:7344:5: ( ( ruleValidID ) )
-                    	    // InternalSignalDSL.g:7345:6: ( ruleValidID )
+                    	    // InternalSignalDSL.g:7508:5: ( ( ruleValidID ) )
+                    	    // InternalSignalDSL.g:7509:6: ( ruleValidID )
                     	    {
-                    	    // InternalSignalDSL.g:7345:6: ( ruleValidID )
-                    	    // InternalSignalDSL.g:7346:7: ruleValidID
+                    	    // InternalSignalDSL.g:7509:6: ( ruleValidID )
+                    	    // InternalSignalDSL.g:7510:7: ruleValidID
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -20149,7 +20559,7 @@
                     	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_94);
+                    	    pushFollow(FOLLOW_96);
                     	    ruleValidID();
 
                     	    state._fsp--;
@@ -20165,17 +20575,17 @@
 
                     	    }
 
-                    	    // InternalSignalDSL.g:7360:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
-                    	    int alt122=2;
-                    	    alt122 = dfa122.predict(input);
-                    	    switch (alt122) {
+                    	    // InternalSignalDSL.g:7524:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    int alt125=2;
+                    	    alt125 = dfa125.predict(input);
+                    	    switch (alt125) {
                     	        case 1 :
-                    	            // InternalSignalDSL.g:7361:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            // InternalSignalDSL.g:7525:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
                     	            {
-                    	            // InternalSignalDSL.g:7361:6: ( ( '<' )=>otherlv_9= '<' )
-                    	            // InternalSignalDSL.g:7362:7: ( '<' )=>otherlv_9= '<'
+                    	            // InternalSignalDSL.g:7525:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalSignalDSL.g:7526:7: ( '<' )=>otherlv_9= '<'
                     	            {
-                    	            otherlv_9=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
+                    	            otherlv_9=(Token)match(input,48,FOLLOW_56); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
@@ -20184,18 +20594,18 @@
 
                     	            }
 
-                    	            // InternalSignalDSL.g:7368:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
-                    	            // InternalSignalDSL.g:7369:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalSignalDSL.g:7532:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalSignalDSL.g:7533:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
                     	            {
-                    	            // InternalSignalDSL.g:7369:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
-                    	            // InternalSignalDSL.g:7370:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            // InternalSignalDSL.g:7533:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalSignalDSL.g:7534:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
                     	            {
                     	            if ( state.backtracking==0 ) {
 
                     	              								newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
                     	              							
                     	            }
-                    	            pushFollow(FOLLOW_54);
+                    	            pushFollow(FOLLOW_57);
                     	            lv_arguments_10_0=ruleJvmArgumentTypeReference();
 
                     	            state._fsp--;
@@ -20219,39 +20629,39 @@
 
                     	            }
 
-                    	            // InternalSignalDSL.g:7387:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
-                    	            loop121:
+                    	            // InternalSignalDSL.g:7551:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            loop124:
                     	            do {
-                    	                int alt121=2;
-                    	                int LA121_0 = input.LA(1);
+                    	                int alt124=2;
+                    	                int LA124_0 = input.LA(1);
 
-                    	                if ( (LA121_0==37) ) {
-                    	                    alt121=1;
+                    	                if ( (LA124_0==37) ) {
+                    	                    alt124=1;
                     	                }
 
 
-                    	                switch (alt121) {
+                    	                switch (alt124) {
                     	            	case 1 :
-                    	            	    // InternalSignalDSL.g:7388:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalSignalDSL.g:7552:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
                     	            	    {
-                    	            	    otherlv_11=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
+                    	            	    otherlv_11=(Token)match(input,37,FOLLOW_56); if (state.failed) return current;
                     	            	    if ( state.backtracking==0 ) {
 
                     	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
                     	            	      						
                     	            	    }
-                    	            	    // InternalSignalDSL.g:7392:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
-                    	            	    // InternalSignalDSL.g:7393:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalSignalDSL.g:7556:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalSignalDSL.g:7557:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
                     	            	    {
-                    	            	    // InternalSignalDSL.g:7393:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
-                    	            	    // InternalSignalDSL.g:7394:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    // InternalSignalDSL.g:7557:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalSignalDSL.g:7558:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
                     	            	    {
                     	            	    if ( state.backtracking==0 ) {
 
                     	            	      									newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
                     	            	      								
                     	            	    }
-                    	            	    pushFollow(FOLLOW_54);
+                    	            	    pushFollow(FOLLOW_57);
                     	            	    lv_arguments_12_0=ruleJvmArgumentTypeReference();
 
                     	            	    state._fsp--;
@@ -20280,11 +20690,11 @@
                     	            	    break;
 
                     	            	default :
-                    	            	    break loop121;
+                    	            	    break loop124;
                     	                }
                     	            } while (true);
 
-                    	            otherlv_13=(Token)match(input,49,FOLLOW_89); if (state.failed) return current;
+                    	            otherlv_13=(Token)match(input,49,FOLLOW_91); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
@@ -20301,7 +20711,7 @@
                     	    break;
 
                     	default :
-                    	    break loop123;
+                    	    break loop126;
                         }
                     } while (true);
 
@@ -20336,7 +20746,7 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:7423:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    // InternalSignalDSL.g:7587:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
     public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -20344,8 +20754,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7423:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
-            // InternalSignalDSL.g:7424:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
+            // InternalSignalDSL.g:7587:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalSignalDSL.g:7588:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -20376,7 +20786,7 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:7430:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
+    // InternalSignalDSL.g:7594:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
     public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -20389,29 +20799,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7436:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
-            // InternalSignalDSL.g:7437:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            // InternalSignalDSL.g:7600:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalSignalDSL.g:7601:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
             {
-            // InternalSignalDSL.g:7437:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
-            int alt125=2;
-            int LA125_0 = input.LA(1);
+            // InternalSignalDSL.g:7601:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            int alt128=2;
+            int LA128_0 = input.LA(1);
 
-            if ( (LA125_0==RULE_ID||LA125_0==36||LA125_0==61) ) {
-                alt125=1;
+            if ( (LA128_0==RULE_ID||LA128_0==36||LA128_0==61) ) {
+                alt128=1;
             }
-            else if ( (LA125_0==100) ) {
-                alt125=2;
+            else if ( (LA128_0==100) ) {
+                alt128=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 125, 0, input);
+                    new NoViableAltException("", 128, 0, input);
 
                 throw nvae;
             }
-            switch (alt125) {
+            switch (alt128) {
                 case 1 :
-                    // InternalSignalDSL.g:7438:3: this_JvmTypeReference_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:7602:3: this_JvmTypeReference_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -20433,7 +20843,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7447:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
+                    // InternalSignalDSL.g:7611:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -20479,7 +20889,7 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:7459:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    // InternalSignalDSL.g:7623:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
     public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -20487,8 +20897,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7459:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
-            // InternalSignalDSL.g:7460:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
+            // InternalSignalDSL.g:7623:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalSignalDSL.g:7624:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -20519,7 +20929,7 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:7466:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
+    // InternalSignalDSL.g:7630:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
     public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -20537,14 +20947,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7472:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
-            // InternalSignalDSL.g:7473:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalSignalDSL.g:7636:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+            // InternalSignalDSL.g:7637:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
             {
-            // InternalSignalDSL.g:7473:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
-            // InternalSignalDSL.g:7474:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            // InternalSignalDSL.g:7637:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalSignalDSL.g:7638:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
             {
-            // InternalSignalDSL.g:7474:3: ()
-            // InternalSignalDSL.g:7475:4: 
+            // InternalSignalDSL.g:7638:3: ()
+            // InternalSignalDSL.g:7639:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -20556,41 +20966,41 @@
 
             }
 
-            otherlv_1=(Token)match(input,100,FOLLOW_95); if (state.failed) return current;
+            otherlv_1=(Token)match(input,100,FOLLOW_97); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
               		
             }
-            // InternalSignalDSL.g:7485:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
-            int alt128=3;
-            int LA128_0 = input.LA(1);
+            // InternalSignalDSL.g:7649:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            int alt131=3;
+            int LA131_0 = input.LA(1);
 
-            if ( (LA128_0==87) ) {
-                alt128=1;
+            if ( (LA131_0==87) ) {
+                alt131=1;
             }
-            else if ( (LA128_0==88) ) {
-                alt128=2;
+            else if ( (LA131_0==88) ) {
+                alt131=2;
             }
-            switch (alt128) {
+            switch (alt131) {
                 case 1 :
-                    // InternalSignalDSL.g:7486:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalSignalDSL.g:7650:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
                     {
-                    // InternalSignalDSL.g:7486:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
-                    // InternalSignalDSL.g:7487:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    // InternalSignalDSL.g:7650:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalSignalDSL.g:7651:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
                     {
-                    // InternalSignalDSL.g:7487:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
-                    // InternalSignalDSL.g:7488:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalSignalDSL.g:7651:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalSignalDSL.g:7652:6: (lv_constraints_2_0= ruleJvmUpperBound )
                     {
-                    // InternalSignalDSL.g:7488:6: (lv_constraints_2_0= ruleJvmUpperBound )
-                    // InternalSignalDSL.g:7489:7: lv_constraints_2_0= ruleJvmUpperBound
+                    // InternalSignalDSL.g:7652:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalSignalDSL.g:7653:7: lv_constraints_2_0= ruleJvmUpperBound
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
                       						
                     }
-                    pushFollow(FOLLOW_96);
+                    pushFollow(FOLLOW_98);
                     lv_constraints_2_0=ruleJvmUpperBound();
 
                     state._fsp--;
@@ -20614,30 +21024,30 @@
 
                     }
 
-                    // InternalSignalDSL.g:7506:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
-                    loop126:
+                    // InternalSignalDSL.g:7670:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    loop129:
                     do {
-                        int alt126=2;
-                        int LA126_0 = input.LA(1);
+                        int alt129=2;
+                        int LA129_0 = input.LA(1);
 
-                        if ( (LA126_0==101) ) {
-                            alt126=1;
+                        if ( (LA129_0==101) ) {
+                            alt129=1;
                         }
 
 
-                        switch (alt126) {
+                        switch (alt129) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7507:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalSignalDSL.g:7671:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
                     	    {
-                    	    // InternalSignalDSL.g:7507:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
-                    	    // InternalSignalDSL.g:7508:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+                    	    // InternalSignalDSL.g:7671:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalSignalDSL.g:7672:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_96);
+                    	    pushFollow(FOLLOW_98);
                     	    lv_constraints_3_0=ruleJvmUpperBoundAnded();
 
                     	    state._fsp--;
@@ -20663,7 +21073,7 @@
                     	    break;
 
                     	default :
-                    	    break loop126;
+                    	    break loop129;
                         }
                     } while (true);
 
@@ -20674,23 +21084,23 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7527:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalSignalDSL.g:7691:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
                     {
-                    // InternalSignalDSL.g:7527:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
-                    // InternalSignalDSL.g:7528:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    // InternalSignalDSL.g:7691:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalSignalDSL.g:7692:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
                     {
-                    // InternalSignalDSL.g:7528:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
-                    // InternalSignalDSL.g:7529:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalSignalDSL.g:7692:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalSignalDSL.g:7693:6: (lv_constraints_4_0= ruleJvmLowerBound )
                     {
-                    // InternalSignalDSL.g:7529:6: (lv_constraints_4_0= ruleJvmLowerBound )
-                    // InternalSignalDSL.g:7530:7: lv_constraints_4_0= ruleJvmLowerBound
+                    // InternalSignalDSL.g:7693:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalSignalDSL.g:7694:7: lv_constraints_4_0= ruleJvmLowerBound
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
                       						
                     }
-                    pushFollow(FOLLOW_96);
+                    pushFollow(FOLLOW_98);
                     lv_constraints_4_0=ruleJvmLowerBound();
 
                     state._fsp--;
@@ -20714,30 +21124,30 @@
 
                     }
 
-                    // InternalSignalDSL.g:7547:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
-                    loop127:
+                    // InternalSignalDSL.g:7711:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    loop130:
                     do {
-                        int alt127=2;
-                        int LA127_0 = input.LA(1);
+                        int alt130=2;
+                        int LA130_0 = input.LA(1);
 
-                        if ( (LA127_0==101) ) {
-                            alt127=1;
+                        if ( (LA130_0==101) ) {
+                            alt130=1;
                         }
 
 
-                        switch (alt127) {
+                        switch (alt130) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7548:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalSignalDSL.g:7712:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
                     	    {
-                    	    // InternalSignalDSL.g:7548:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
-                    	    // InternalSignalDSL.g:7549:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+                    	    // InternalSignalDSL.g:7712:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalSignalDSL.g:7713:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_96);
+                    	    pushFollow(FOLLOW_98);
                     	    lv_constraints_5_0=ruleJvmLowerBoundAnded();
 
                     	    state._fsp--;
@@ -20763,7 +21173,7 @@
                     	    break;
 
                     	default :
-                    	    break loop127;
+                    	    break loop130;
                         }
                     } while (true);
 
@@ -20801,7 +21211,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalSignalDSL.g:7572:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    // InternalSignalDSL.g:7736:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
     public final EObject entryRuleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -20809,8 +21219,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7572:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
-            // InternalSignalDSL.g:7573:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
+            // InternalSignalDSL.g:7736:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalSignalDSL.g:7737:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
@@ -20841,7 +21251,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalSignalDSL.g:7579:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7743:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -20853,23 +21263,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7585:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7586:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7749:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7750:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7586:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7587:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7750:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7751:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,87,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,87,FOLLOW_44); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7591:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7592:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7755:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7756:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7592:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7593:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7756:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7757:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -20925,7 +21335,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:7614:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    // InternalSignalDSL.g:7778:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
     public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -20933,8 +21343,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7614:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
-            // InternalSignalDSL.g:7615:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
+            // InternalSignalDSL.g:7778:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalSignalDSL.g:7779:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -20965,7 +21375,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:7621:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7785:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -20977,23 +21387,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7627:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7628:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7791:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7792:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7628:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7629:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7792:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7793:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,101,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,101,FOLLOW_44); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7633:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7634:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7797:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7798:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7634:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7635:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7798:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7799:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -21049,7 +21459,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalSignalDSL.g:7656:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    // InternalSignalDSL.g:7820:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
     public final EObject entryRuleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -21057,8 +21467,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7656:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
-            // InternalSignalDSL.g:7657:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
+            // InternalSignalDSL.g:7820:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalSignalDSL.g:7821:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
@@ -21089,7 +21499,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalSignalDSL.g:7663:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7827:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -21101,23 +21511,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7669:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7670:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7833:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7834:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7670:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7671:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7834:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7835:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,88,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,88,FOLLOW_44); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7675:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7676:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7839:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7840:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7676:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7677:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7840:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7841:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -21173,7 +21583,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:7698:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    // InternalSignalDSL.g:7862:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
     public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -21181,8 +21591,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7698:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
-            // InternalSignalDSL.g:7699:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
+            // InternalSignalDSL.g:7862:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalSignalDSL.g:7863:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -21213,7 +21623,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:7705:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7869:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -21225,23 +21635,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7711:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7712:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7875:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7876:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7712:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7713:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7876:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7877:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,101,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,101,FOLLOW_44); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7717:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7718:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7881:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7882:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7718:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7719:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7882:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7883:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -21297,7 +21707,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:7740:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    // InternalSignalDSL.g:7904:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
     public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         String current = null;
 
@@ -21305,8 +21715,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7740:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
-            // InternalSignalDSL.g:7741:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
+            // InternalSignalDSL.g:7904:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalSignalDSL.g:7905:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -21337,7 +21747,7 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:7747:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
+    // InternalSignalDSL.g:7911:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
     public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -21349,18 +21759,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7753:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
-            // InternalSignalDSL.g:7754:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalSignalDSL.g:7917:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalSignalDSL.g:7918:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
             {
-            // InternalSignalDSL.g:7754:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
-            // InternalSignalDSL.g:7755:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+            // InternalSignalDSL.g:7918:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalSignalDSL.g:7919:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_97);
+            pushFollow(FOLLOW_99);
             this_QualifiedName_0=ruleQualifiedName();
 
             state._fsp--;
@@ -21375,7 +21785,7 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            kw=(Token)match(input,73,FOLLOW_98); if (state.failed) return current;
+            kw=(Token)match(input,73,FOLLOW_100); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -21414,7 +21824,7 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalSignalDSL.g:7779:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    // InternalSignalDSL.g:7943:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
     public final String entryRuleValidID() throws RecognitionException {
         String current = null;
 
@@ -21422,8 +21832,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7779:47: (iv_ruleValidID= ruleValidID EOF )
-            // InternalSignalDSL.g:7780:2: iv_ruleValidID= ruleValidID EOF
+            // InternalSignalDSL.g:7943:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalSignalDSL.g:7944:2: iv_ruleValidID= ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getValidIDRule()); 
@@ -21454,7 +21864,7 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalSignalDSL.g:7786:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalSignalDSL.g:7950:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -21464,8 +21874,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7792:2: (this_ID_0= RULE_ID )
-            // InternalSignalDSL.g:7793:2: this_ID_0= RULE_ID
+            // InternalSignalDSL.g:7956:2: (this_ID_0= RULE_ID )
+            // InternalSignalDSL.g:7957:2: this_ID_0= RULE_ID
             {
             this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -21500,7 +21910,7 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalSignalDSL.g:7803:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    // InternalSignalDSL.g:7967:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
     public final EObject entryRuleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -21508,8 +21918,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7803:55: (iv_ruleXImportSection= ruleXImportSection EOF )
-            // InternalSignalDSL.g:7804:2: iv_ruleXImportSection= ruleXImportSection EOF
+            // InternalSignalDSL.g:7967:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalSignalDSL.g:7968:2: iv_ruleXImportSection= ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportSectionRule()); 
@@ -21540,7 +21950,7 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalSignalDSL.g:7810:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
+    // InternalSignalDSL.g:7974:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
     public final EObject ruleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -21551,34 +21961,34 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7816:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
-            // InternalSignalDSL.g:7817:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            // InternalSignalDSL.g:7980:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalSignalDSL.g:7981:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
             {
-            // InternalSignalDSL.g:7817:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
-            int cnt129=0;
-            loop129:
+            // InternalSignalDSL.g:7981:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            int cnt132=0;
+            loop132:
             do {
-                int alt129=2;
-                int LA129_0 = input.LA(1);
+                int alt132=2;
+                int LA132_0 = input.LA(1);
 
-                if ( (LA129_0==29) ) {
-                    alt129=1;
+                if ( (LA132_0==29) ) {
+                    alt132=1;
                 }
 
 
-                switch (alt129) {
+                switch (alt132) {
             	case 1 :
-            	    // InternalSignalDSL.g:7818:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalSignalDSL.g:7982:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
             	    {
-            	    // InternalSignalDSL.g:7818:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
-            	    // InternalSignalDSL.g:7819:4: lv_importDeclarations_0_0= ruleXImportDeclaration
+            	    // InternalSignalDSL.g:7982:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalSignalDSL.g:7983:4: lv_importDeclarations_0_0= ruleXImportDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      				newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0());
             	      			
             	    }
-            	    pushFollow(FOLLOW_99);
+            	    pushFollow(FOLLOW_101);
             	    lv_importDeclarations_0_0=ruleXImportDeclaration();
 
             	    state._fsp--;
@@ -21604,13 +22014,13 @@
             	    break;
 
             	default :
-            	    if ( cnt129 >= 1 ) break loop129;
+            	    if ( cnt132 >= 1 ) break loop132;
             	    if (state.backtracking>0) {state.failed=true; return current;}
                         EarlyExitException eee =
-                            new EarlyExitException(129, input);
+                            new EarlyExitException(132, input);
                         throw eee;
                 }
-                cnt129++;
+                cnt132++;
             } while (true);
 
 
@@ -21635,7 +22045,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:7839:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    // InternalSignalDSL.g:8003:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
     public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         String current = null;
 
@@ -21643,8 +22053,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7839:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
-            // InternalSignalDSL.g:7840:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
+            // InternalSignalDSL.g:8003:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalSignalDSL.g:8004:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -21675,7 +22085,7 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:7846:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
+    // InternalSignalDSL.g:8010:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
     public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -21687,37 +22097,37 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7852:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
-            // InternalSignalDSL.g:7853:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            // InternalSignalDSL.g:8016:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalSignalDSL.g:8017:2: (this_ValidID_0= ruleValidID kw= '.' )+
             {
-            // InternalSignalDSL.g:7853:2: (this_ValidID_0= ruleValidID kw= '.' )+
-            int cnt130=0;
-            loop130:
+            // InternalSignalDSL.g:8017:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            int cnt133=0;
+            loop133:
             do {
-                int alt130=2;
-                int LA130_0 = input.LA(1);
+                int alt133=2;
+                int LA133_0 = input.LA(1);
 
-                if ( (LA130_0==RULE_ID) ) {
-                    int LA130_2 = input.LA(2);
+                if ( (LA133_0==RULE_ID) ) {
+                    int LA133_2 = input.LA(2);
 
-                    if ( (LA130_2==73) ) {
-                        alt130=1;
+                    if ( (LA133_2==73) ) {
+                        alt133=1;
                     }
 
 
                 }
 
 
-                switch (alt130) {
+                switch (alt133) {
             	case 1 :
-            	    // InternalSignalDSL.g:7854:3: this_ValidID_0= ruleValidID kw= '.'
+            	    // InternalSignalDSL.g:8018:3: this_ValidID_0= ruleValidID kw= '.'
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
             	      		
             	    }
-            	    pushFollow(FOLLOW_97);
+            	    pushFollow(FOLLOW_99);
             	    this_ValidID_0=ruleValidID();
 
             	    state._fsp--;
@@ -21732,7 +22142,7 @@
             	      			afterParserOrEnumRuleCall();
             	      		
             	    }
-            	    kw=(Token)match(input,73,FOLLOW_100); if (state.failed) return current;
+            	    kw=(Token)match(input,73,FOLLOW_102); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      			current.merge(kw);
@@ -21744,13 +22154,13 @@
             	    break;
 
             	default :
-            	    if ( cnt130 >= 1 ) break loop130;
+            	    if ( cnt133 >= 1 ) break loop133;
             	    if (state.backtracking>0) {state.failed=true; return current;}
                         EarlyExitException eee =
-                            new EarlyExitException(130, input);
+                            new EarlyExitException(133, input);
                         throw eee;
                 }
-                cnt130++;
+                cnt133++;
             } while (true);
 
 
@@ -21775,7 +22185,7 @@
 
 
     // $ANTLR start "ruleSignalActionEnum"
-    // InternalSignalDSL.g:7873:1: ruleSignalActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) ;
+    // InternalSignalDSL.g:8037:1: ruleSignalActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'import' ) | (enumLiteral_1= 'export' ) ) ;
     public final Enumerator ruleSignalActionEnum() throws RecognitionException {
         Enumerator current = null;
 
@@ -21786,34 +22196,34 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7879:2: ( ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) )
-            // InternalSignalDSL.g:7880:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
+            // InternalSignalDSL.g:8043:2: ( ( (enumLiteral_0= 'import' ) | (enumLiteral_1= 'export' ) ) )
+            // InternalSignalDSL.g:8044:2: ( (enumLiteral_0= 'import' ) | (enumLiteral_1= 'export' ) )
             {
-            // InternalSignalDSL.g:7880:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
-            int alt131=2;
-            int LA131_0 = input.LA(1);
+            // InternalSignalDSL.g:8044:2: ( (enumLiteral_0= 'import' ) | (enumLiteral_1= 'export' ) )
+            int alt134=2;
+            int LA134_0 = input.LA(1);
 
-            if ( (LA131_0==102) ) {
-                alt131=1;
+            if ( (LA134_0==29) ) {
+                alt134=1;
             }
-            else if ( (LA131_0==103) ) {
-                alt131=2;
+            else if ( (LA134_0==102) ) {
+                alt134=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 131, 0, input);
+                    new NoViableAltException("", 134, 0, input);
 
                 throw nvae;
             }
-            switch (alt131) {
+            switch (alt134) {
                 case 1 :
-                    // InternalSignalDSL.g:7881:3: (enumLiteral_0= 'Import' )
+                    // InternalSignalDSL.g:8045:3: (enumLiteral_0= 'import' )
                     {
-                    // InternalSignalDSL.g:7881:3: (enumLiteral_0= 'Import' )
-                    // InternalSignalDSL.g:7882:4: enumLiteral_0= 'Import'
+                    // InternalSignalDSL.g:8045:3: (enumLiteral_0= 'import' )
+                    // InternalSignalDSL.g:8046:4: enumLiteral_0= 'import'
                     {
-                    enumLiteral_0=(Token)match(input,102,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_0=(Token)match(input,29,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
@@ -21827,12 +22237,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7889:3: (enumLiteral_1= 'Export' )
+                    // InternalSignalDSL.g:8053:3: (enumLiteral_1= 'export' )
                     {
-                    // InternalSignalDSL.g:7889:3: (enumLiteral_1= 'Export' )
-                    // InternalSignalDSL.g:7890:4: enumLiteral_1= 'Export'
+                    // InternalSignalDSL.g:8053:3: (enumLiteral_1= 'export' )
+                    // InternalSignalDSL.g:8054:4: enumLiteral_1= 'export'
                     {
-                    enumLiteral_1=(Token)match(input,103,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_1=(Token)match(input,102,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
@@ -21870,7 +22280,7 @@
 
 
     // $ANTLR start "ruleSignalExecutionTypeEnum"
-    // InternalSignalDSL.g:7900:1: ruleSignalExecutionTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) ) ;
+    // InternalSignalDSL.g:8064:1: ruleSignalExecutionTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) ) ;
     public final Enumerator ruleSignalExecutionTypeEnum() throws RecognitionException {
         Enumerator current = null;
 
@@ -21881,34 +22291,34 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7906:2: ( ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) ) )
-            // InternalSignalDSL.g:7907:2: ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) )
+            // InternalSignalDSL.g:8070:2: ( ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) ) )
+            // InternalSignalDSL.g:8071:2: ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) )
             {
-            // InternalSignalDSL.g:7907:2: ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) )
-            int alt132=2;
-            int LA132_0 = input.LA(1);
+            // InternalSignalDSL.g:8071:2: ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) )
+            int alt135=2;
+            int LA135_0 = input.LA(1);
 
-            if ( (LA132_0==104) ) {
-                alt132=1;
+            if ( (LA135_0==103) ) {
+                alt135=1;
             }
-            else if ( (LA132_0==105) ) {
-                alt132=2;
+            else if ( (LA135_0==104) ) {
+                alt135=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 132, 0, input);
+                    new NoViableAltException("", 135, 0, input);
 
                 throw nvae;
             }
-            switch (alt132) {
+            switch (alt135) {
                 case 1 :
-                    // InternalSignalDSL.g:7908:3: (enumLiteral_0= 'sequential' )
+                    // InternalSignalDSL.g:8072:3: (enumLiteral_0= 'sequential' )
                     {
-                    // InternalSignalDSL.g:7908:3: (enumLiteral_0= 'sequential' )
-                    // InternalSignalDSL.g:7909:4: enumLiteral_0= 'sequential'
+                    // InternalSignalDSL.g:8072:3: (enumLiteral_0= 'sequential' )
+                    // InternalSignalDSL.g:8073:4: enumLiteral_0= 'sequential'
                     {
-                    enumLiteral_0=(Token)match(input,104,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_0=(Token)match(input,103,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
@@ -21922,12 +22332,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7916:3: (enumLiteral_1= 'parallel' )
+                    // InternalSignalDSL.g:8080:3: (enumLiteral_1= 'parallel' )
                     {
-                    // InternalSignalDSL.g:7916:3: (enumLiteral_1= 'parallel' )
-                    // InternalSignalDSL.g:7917:4: enumLiteral_1= 'parallel'
+                    // InternalSignalDSL.g:8080:3: (enumLiteral_1= 'parallel' )
+                    // InternalSignalDSL.g:8081:4: enumLiteral_1= 'parallel'
                     {
-                    enumLiteral_1=(Token)match(input,105,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_1=(Token)match(input,104,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
@@ -21965,7 +22375,7 @@
 
 
     // $ANTLR start "ruleDayOfWeekEnum"
-    // InternalSignalDSL.g:7927:1: ruleDayOfWeekEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) ) ;
+    // InternalSignalDSL.g:8091:1: ruleDayOfWeekEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) ) ;
     public final Enumerator ruleDayOfWeekEnum() throws RecognitionException {
         Enumerator current = null;
 
@@ -21981,63 +22391,63 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7933:2: ( ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) ) )
-            // InternalSignalDSL.g:7934:2: ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) )
+            // InternalSignalDSL.g:8097:2: ( ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) ) )
+            // InternalSignalDSL.g:8098:2: ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) )
             {
-            // InternalSignalDSL.g:7934:2: ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) )
-            int alt133=7;
+            // InternalSignalDSL.g:8098:2: ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) )
+            int alt136=7;
             switch ( input.LA(1) ) {
+            case 105:
+                {
+                alt136=1;
+                }
+                break;
             case 106:
                 {
-                alt133=1;
+                alt136=2;
                 }
                 break;
             case 107:
                 {
-                alt133=2;
+                alt136=3;
                 }
                 break;
             case 108:
                 {
-                alt133=3;
+                alt136=4;
                 }
                 break;
             case 109:
                 {
-                alt133=4;
+                alt136=5;
                 }
                 break;
             case 110:
                 {
-                alt133=5;
+                alt136=6;
                 }
                 break;
             case 111:
                 {
-                alt133=6;
-                }
-                break;
-            case 112:
-                {
-                alt133=7;
+                alt136=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 133, 0, input);
+                    new NoViableAltException("", 136, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt133) {
+            switch (alt136) {
                 case 1 :
-                    // InternalSignalDSL.g:7935:3: (enumLiteral_0= 'sunday' )
+                    // InternalSignalDSL.g:8099:3: (enumLiteral_0= 'sunday' )
                     {
-                    // InternalSignalDSL.g:7935:3: (enumLiteral_0= 'sunday' )
-                    // InternalSignalDSL.g:7936:4: enumLiteral_0= 'sunday'
+                    // InternalSignalDSL.g:8099:3: (enumLiteral_0= 'sunday' )
+                    // InternalSignalDSL.g:8100:4: enumLiteral_0= 'sunday'
                     {
-                    enumLiteral_0=(Token)match(input,106,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_0=(Token)match(input,105,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
@@ -22051,12 +22461,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7943:3: (enumLiteral_1= 'monday' )
+                    // InternalSignalDSL.g:8107:3: (enumLiteral_1= 'monday' )
                     {
-                    // InternalSignalDSL.g:7943:3: (enumLiteral_1= 'monday' )
-                    // InternalSignalDSL.g:7944:4: enumLiteral_1= 'monday'
+                    // InternalSignalDSL.g:8107:3: (enumLiteral_1= 'monday' )
+                    // InternalSignalDSL.g:8108:4: enumLiteral_1= 'monday'
                     {
-                    enumLiteral_1=(Token)match(input,107,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_1=(Token)match(input,106,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
@@ -22070,12 +22480,12 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:7951:3: (enumLiteral_2= 'tuesday' )
+                    // InternalSignalDSL.g:8115:3: (enumLiteral_2= 'tuesday' )
                     {
-                    // InternalSignalDSL.g:7951:3: (enumLiteral_2= 'tuesday' )
-                    // InternalSignalDSL.g:7952:4: enumLiteral_2= 'tuesday'
+                    // InternalSignalDSL.g:8115:3: (enumLiteral_2= 'tuesday' )
+                    // InternalSignalDSL.g:8116:4: enumLiteral_2= 'tuesday'
                     {
-                    enumLiteral_2=(Token)match(input,108,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_2=(Token)match(input,107,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
@@ -22089,12 +22499,12 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:7959:3: (enumLiteral_3= 'wednesday' )
+                    // InternalSignalDSL.g:8123:3: (enumLiteral_3= 'wednesday' )
                     {
-                    // InternalSignalDSL.g:7959:3: (enumLiteral_3= 'wednesday' )
-                    // InternalSignalDSL.g:7960:4: enumLiteral_3= 'wednesday'
+                    // InternalSignalDSL.g:8123:3: (enumLiteral_3= 'wednesday' )
+                    // InternalSignalDSL.g:8124:4: enumLiteral_3= 'wednesday'
                     {
-                    enumLiteral_3=(Token)match(input,109,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_3=(Token)match(input,108,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
@@ -22108,12 +22518,12 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:7967:3: (enumLiteral_4= 'thursday' )
+                    // InternalSignalDSL.g:8131:3: (enumLiteral_4= 'thursday' )
                     {
-                    // InternalSignalDSL.g:7967:3: (enumLiteral_4= 'thursday' )
-                    // InternalSignalDSL.g:7968:4: enumLiteral_4= 'thursday'
+                    // InternalSignalDSL.g:8131:3: (enumLiteral_4= 'thursday' )
+                    // InternalSignalDSL.g:8132:4: enumLiteral_4= 'thursday'
                     {
-                    enumLiteral_4=(Token)match(input,110,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_4=(Token)match(input,109,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
@@ -22127,12 +22537,12 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:7975:3: (enumLiteral_5= 'friday' )
+                    // InternalSignalDSL.g:8139:3: (enumLiteral_5= 'friday' )
                     {
-                    // InternalSignalDSL.g:7975:3: (enumLiteral_5= 'friday' )
-                    // InternalSignalDSL.g:7976:4: enumLiteral_5= 'friday'
+                    // InternalSignalDSL.g:8139:3: (enumLiteral_5= 'friday' )
+                    // InternalSignalDSL.g:8140:4: enumLiteral_5= 'friday'
                     {
-                    enumLiteral_5=(Token)match(input,111,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_5=(Token)match(input,110,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
@@ -22146,12 +22556,12 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:7983:3: (enumLiteral_6= 'saturday' )
+                    // InternalSignalDSL.g:8147:3: (enumLiteral_6= 'saturday' )
                     {
-                    // InternalSignalDSL.g:7983:3: (enumLiteral_6= 'saturday' )
-                    // InternalSignalDSL.g:7984:4: enumLiteral_6= 'saturday'
+                    // InternalSignalDSL.g:8147:3: (enumLiteral_6= 'saturday' )
+                    // InternalSignalDSL.g:8148:4: enumLiteral_6= 'saturday'
                     {
-                    enumLiteral_6=(Token)match(input,112,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_6=(Token)match(input,111,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
@@ -22189,8 +22599,8 @@
 
     // $ANTLR start synpred1_InternalSignalDSL
     public final void synpred1_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1249:5: ( '(' )
-        // InternalSignalDSL.g:1249:6: '('
+        // InternalSignalDSL.g:1413:5: ( '(' )
+        // InternalSignalDSL.g:1413:6: '('
         {
         match(input,36,FOLLOW_2); if (state.failed) return ;
 
@@ -22200,19 +22610,19 @@
 
     // $ANTLR start synpred2_InternalSignalDSL
     public final void synpred2_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1258:7: ( ( ( ( ruleValidID ) ) '=' ) )
-        // InternalSignalDSL.g:1258:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalSignalDSL.g:1422:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalSignalDSL.g:1422:8: ( ( ( ruleValidID ) ) '=' )
         {
-        // InternalSignalDSL.g:1258:8: ( ( ( ruleValidID ) ) '=' )
-        // InternalSignalDSL.g:1259:8: ( ( ruleValidID ) ) '='
+        // InternalSignalDSL.g:1422:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalSignalDSL.g:1423:8: ( ( ruleValidID ) ) '='
         {
-        // InternalSignalDSL.g:1259:8: ( ( ruleValidID ) )
-        // InternalSignalDSL.g:1260:9: ( ruleValidID )
+        // InternalSignalDSL.g:1423:8: ( ( ruleValidID ) )
+        // InternalSignalDSL.g:1424:9: ( ruleValidID )
         {
-        // InternalSignalDSL.g:1260:9: ( ruleValidID )
-        // InternalSignalDSL.g:1261:10: ruleValidID
+        // InternalSignalDSL.g:1424:9: ( ruleValidID )
+        // InternalSignalDSL.g:1425:10: ruleValidID
         {
-        pushFollow(FOLLOW_27);
+        pushFollow(FOLLOW_30);
         ruleValidID();
 
         state._fsp--;
@@ -22234,18 +22644,18 @@
 
     // $ANTLR start synpred5_InternalSignalDSL
     public final void synpred5_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1438:5: ( ( () '#' '[' ) )
-        // InternalSignalDSL.g:1438:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1602:5: ( ( () '#' '[' ) )
+        // InternalSignalDSL.g:1602:6: ( () '#' '[' )
         {
-        // InternalSignalDSL.g:1438:6: ( () '#' '[' )
-        // InternalSignalDSL.g:1439:6: () '#' '['
+        // InternalSignalDSL.g:1602:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1603:6: () '#' '['
         {
-        // InternalSignalDSL.g:1439:6: ()
-        // InternalSignalDSL.g:1440:6: 
+        // InternalSignalDSL.g:1603:6: ()
+        // InternalSignalDSL.g:1604:6: 
         {
         }
 
-        match(input,40,FOLLOW_29); if (state.failed) return ;
+        match(input,40,FOLLOW_32); if (state.failed) return ;
         match(input,41,FOLLOW_2); if (state.failed) return ;
 
         }
@@ -22257,18 +22667,18 @@
 
     // $ANTLR start synpred6_InternalSignalDSL
     public final void synpred6_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1580:5: ( ( () '#' '[' ) )
-        // InternalSignalDSL.g:1580:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1744:5: ( ( () '#' '[' ) )
+        // InternalSignalDSL.g:1744:6: ( () '#' '[' )
         {
-        // InternalSignalDSL.g:1580:6: ( () '#' '[' )
-        // InternalSignalDSL.g:1581:6: () '#' '['
+        // InternalSignalDSL.g:1744:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1745:6: () '#' '['
         {
-        // InternalSignalDSL.g:1581:6: ()
-        // InternalSignalDSL.g:1582:6: 
+        // InternalSignalDSL.g:1745:6: ()
+        // InternalSignalDSL.g:1746:6: 
         {
         }
 
-        match(input,40,FOLLOW_29); if (state.failed) return ;
+        match(input,40,FOLLOW_32); if (state.failed) return ;
         match(input,41,FOLLOW_2); if (state.failed) return ;
 
         }
@@ -22280,22 +22690,22 @@
 
     // $ANTLR start synpred7_InternalSignalDSL
     public final void synpred7_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1808:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
-        // InternalSignalDSL.g:1808:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalSignalDSL.g:1972:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalSignalDSL.g:1972:7: ( () ( ( ruleOpMultiAssign ) ) )
         {
-        // InternalSignalDSL.g:1808:7: ( () ( ( ruleOpMultiAssign ) ) )
-        // InternalSignalDSL.g:1809:7: () ( ( ruleOpMultiAssign ) )
+        // InternalSignalDSL.g:1972:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalSignalDSL.g:1973:7: () ( ( ruleOpMultiAssign ) )
         {
-        // InternalSignalDSL.g:1809:7: ()
-        // InternalSignalDSL.g:1810:7: 
+        // InternalSignalDSL.g:1973:7: ()
+        // InternalSignalDSL.g:1974:7: 
         {
         }
 
-        // InternalSignalDSL.g:1811:7: ( ( ruleOpMultiAssign ) )
-        // InternalSignalDSL.g:1812:8: ( ruleOpMultiAssign )
+        // InternalSignalDSL.g:1975:7: ( ( ruleOpMultiAssign ) )
+        // InternalSignalDSL.g:1976:8: ( ruleOpMultiAssign )
         {
-        // InternalSignalDSL.g:1812:8: ( ruleOpMultiAssign )
-        // InternalSignalDSL.g:1813:9: ruleOpMultiAssign
+        // InternalSignalDSL.g:1976:8: ( ruleOpMultiAssign )
+        // InternalSignalDSL.g:1977:9: ruleOpMultiAssign
         {
         pushFollow(FOLLOW_2);
         ruleOpMultiAssign();
@@ -22318,22 +22728,22 @@
 
     // $ANTLR start synpred8_InternalSignalDSL
     public final void synpred8_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2002:5: ( ( () ( ( ruleOpOr ) ) ) )
-        // InternalSignalDSL.g:2002:6: ( () ( ( ruleOpOr ) ) )
+        // InternalSignalDSL.g:2166:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalSignalDSL.g:2166:6: ( () ( ( ruleOpOr ) ) )
         {
-        // InternalSignalDSL.g:2002:6: ( () ( ( ruleOpOr ) ) )
-        // InternalSignalDSL.g:2003:6: () ( ( ruleOpOr ) )
+        // InternalSignalDSL.g:2166:6: ( () ( ( ruleOpOr ) ) )
+        // InternalSignalDSL.g:2167:6: () ( ( ruleOpOr ) )
         {
-        // InternalSignalDSL.g:2003:6: ()
-        // InternalSignalDSL.g:2004:6: 
+        // InternalSignalDSL.g:2167:6: ()
+        // InternalSignalDSL.g:2168:6: 
         {
         }
 
-        // InternalSignalDSL.g:2005:6: ( ( ruleOpOr ) )
-        // InternalSignalDSL.g:2006:7: ( ruleOpOr )
+        // InternalSignalDSL.g:2169:6: ( ( ruleOpOr ) )
+        // InternalSignalDSL.g:2170:7: ( ruleOpOr )
         {
-        // InternalSignalDSL.g:2006:7: ( ruleOpOr )
-        // InternalSignalDSL.g:2007:8: ruleOpOr
+        // InternalSignalDSL.g:2170:7: ( ruleOpOr )
+        // InternalSignalDSL.g:2171:8: ruleOpOr
         {
         pushFollow(FOLLOW_2);
         ruleOpOr();
@@ -22356,22 +22766,22 @@
 
     // $ANTLR start synpred9_InternalSignalDSL
     public final void synpred9_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2109:5: ( ( () ( ( ruleOpAnd ) ) ) )
-        // InternalSignalDSL.g:2109:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalSignalDSL.g:2273:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalSignalDSL.g:2273:6: ( () ( ( ruleOpAnd ) ) )
         {
-        // InternalSignalDSL.g:2109:6: ( () ( ( ruleOpAnd ) ) )
-        // InternalSignalDSL.g:2110:6: () ( ( ruleOpAnd ) )
+        // InternalSignalDSL.g:2273:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalSignalDSL.g:2274:6: () ( ( ruleOpAnd ) )
         {
-        // InternalSignalDSL.g:2110:6: ()
-        // InternalSignalDSL.g:2111:6: 
+        // InternalSignalDSL.g:2274:6: ()
+        // InternalSignalDSL.g:2275:6: 
         {
         }
 
-        // InternalSignalDSL.g:2112:6: ( ( ruleOpAnd ) )
-        // InternalSignalDSL.g:2113:7: ( ruleOpAnd )
+        // InternalSignalDSL.g:2276:6: ( ( ruleOpAnd ) )
+        // InternalSignalDSL.g:2277:7: ( ruleOpAnd )
         {
-        // InternalSignalDSL.g:2113:7: ( ruleOpAnd )
-        // InternalSignalDSL.g:2114:8: ruleOpAnd
+        // InternalSignalDSL.g:2277:7: ( ruleOpAnd )
+        // InternalSignalDSL.g:2278:8: ruleOpAnd
         {
         pushFollow(FOLLOW_2);
         ruleOpAnd();
@@ -22394,22 +22804,22 @@
 
     // $ANTLR start synpred10_InternalSignalDSL
     public final void synpred10_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2216:5: ( ( () ( ( ruleOpEquality ) ) ) )
-        // InternalSignalDSL.g:2216:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalSignalDSL.g:2380:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalSignalDSL.g:2380:6: ( () ( ( ruleOpEquality ) ) )
         {
-        // InternalSignalDSL.g:2216:6: ( () ( ( ruleOpEquality ) ) )
-        // InternalSignalDSL.g:2217:6: () ( ( ruleOpEquality ) )
+        // InternalSignalDSL.g:2380:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalSignalDSL.g:2381:6: () ( ( ruleOpEquality ) )
         {
-        // InternalSignalDSL.g:2217:6: ()
-        // InternalSignalDSL.g:2218:6: 
+        // InternalSignalDSL.g:2381:6: ()
+        // InternalSignalDSL.g:2382:6: 
         {
         }
 
-        // InternalSignalDSL.g:2219:6: ( ( ruleOpEquality ) )
-        // InternalSignalDSL.g:2220:7: ( ruleOpEquality )
+        // InternalSignalDSL.g:2383:6: ( ( ruleOpEquality ) )
+        // InternalSignalDSL.g:2384:7: ( ruleOpEquality )
         {
-        // InternalSignalDSL.g:2220:7: ( ruleOpEquality )
-        // InternalSignalDSL.g:2221:8: ruleOpEquality
+        // InternalSignalDSL.g:2384:7: ( ruleOpEquality )
+        // InternalSignalDSL.g:2385:8: ruleOpEquality
         {
         pushFollow(FOLLOW_2);
         ruleOpEquality();
@@ -22432,14 +22842,14 @@
 
     // $ANTLR start synpred11_InternalSignalDSL
     public final void synpred11_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2344:6: ( ( () 'instanceof' ) )
-        // InternalSignalDSL.g:2344:7: ( () 'instanceof' )
+        // InternalSignalDSL.g:2508:6: ( ( () 'instanceof' ) )
+        // InternalSignalDSL.g:2508:7: ( () 'instanceof' )
         {
-        // InternalSignalDSL.g:2344:7: ( () 'instanceof' )
-        // InternalSignalDSL.g:2345:7: () 'instanceof'
+        // InternalSignalDSL.g:2508:7: ( () 'instanceof' )
+        // InternalSignalDSL.g:2509:7: () 'instanceof'
         {
-        // InternalSignalDSL.g:2345:7: ()
-        // InternalSignalDSL.g:2346:7: 
+        // InternalSignalDSL.g:2509:7: ()
+        // InternalSignalDSL.g:2510:7: 
         {
         }
 
@@ -22454,22 +22864,22 @@
 
     // $ANTLR start synpred12_InternalSignalDSL
     public final void synpred12_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2387:6: ( ( () ( ( ruleOpCompare ) ) ) )
-        // InternalSignalDSL.g:2387:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalSignalDSL.g:2551:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalSignalDSL.g:2551:7: ( () ( ( ruleOpCompare ) ) )
         {
-        // InternalSignalDSL.g:2387:7: ( () ( ( ruleOpCompare ) ) )
-        // InternalSignalDSL.g:2388:7: () ( ( ruleOpCompare ) )
+        // InternalSignalDSL.g:2551:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalSignalDSL.g:2552:7: () ( ( ruleOpCompare ) )
         {
-        // InternalSignalDSL.g:2388:7: ()
-        // InternalSignalDSL.g:2389:7: 
+        // InternalSignalDSL.g:2552:7: ()
+        // InternalSignalDSL.g:2553:7: 
         {
         }
 
-        // InternalSignalDSL.g:2390:7: ( ( ruleOpCompare ) )
-        // InternalSignalDSL.g:2391:8: ( ruleOpCompare )
+        // InternalSignalDSL.g:2554:7: ( ( ruleOpCompare ) )
+        // InternalSignalDSL.g:2555:8: ( ruleOpCompare )
         {
-        // InternalSignalDSL.g:2391:8: ( ruleOpCompare )
-        // InternalSignalDSL.g:2392:9: ruleOpCompare
+        // InternalSignalDSL.g:2555:8: ( ruleOpCompare )
+        // InternalSignalDSL.g:2556:9: ruleOpCompare
         {
         pushFollow(FOLLOW_2);
         ruleOpCompare();
@@ -22492,22 +22902,22 @@
 
     // $ANTLR start synpred13_InternalSignalDSL
     public final void synpred13_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2522:5: ( ( () ( ( ruleOpOther ) ) ) )
-        // InternalSignalDSL.g:2522:6: ( () ( ( ruleOpOther ) ) )
+        // InternalSignalDSL.g:2686:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalSignalDSL.g:2686:6: ( () ( ( ruleOpOther ) ) )
         {
-        // InternalSignalDSL.g:2522:6: ( () ( ( ruleOpOther ) ) )
-        // InternalSignalDSL.g:2523:6: () ( ( ruleOpOther ) )
+        // InternalSignalDSL.g:2686:6: ( () ( ( ruleOpOther ) ) )
+        // InternalSignalDSL.g:2687:6: () ( ( ruleOpOther ) )
         {
-        // InternalSignalDSL.g:2523:6: ()
-        // InternalSignalDSL.g:2524:6: 
+        // InternalSignalDSL.g:2687:6: ()
+        // InternalSignalDSL.g:2688:6: 
         {
         }
 
-        // InternalSignalDSL.g:2525:6: ( ( ruleOpOther ) )
-        // InternalSignalDSL.g:2526:7: ( ruleOpOther )
+        // InternalSignalDSL.g:2689:6: ( ( ruleOpOther ) )
+        // InternalSignalDSL.g:2690:7: ( ruleOpOther )
         {
-        // InternalSignalDSL.g:2526:7: ( ruleOpOther )
-        // InternalSignalDSL.g:2527:8: ruleOpOther
+        // InternalSignalDSL.g:2690:7: ( ruleOpOther )
+        // InternalSignalDSL.g:2691:8: ruleOpOther
         {
         pushFollow(FOLLOW_2);
         ruleOpOther();
@@ -22530,13 +22940,13 @@
 
     // $ANTLR start synpred14_InternalSignalDSL
     public final void synpred14_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2642:6: ( ( '>' '>' ) )
-        // InternalSignalDSL.g:2642:7: ( '>' '>' )
+        // InternalSignalDSL.g:2806:6: ( ( '>' '>' ) )
+        // InternalSignalDSL.g:2806:7: ( '>' '>' )
         {
-        // InternalSignalDSL.g:2642:7: ( '>' '>' )
-        // InternalSignalDSL.g:2643:7: '>' '>'
+        // InternalSignalDSL.g:2806:7: ( '>' '>' )
+        // InternalSignalDSL.g:2807:7: '>' '>'
         {
-        match(input,49,FOLLOW_44); if (state.failed) return ;
+        match(input,49,FOLLOW_47); if (state.failed) return ;
         match(input,49,FOLLOW_2); if (state.failed) return ;
 
         }
@@ -22548,13 +22958,13 @@
 
     // $ANTLR start synpred15_InternalSignalDSL
     public final void synpred15_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2677:6: ( ( '<' '<' ) )
-        // InternalSignalDSL.g:2677:7: ( '<' '<' )
+        // InternalSignalDSL.g:2841:6: ( ( '<' '<' ) )
+        // InternalSignalDSL.g:2841:7: ( '<' '<' )
         {
-        // InternalSignalDSL.g:2677:7: ( '<' '<' )
-        // InternalSignalDSL.g:2678:7: '<' '<'
+        // InternalSignalDSL.g:2841:7: ( '<' '<' )
+        // InternalSignalDSL.g:2842:7: '<' '<'
         {
-        match(input,48,FOLLOW_34); if (state.failed) return ;
+        match(input,48,FOLLOW_37); if (state.failed) return ;
         match(input,48,FOLLOW_2); if (state.failed) return ;
 
         }
@@ -22566,22 +22976,22 @@
 
     // $ANTLR start synpred16_InternalSignalDSL
     public final void synpred16_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2750:5: ( ( () ( ( ruleOpAdd ) ) ) )
-        // InternalSignalDSL.g:2750:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalSignalDSL.g:2914:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalSignalDSL.g:2914:6: ( () ( ( ruleOpAdd ) ) )
         {
-        // InternalSignalDSL.g:2750:6: ( () ( ( ruleOpAdd ) ) )
-        // InternalSignalDSL.g:2751:6: () ( ( ruleOpAdd ) )
+        // InternalSignalDSL.g:2914:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalSignalDSL.g:2915:6: () ( ( ruleOpAdd ) )
         {
-        // InternalSignalDSL.g:2751:6: ()
-        // InternalSignalDSL.g:2752:6: 
+        // InternalSignalDSL.g:2915:6: ()
+        // InternalSignalDSL.g:2916:6: 
         {
         }
 
-        // InternalSignalDSL.g:2753:6: ( ( ruleOpAdd ) )
-        // InternalSignalDSL.g:2754:7: ( ruleOpAdd )
+        // InternalSignalDSL.g:2917:6: ( ( ruleOpAdd ) )
+        // InternalSignalDSL.g:2918:7: ( ruleOpAdd )
         {
-        // InternalSignalDSL.g:2754:7: ( ruleOpAdd )
-        // InternalSignalDSL.g:2755:8: ruleOpAdd
+        // InternalSignalDSL.g:2918:7: ( ruleOpAdd )
+        // InternalSignalDSL.g:2919:8: ruleOpAdd
         {
         pushFollow(FOLLOW_2);
         ruleOpAdd();
@@ -22604,22 +23014,22 @@
 
     // $ANTLR start synpred17_InternalSignalDSL
     public final void synpred17_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2865:5: ( ( () ( ( ruleOpMulti ) ) ) )
-        // InternalSignalDSL.g:2865:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalSignalDSL.g:3029:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalSignalDSL.g:3029:6: ( () ( ( ruleOpMulti ) ) )
         {
-        // InternalSignalDSL.g:2865:6: ( () ( ( ruleOpMulti ) ) )
-        // InternalSignalDSL.g:2866:6: () ( ( ruleOpMulti ) )
+        // InternalSignalDSL.g:3029:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalSignalDSL.g:3030:6: () ( ( ruleOpMulti ) )
         {
-        // InternalSignalDSL.g:2866:6: ()
-        // InternalSignalDSL.g:2867:6: 
+        // InternalSignalDSL.g:3030:6: ()
+        // InternalSignalDSL.g:3031:6: 
         {
         }
 
-        // InternalSignalDSL.g:2868:6: ( ( ruleOpMulti ) )
-        // InternalSignalDSL.g:2869:7: ( ruleOpMulti )
+        // InternalSignalDSL.g:3032:6: ( ( ruleOpMulti ) )
+        // InternalSignalDSL.g:3033:7: ( ruleOpMulti )
         {
-        // InternalSignalDSL.g:2869:7: ( ruleOpMulti )
-        // InternalSignalDSL.g:2870:8: ruleOpMulti
+        // InternalSignalDSL.g:3033:7: ( ruleOpMulti )
+        // InternalSignalDSL.g:3034:8: ruleOpMulti
         {
         pushFollow(FOLLOW_2);
         ruleOpMulti();
@@ -22642,14 +23052,14 @@
 
     // $ANTLR start synpred18_InternalSignalDSL
     public final void synpred18_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3100:5: ( ( () 'as' ) )
-        // InternalSignalDSL.g:3100:6: ( () 'as' )
+        // InternalSignalDSL.g:3264:5: ( ( () 'as' ) )
+        // InternalSignalDSL.g:3264:6: ( () 'as' )
         {
-        // InternalSignalDSL.g:3100:6: ( () 'as' )
-        // InternalSignalDSL.g:3101:6: () 'as'
+        // InternalSignalDSL.g:3264:6: ( () 'as' )
+        // InternalSignalDSL.g:3265:6: () 'as'
         {
-        // InternalSignalDSL.g:3101:6: ()
-        // InternalSignalDSL.g:3102:6: 
+        // InternalSignalDSL.g:3265:6: ()
+        // InternalSignalDSL.g:3266:6: 
         {
         }
 
@@ -22664,22 +23074,22 @@
 
     // $ANTLR start synpred19_InternalSignalDSL
     public final void synpred19_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3168:4: ( ( () ( ( ruleOpPostfix ) ) ) )
-        // InternalSignalDSL.g:3168:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalSignalDSL.g:3332:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalSignalDSL.g:3332:5: ( () ( ( ruleOpPostfix ) ) )
         {
-        // InternalSignalDSL.g:3168:5: ( () ( ( ruleOpPostfix ) ) )
-        // InternalSignalDSL.g:3169:5: () ( ( ruleOpPostfix ) )
+        // InternalSignalDSL.g:3332:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalSignalDSL.g:3333:5: () ( ( ruleOpPostfix ) )
         {
-        // InternalSignalDSL.g:3169:5: ()
-        // InternalSignalDSL.g:3170:5: 
+        // InternalSignalDSL.g:3333:5: ()
+        // InternalSignalDSL.g:3334:5: 
         {
         }
 
-        // InternalSignalDSL.g:3171:5: ( ( ruleOpPostfix ) )
-        // InternalSignalDSL.g:3172:6: ( ruleOpPostfix )
+        // InternalSignalDSL.g:3335:5: ( ( ruleOpPostfix ) )
+        // InternalSignalDSL.g:3336:6: ( ruleOpPostfix )
         {
-        // InternalSignalDSL.g:3172:6: ( ruleOpPostfix )
-        // InternalSignalDSL.g:3173:7: ruleOpPostfix
+        // InternalSignalDSL.g:3336:6: ( ruleOpPostfix )
+        // InternalSignalDSL.g:3337:7: ruleOpPostfix
         {
         pushFollow(FOLLOW_2);
         ruleOpPostfix();
@@ -22702,52 +23112,52 @@
 
     // $ANTLR start synpred20_InternalSignalDSL
     public final void synpred20_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3264:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-        // InternalSignalDSL.g:3264:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalSignalDSL.g:3428:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalSignalDSL.g:3428:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
         {
-        // InternalSignalDSL.g:3264:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-        // InternalSignalDSL.g:3265:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        // InternalSignalDSL.g:3428:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalSignalDSL.g:3429:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
         {
-        // InternalSignalDSL.g:3265:7: ()
-        // InternalSignalDSL.g:3266:7: 
+        // InternalSignalDSL.g:3429:7: ()
+        // InternalSignalDSL.g:3430:7: 
         {
         }
 
-        // InternalSignalDSL.g:3267:7: ( '.' | ( ( '::' ) ) )
-        int alt134=2;
-        int LA134_0 = input.LA(1);
+        // InternalSignalDSL.g:3431:7: ( '.' | ( ( '::' ) ) )
+        int alt137=2;
+        int LA137_0 = input.LA(1);
 
-        if ( (LA134_0==73) ) {
-            alt134=1;
+        if ( (LA137_0==73) ) {
+            alt137=1;
         }
-        else if ( (LA134_0==74) ) {
-            alt134=2;
+        else if ( (LA137_0==74) ) {
+            alt137=2;
         }
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 134, 0, input);
+                new NoViableAltException("", 137, 0, input);
 
             throw nvae;
         }
-        switch (alt134) {
+        switch (alt137) {
             case 1 :
-                // InternalSignalDSL.g:3268:8: '.'
+                // InternalSignalDSL.g:3432:8: '.'
                 {
-                match(input,73,FOLLOW_51); if (state.failed) return ;
+                match(input,73,FOLLOW_54); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalSignalDSL.g:3270:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3434:8: ( ( '::' ) )
                 {
-                // InternalSignalDSL.g:3270:8: ( ( '::' ) )
-                // InternalSignalDSL.g:3271:9: ( '::' )
+                // InternalSignalDSL.g:3434:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3435:9: ( '::' )
                 {
-                // InternalSignalDSL.g:3271:9: ( '::' )
-                // InternalSignalDSL.g:3272:10: '::'
+                // InternalSignalDSL.g:3435:9: ( '::' )
+                // InternalSignalDSL.g:3436:10: '::'
                 {
-                match(input,74,FOLLOW_51); if (state.failed) return ;
+                match(input,74,FOLLOW_54); if (state.failed) return ;
 
                 }
 
@@ -22760,13 +23170,13 @@
 
         }
 
-        // InternalSignalDSL.g:3276:7: ( ( ruleFeatureCallID ) )
-        // InternalSignalDSL.g:3277:8: ( ruleFeatureCallID )
+        // InternalSignalDSL.g:3440:7: ( ( ruleFeatureCallID ) )
+        // InternalSignalDSL.g:3441:8: ( ruleFeatureCallID )
         {
-        // InternalSignalDSL.g:3277:8: ( ruleFeatureCallID )
-        // InternalSignalDSL.g:3278:9: ruleFeatureCallID
+        // InternalSignalDSL.g:3441:8: ( ruleFeatureCallID )
+        // InternalSignalDSL.g:3442:9: ruleFeatureCallID
         {
-        pushFollow(FOLLOW_27);
+        pushFollow(FOLLOW_30);
         ruleFeatureCallID();
 
         state._fsp--;
@@ -22792,59 +23202,59 @@
 
     // $ANTLR start synpred21_InternalSignalDSL
     public final void synpred21_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3361:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
-        // InternalSignalDSL.g:3361:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalSignalDSL.g:3525:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalSignalDSL.g:3525:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
         {
-        // InternalSignalDSL.g:3361:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
-        // InternalSignalDSL.g:3362:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        // InternalSignalDSL.g:3525:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalSignalDSL.g:3526:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
         {
-        // InternalSignalDSL.g:3362:7: ()
-        // InternalSignalDSL.g:3363:7: 
+        // InternalSignalDSL.g:3526:7: ()
+        // InternalSignalDSL.g:3527:7: 
         {
         }
 
-        // InternalSignalDSL.g:3364:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
-        int alt135=3;
+        // InternalSignalDSL.g:3528:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        int alt138=3;
         switch ( input.LA(1) ) {
         case 73:
             {
-            alt135=1;
+            alt138=1;
             }
             break;
         case 75:
             {
-            alt135=2;
+            alt138=2;
             }
             break;
         case 74:
             {
-            alt135=3;
+            alt138=3;
             }
             break;
         default:
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 135, 0, input);
+                new NoViableAltException("", 138, 0, input);
 
             throw nvae;
         }
 
-        switch (alt135) {
+        switch (alt138) {
             case 1 :
-                // InternalSignalDSL.g:3365:8: '.'
+                // InternalSignalDSL.g:3529:8: '.'
                 {
                 match(input,73,FOLLOW_2); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalSignalDSL.g:3367:8: ( ( '?.' ) )
+                // InternalSignalDSL.g:3531:8: ( ( '?.' ) )
                 {
-                // InternalSignalDSL.g:3367:8: ( ( '?.' ) )
-                // InternalSignalDSL.g:3368:9: ( '?.' )
+                // InternalSignalDSL.g:3531:8: ( ( '?.' ) )
+                // InternalSignalDSL.g:3532:9: ( '?.' )
                 {
-                // InternalSignalDSL.g:3368:9: ( '?.' )
-                // InternalSignalDSL.g:3369:10: '?.'
+                // InternalSignalDSL.g:3532:9: ( '?.' )
+                // InternalSignalDSL.g:3533:10: '?.'
                 {
                 match(input,75,FOLLOW_2); if (state.failed) return ;
 
@@ -22857,13 +23267,13 @@
                 }
                 break;
             case 3 :
-                // InternalSignalDSL.g:3373:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3537:8: ( ( '::' ) )
                 {
-                // InternalSignalDSL.g:3373:8: ( ( '::' ) )
-                // InternalSignalDSL.g:3374:9: ( '::' )
+                // InternalSignalDSL.g:3537:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3538:9: ( '::' )
                 {
-                // InternalSignalDSL.g:3374:9: ( '::' )
-                // InternalSignalDSL.g:3375:10: '::'
+                // InternalSignalDSL.g:3538:9: ( '::' )
+                // InternalSignalDSL.g:3539:10: '::'
                 {
                 match(input,74,FOLLOW_2); if (state.failed) return ;
 
@@ -22888,11 +23298,11 @@
 
     // $ANTLR start synpred22_InternalSignalDSL
     public final void synpred22_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3499:7: ( ( '(' ) )
-        // InternalSignalDSL.g:3499:8: ( '(' )
+        // InternalSignalDSL.g:3663:7: ( ( '(' ) )
+        // InternalSignalDSL.g:3663:8: ( '(' )
         {
-        // InternalSignalDSL.g:3499:8: ( '(' )
-        // InternalSignalDSL.g:3500:8: '('
+        // InternalSignalDSL.g:3663:8: ( '(' )
+        // InternalSignalDSL.g:3664:8: '('
         {
         match(input,36,FOLLOW_2); if (state.failed) return ;
 
@@ -22905,35 +23315,35 @@
 
     // $ANTLR start synpred23_InternalSignalDSL
     public final void synpred23_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3518:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:3518:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:3682:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:3682:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalSignalDSL.g:3518:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:3519:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalSignalDSL.g:3682:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:3683:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalSignalDSL.g:3519:9: ()
-        // InternalSignalDSL.g:3520:9: 
+        // InternalSignalDSL.g:3683:9: ()
+        // InternalSignalDSL.g:3684:9: 
         {
         }
 
-        // InternalSignalDSL.g:3521:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt137=2;
-        int LA137_0 = input.LA(1);
+        // InternalSignalDSL.g:3685:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt140=2;
+        int LA140_0 = input.LA(1);
 
-        if ( (LA137_0==RULE_ID||LA137_0==36||LA137_0==61) ) {
-            alt137=1;
+        if ( (LA140_0==RULE_ID||LA140_0==36||LA140_0==61) ) {
+            alt140=1;
         }
-        switch (alt137) {
+        switch (alt140) {
             case 1 :
-                // InternalSignalDSL.g:3522:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:3686:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalSignalDSL.g:3522:10: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:3523:11: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:3686:10: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:3687:11: ( ruleJvmFormalParameter )
                 {
-                // InternalSignalDSL.g:3523:11: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:3524:12: ruleJvmFormalParameter
+                // InternalSignalDSL.g:3687:11: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:3688:12: ruleJvmFormalParameter
                 {
-                pushFollow(FOLLOW_61);
+                pushFollow(FOLLOW_64);
                 ruleJvmFormalParameter();
 
                 state._fsp--;
@@ -22944,29 +23354,29 @@
 
                 }
 
-                // InternalSignalDSL.g:3527:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                loop136:
+                // InternalSignalDSL.g:3691:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop139:
                 do {
-                    int alt136=2;
-                    int LA136_0 = input.LA(1);
+                    int alt139=2;
+                    int LA139_0 = input.LA(1);
 
-                    if ( (LA136_0==37) ) {
-                        alt136=1;
+                    if ( (LA139_0==37) ) {
+                        alt139=1;
                     }
 
 
-                    switch (alt136) {
+                    switch (alt139) {
                 	case 1 :
-                	    // InternalSignalDSL.g:3528:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:3692:11: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,37,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:3529:11: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:3530:12: ( ruleJvmFormalParameter )
+                	    match(input,37,FOLLOW_44); if (state.failed) return ;
+                	    // InternalSignalDSL.g:3693:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:3694:12: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalSignalDSL.g:3530:12: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:3531:13: ruleJvmFormalParameter
+                	    // InternalSignalDSL.g:3694:12: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:3695:13: ruleJvmFormalParameter
                 	    {
-                	    pushFollow(FOLLOW_61);
+                	    pushFollow(FOLLOW_64);
                 	    ruleJvmFormalParameter();
 
                 	    state._fsp--;
@@ -22982,7 +23392,7 @@
                 	    break;
 
                 	default :
-                	    break loop136;
+                	    break loop139;
                     }
                 } while (true);
 
@@ -22992,11 +23402,11 @@
 
         }
 
-        // InternalSignalDSL.g:3536:9: ( ( '|' ) )
-        // InternalSignalDSL.g:3537:10: ( '|' )
+        // InternalSignalDSL.g:3700:9: ( ( '|' ) )
+        // InternalSignalDSL.g:3701:10: ( '|' )
         {
-        // InternalSignalDSL.g:3537:10: ( '|' )
-        // InternalSignalDSL.g:3538:11: '|'
+        // InternalSignalDSL.g:3701:10: ( '|' )
+        // InternalSignalDSL.g:3702:11: '|'
         {
         match(input,76,FOLLOW_2); if (state.failed) return ;
 
@@ -23015,14 +23425,14 @@
 
     // $ANTLR start synpred24_InternalSignalDSL
     public final void synpred24_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3615:6: ( ( () '[' ) )
-        // InternalSignalDSL.g:3615:7: ( () '[' )
+        // InternalSignalDSL.g:3779:6: ( ( () '[' ) )
+        // InternalSignalDSL.g:3779:7: ( () '[' )
         {
-        // InternalSignalDSL.g:3615:7: ( () '[' )
-        // InternalSignalDSL.g:3616:7: () '['
+        // InternalSignalDSL.g:3779:7: ( () '[' )
+        // InternalSignalDSL.g:3780:7: () '['
         {
-        // InternalSignalDSL.g:3616:7: ()
-        // InternalSignalDSL.g:3617:7: 
+        // InternalSignalDSL.g:3780:7: ()
+        // InternalSignalDSL.g:3781:7: 
         {
         }
 
@@ -23037,18 +23447,18 @@
 
     // $ANTLR start synpred25_InternalSignalDSL
     public final void synpred25_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3688:4: ( ( () 'synchronized' '(' ) )
-        // InternalSignalDSL.g:3688:5: ( () 'synchronized' '(' )
+        // InternalSignalDSL.g:3852:4: ( ( () 'synchronized' '(' ) )
+        // InternalSignalDSL.g:3852:5: ( () 'synchronized' '(' )
         {
-        // InternalSignalDSL.g:3688:5: ( () 'synchronized' '(' )
-        // InternalSignalDSL.g:3689:5: () 'synchronized' '('
+        // InternalSignalDSL.g:3852:5: ( () 'synchronized' '(' )
+        // InternalSignalDSL.g:3853:5: () 'synchronized' '('
         {
-        // InternalSignalDSL.g:3689:5: ()
-        // InternalSignalDSL.g:3690:5: 
+        // InternalSignalDSL.g:3853:5: ()
+        // InternalSignalDSL.g:3854:5: 
         {
         }
 
-        match(input,98,FOLLOW_66); if (state.failed) return ;
+        match(input,98,FOLLOW_69); if (state.failed) return ;
         match(input,36,FOLLOW_2); if (state.failed) return ;
 
         }
@@ -23060,26 +23470,26 @@
 
     // $ANTLR start synpred26_InternalSignalDSL
     public final void synpred26_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3733:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalSignalDSL.g:3733:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:3897:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalSignalDSL.g:3897:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalSignalDSL.g:3733:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalSignalDSL.g:3734:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalSignalDSL.g:3897:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:3898:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
         {
-        // InternalSignalDSL.g:3734:5: ()
-        // InternalSignalDSL.g:3735:5: 
+        // InternalSignalDSL.g:3898:5: ()
+        // InternalSignalDSL.g:3899:5: 
         {
         }
 
-        match(input,82,FOLLOW_66); if (state.failed) return ;
-        match(input,36,FOLLOW_41); if (state.failed) return ;
-        // InternalSignalDSL.g:3738:5: ( ( ruleJvmFormalParameter ) )
-        // InternalSignalDSL.g:3739:6: ( ruleJvmFormalParameter )
+        match(input,82,FOLLOW_69); if (state.failed) return ;
+        match(input,36,FOLLOW_44); if (state.failed) return ;
+        // InternalSignalDSL.g:3902:5: ( ( ruleJvmFormalParameter ) )
+        // InternalSignalDSL.g:3903:6: ( ruleJvmFormalParameter )
         {
-        // InternalSignalDSL.g:3739:6: ( ruleJvmFormalParameter )
-        // InternalSignalDSL.g:3740:7: ruleJvmFormalParameter
+        // InternalSignalDSL.g:3903:6: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:3904:7: ruleJvmFormalParameter
         {
-        pushFollow(FOLLOW_15);
+        pushFollow(FOLLOW_18);
         ruleJvmFormalParameter();
 
         state._fsp--;
@@ -23101,14 +23511,14 @@
 
     // $ANTLR start synpred27_InternalSignalDSL
     public final void synpred27_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3847:4: ( ( () '[' ) )
-        // InternalSignalDSL.g:3847:5: ( () '[' )
+        // InternalSignalDSL.g:4011:4: ( ( () '[' ) )
+        // InternalSignalDSL.g:4011:5: ( () '[' )
         {
-        // InternalSignalDSL.g:3847:5: ( () '[' )
-        // InternalSignalDSL.g:3848:5: () '['
+        // InternalSignalDSL.g:4011:5: ( () '[' )
+        // InternalSignalDSL.g:4012:5: () '['
         {
-        // InternalSignalDSL.g:3848:5: ()
-        // InternalSignalDSL.g:3849:5: 
+        // InternalSignalDSL.g:4012:5: ()
+        // InternalSignalDSL.g:4013:5: 
         {
         }
 
@@ -23123,30 +23533,30 @@
 
     // $ANTLR start synpred29_InternalSignalDSL
     public final void synpred29_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:4152:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:4152:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:4316:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:4316:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalSignalDSL.g:4152:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:4153:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalSignalDSL.g:4316:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:4317:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalSignalDSL.g:4153:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt139=2;
-        int LA139_0 = input.LA(1);
+        // InternalSignalDSL.g:4317:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt142=2;
+        int LA142_0 = input.LA(1);
 
-        if ( (LA139_0==RULE_ID||LA139_0==36||LA139_0==61) ) {
-            alt139=1;
+        if ( (LA142_0==RULE_ID||LA142_0==36||LA142_0==61) ) {
+            alt142=1;
         }
-        switch (alt139) {
+        switch (alt142) {
             case 1 :
-                // InternalSignalDSL.g:4154:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:4318:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalSignalDSL.g:4154:6: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:4155:7: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:4318:6: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:4319:7: ( ruleJvmFormalParameter )
                 {
-                // InternalSignalDSL.g:4155:7: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:4156:8: ruleJvmFormalParameter
+                // InternalSignalDSL.g:4319:7: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:4320:8: ruleJvmFormalParameter
                 {
-                pushFollow(FOLLOW_61);
+                pushFollow(FOLLOW_64);
                 ruleJvmFormalParameter();
 
                 state._fsp--;
@@ -23157,29 +23567,29 @@
 
                 }
 
-                // InternalSignalDSL.g:4159:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                loop138:
+                // InternalSignalDSL.g:4323:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop141:
                 do {
-                    int alt138=2;
-                    int LA138_0 = input.LA(1);
+                    int alt141=2;
+                    int LA141_0 = input.LA(1);
 
-                    if ( (LA138_0==37) ) {
-                        alt138=1;
+                    if ( (LA141_0==37) ) {
+                        alt141=1;
                     }
 
 
-                    switch (alt138) {
+                    switch (alt141) {
                 	case 1 :
-                	    // InternalSignalDSL.g:4160:7: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:4324:7: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,37,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:4161:7: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:4162:8: ( ruleJvmFormalParameter )
+                	    match(input,37,FOLLOW_44); if (state.failed) return ;
+                	    // InternalSignalDSL.g:4325:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:4326:8: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalSignalDSL.g:4162:8: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:4163:9: ruleJvmFormalParameter
+                	    // InternalSignalDSL.g:4326:8: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:4327:9: ruleJvmFormalParameter
                 	    {
-                	    pushFollow(FOLLOW_61);
+                	    pushFollow(FOLLOW_64);
                 	    ruleJvmFormalParameter();
 
                 	    state._fsp--;
@@ -23195,7 +23605,7 @@
                 	    break;
 
                 	default :
-                	    break loop138;
+                	    break loop141;
                     }
                 } while (true);
 
@@ -23205,11 +23615,11 @@
 
         }
 
-        // InternalSignalDSL.g:4168:5: ( ( '|' ) )
-        // InternalSignalDSL.g:4169:6: ( '|' )
+        // InternalSignalDSL.g:4332:5: ( ( '|' ) )
+        // InternalSignalDSL.g:4333:6: ( '|' )
         {
-        // InternalSignalDSL.g:4169:6: ( '|' )
-        // InternalSignalDSL.g:4170:7: '|'
+        // InternalSignalDSL.g:4333:6: ( '|' )
+        // InternalSignalDSL.g:4334:7: '|'
         {
         match(input,76,FOLLOW_2); if (state.failed) return ;
 
@@ -23228,8 +23638,8 @@
 
     // $ANTLR start synpred31_InternalSignalDSL
     public final void synpred31_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:4561:5: ( 'else' )
-        // InternalSignalDSL.g:4561:6: 'else'
+        // InternalSignalDSL.g:4725:5: ( 'else' )
+        // InternalSignalDSL.g:4725:6: 'else'
         {
         match(input,78,FOLLOW_2); if (state.failed) return ;
 
@@ -23239,20 +23649,20 @@
 
     // $ANTLR start synpred32_InternalSignalDSL
     public final void synpred32_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:4620:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalSignalDSL.g:4620:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4784:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalSignalDSL.g:4784:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalSignalDSL.g:4620:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalSignalDSL.g:4621:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalSignalDSL.g:4784:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4785:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
         {
-        match(input,36,FOLLOW_41); if (state.failed) return ;
-        // InternalSignalDSL.g:4622:7: ( ( ruleJvmFormalParameter ) )
-        // InternalSignalDSL.g:4623:8: ( ruleJvmFormalParameter )
+        match(input,36,FOLLOW_44); if (state.failed) return ;
+        // InternalSignalDSL.g:4786:7: ( ( ruleJvmFormalParameter ) )
+        // InternalSignalDSL.g:4787:8: ( ruleJvmFormalParameter )
         {
-        // InternalSignalDSL.g:4623:8: ( ruleJvmFormalParameter )
-        // InternalSignalDSL.g:4624:9: ruleJvmFormalParameter
+        // InternalSignalDSL.g:4787:8: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:4788:9: ruleJvmFormalParameter
         {
-        pushFollow(FOLLOW_15);
+        pushFollow(FOLLOW_18);
         ruleJvmFormalParameter();
 
         state._fsp--;
@@ -23274,19 +23684,19 @@
 
     // $ANTLR start synpred33_InternalSignalDSL
     public final void synpred33_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:4687:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalSignalDSL.g:4687:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4851:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalSignalDSL.g:4851:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalSignalDSL.g:4687:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalSignalDSL.g:4688:7: ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalSignalDSL.g:4851:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4852:7: ( ( ruleJvmFormalParameter ) ) ':'
         {
-        // InternalSignalDSL.g:4688:7: ( ( ruleJvmFormalParameter ) )
-        // InternalSignalDSL.g:4689:8: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:4852:7: ( ( ruleJvmFormalParameter ) )
+        // InternalSignalDSL.g:4853:8: ( ruleJvmFormalParameter )
         {
-        // InternalSignalDSL.g:4689:8: ( ruleJvmFormalParameter )
-        // InternalSignalDSL.g:4690:9: ruleJvmFormalParameter
+        // InternalSignalDSL.g:4853:8: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:4854:9: ruleJvmFormalParameter
         {
-        pushFollow(FOLLOW_15);
+        pushFollow(FOLLOW_18);
         ruleJvmFormalParameter();
 
         state._fsp--;
@@ -23308,17 +23718,17 @@
 
     // $ANTLR start synpred35_InternalSignalDSL
     public final void synpred35_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5505:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
-        // InternalSignalDSL.g:5505:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalSignalDSL.g:5669:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalSignalDSL.g:5669:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
         {
-        // InternalSignalDSL.g:5505:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
-        // InternalSignalDSL.g:5506:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        // InternalSignalDSL.g:5669:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalSignalDSL.g:5670:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
         {
-        // InternalSignalDSL.g:5506:6: ( ( ruleJvmTypeReference ) )
-        // InternalSignalDSL.g:5507:7: ( ruleJvmTypeReference )
+        // InternalSignalDSL.g:5670:6: ( ( ruleJvmTypeReference ) )
+        // InternalSignalDSL.g:5671:7: ( ruleJvmTypeReference )
         {
-        // InternalSignalDSL.g:5507:7: ( ruleJvmTypeReference )
-        // InternalSignalDSL.g:5508:8: ruleJvmTypeReference
+        // InternalSignalDSL.g:5671:7: ( ruleJvmTypeReference )
+        // InternalSignalDSL.g:5672:8: ruleJvmTypeReference
         {
         pushFollow(FOLLOW_4);
         ruleJvmTypeReference();
@@ -23331,11 +23741,11 @@
 
         }
 
-        // InternalSignalDSL.g:5511:6: ( ( ruleValidID ) )
-        // InternalSignalDSL.g:5512:7: ( ruleValidID )
+        // InternalSignalDSL.g:5675:6: ( ( ruleValidID ) )
+        // InternalSignalDSL.g:5676:7: ( ruleValidID )
         {
-        // InternalSignalDSL.g:5512:7: ( ruleValidID )
-        // InternalSignalDSL.g:5513:8: ruleValidID
+        // InternalSignalDSL.g:5676:7: ( ruleValidID )
+        // InternalSignalDSL.g:5677:8: ruleValidID
         {
         pushFollow(FOLLOW_2);
         ruleValidID();
@@ -23358,11 +23768,11 @@
 
     // $ANTLR start synpred36_InternalSignalDSL
     public final void synpred36_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5817:5: ( ( '(' ) )
-        // InternalSignalDSL.g:5817:6: ( '(' )
+        // InternalSignalDSL.g:5981:5: ( ( '(' ) )
+        // InternalSignalDSL.g:5981:6: ( '(' )
         {
-        // InternalSignalDSL.g:5817:6: ( '(' )
-        // InternalSignalDSL.g:5818:6: '('
+        // InternalSignalDSL.g:5981:6: ( '(' )
+        // InternalSignalDSL.g:5982:6: '('
         {
         match(input,36,FOLLOW_2); if (state.failed) return ;
 
@@ -23375,35 +23785,35 @@
 
     // $ANTLR start synpred37_InternalSignalDSL
     public final void synpred37_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5836:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:5836:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:6000:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:6000:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalSignalDSL.g:5836:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:5837:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalSignalDSL.g:6000:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:6001:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalSignalDSL.g:5837:7: ()
-        // InternalSignalDSL.g:5838:7: 
+        // InternalSignalDSL.g:6001:7: ()
+        // InternalSignalDSL.g:6002:7: 
         {
         }
 
-        // InternalSignalDSL.g:5839:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt143=2;
-        int LA143_0 = input.LA(1);
+        // InternalSignalDSL.g:6003:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt146=2;
+        int LA146_0 = input.LA(1);
 
-        if ( (LA143_0==RULE_ID||LA143_0==36||LA143_0==61) ) {
-            alt143=1;
+        if ( (LA146_0==RULE_ID||LA146_0==36||LA146_0==61) ) {
+            alt146=1;
         }
-        switch (alt143) {
+        switch (alt146) {
             case 1 :
-                // InternalSignalDSL.g:5840:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:6004:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalSignalDSL.g:5840:8: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:5841:9: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:6004:8: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:6005:9: ( ruleJvmFormalParameter )
                 {
-                // InternalSignalDSL.g:5841:9: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:5842:10: ruleJvmFormalParameter
+                // InternalSignalDSL.g:6005:9: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:6006:10: ruleJvmFormalParameter
                 {
-                pushFollow(FOLLOW_61);
+                pushFollow(FOLLOW_64);
                 ruleJvmFormalParameter();
 
                 state._fsp--;
@@ -23414,29 +23824,29 @@
 
                 }
 
-                // InternalSignalDSL.g:5845:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                loop142:
+                // InternalSignalDSL.g:6009:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop145:
                 do {
-                    int alt142=2;
-                    int LA142_0 = input.LA(1);
+                    int alt145=2;
+                    int LA145_0 = input.LA(1);
 
-                    if ( (LA142_0==37) ) {
-                        alt142=1;
+                    if ( (LA145_0==37) ) {
+                        alt145=1;
                     }
 
 
-                    switch (alt142) {
+                    switch (alt145) {
                 	case 1 :
-                	    // InternalSignalDSL.g:5846:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:6010:9: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,37,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:5847:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:5848:10: ( ruleJvmFormalParameter )
+                	    match(input,37,FOLLOW_44); if (state.failed) return ;
+                	    // InternalSignalDSL.g:6011:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:6012:10: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalSignalDSL.g:5848:10: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:5849:11: ruleJvmFormalParameter
+                	    // InternalSignalDSL.g:6012:10: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:6013:11: ruleJvmFormalParameter
                 	    {
-                	    pushFollow(FOLLOW_61);
+                	    pushFollow(FOLLOW_64);
                 	    ruleJvmFormalParameter();
 
                 	    state._fsp--;
@@ -23452,7 +23862,7 @@
                 	    break;
 
                 	default :
-                	    break loop142;
+                	    break loop145;
                     }
                 } while (true);
 
@@ -23462,11 +23872,11 @@
 
         }
 
-        // InternalSignalDSL.g:5854:7: ( ( '|' ) )
-        // InternalSignalDSL.g:5855:8: ( '|' )
+        // InternalSignalDSL.g:6018:7: ( ( '|' ) )
+        // InternalSignalDSL.g:6019:8: ( '|' )
         {
-        // InternalSignalDSL.g:5855:8: ( '|' )
-        // InternalSignalDSL.g:5856:9: '|'
+        // InternalSignalDSL.g:6019:8: ( '|' )
+        // InternalSignalDSL.g:6020:9: '|'
         {
         match(input,76,FOLLOW_2); if (state.failed) return ;
 
@@ -23485,14 +23895,14 @@
 
     // $ANTLR start synpred38_InternalSignalDSL
     public final void synpred38_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5933:4: ( ( () '[' ) )
-        // InternalSignalDSL.g:5933:5: ( () '[' )
+        // InternalSignalDSL.g:6097:4: ( ( () '[' ) )
+        // InternalSignalDSL.g:6097:5: ( () '[' )
         {
-        // InternalSignalDSL.g:5933:5: ( () '[' )
-        // InternalSignalDSL.g:5934:5: () '['
+        // InternalSignalDSL.g:6097:5: ( () '[' )
+        // InternalSignalDSL.g:6098:5: () '['
         {
-        // InternalSignalDSL.g:5934:5: ()
-        // InternalSignalDSL.g:5935:5: 
+        // InternalSignalDSL.g:6098:5: ()
+        // InternalSignalDSL.g:6099:5: 
         {
         }
 
@@ -23507,8 +23917,8 @@
 
     // $ANTLR start synpred39_InternalSignalDSL
     public final void synpred39_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6093:5: ( '<' )
-        // InternalSignalDSL.g:6093:6: '<'
+        // InternalSignalDSL.g:6257:5: ( '<' )
+        // InternalSignalDSL.g:6257:6: '<'
         {
         match(input,48,FOLLOW_2); if (state.failed) return ;
 
@@ -23518,11 +23928,11 @@
 
     // $ANTLR start synpred40_InternalSignalDSL
     public final void synpred40_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6150:5: ( ( '(' ) )
-        // InternalSignalDSL.g:6150:6: ( '(' )
+        // InternalSignalDSL.g:6314:5: ( ( '(' ) )
+        // InternalSignalDSL.g:6314:6: ( '(' )
         {
-        // InternalSignalDSL.g:6150:6: ( '(' )
-        // InternalSignalDSL.g:6151:6: '('
+        // InternalSignalDSL.g:6314:6: ( '(' )
+        // InternalSignalDSL.g:6315:6: '('
         {
         match(input,36,FOLLOW_2); if (state.failed) return ;
 
@@ -23535,35 +23945,35 @@
 
     // $ANTLR start synpred41_InternalSignalDSL
     public final void synpred41_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6169:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:6169:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:6333:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:6333:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalSignalDSL.g:6169:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:6170:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalSignalDSL.g:6333:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:6334:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalSignalDSL.g:6170:7: ()
-        // InternalSignalDSL.g:6171:7: 
+        // InternalSignalDSL.g:6334:7: ()
+        // InternalSignalDSL.g:6335:7: 
         {
         }
 
-        // InternalSignalDSL.g:6172:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt145=2;
-        int LA145_0 = input.LA(1);
+        // InternalSignalDSL.g:6336:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt148=2;
+        int LA148_0 = input.LA(1);
 
-        if ( (LA145_0==RULE_ID||LA145_0==36||LA145_0==61) ) {
-            alt145=1;
+        if ( (LA148_0==RULE_ID||LA148_0==36||LA148_0==61) ) {
+            alt148=1;
         }
-        switch (alt145) {
+        switch (alt148) {
             case 1 :
-                // InternalSignalDSL.g:6173:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:6337:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalSignalDSL.g:6173:8: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:6174:9: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:6337:8: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:6338:9: ( ruleJvmFormalParameter )
                 {
-                // InternalSignalDSL.g:6174:9: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:6175:10: ruleJvmFormalParameter
+                // InternalSignalDSL.g:6338:9: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:6339:10: ruleJvmFormalParameter
                 {
-                pushFollow(FOLLOW_61);
+                pushFollow(FOLLOW_64);
                 ruleJvmFormalParameter();
 
                 state._fsp--;
@@ -23574,29 +23984,29 @@
 
                 }
 
-                // InternalSignalDSL.g:6178:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                loop144:
+                // InternalSignalDSL.g:6342:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop147:
                 do {
-                    int alt144=2;
-                    int LA144_0 = input.LA(1);
+                    int alt147=2;
+                    int LA147_0 = input.LA(1);
 
-                    if ( (LA144_0==37) ) {
-                        alt144=1;
+                    if ( (LA147_0==37) ) {
+                        alt147=1;
                     }
 
 
-                    switch (alt144) {
+                    switch (alt147) {
                 	case 1 :
-                	    // InternalSignalDSL.g:6179:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:6343:9: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,37,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:6180:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:6181:10: ( ruleJvmFormalParameter )
+                	    match(input,37,FOLLOW_44); if (state.failed) return ;
+                	    // InternalSignalDSL.g:6344:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:6345:10: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalSignalDSL.g:6181:10: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:6182:11: ruleJvmFormalParameter
+                	    // InternalSignalDSL.g:6345:10: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:6346:11: ruleJvmFormalParameter
                 	    {
-                	    pushFollow(FOLLOW_61);
+                	    pushFollow(FOLLOW_64);
                 	    ruleJvmFormalParameter();
 
                 	    state._fsp--;
@@ -23612,7 +24022,7 @@
                 	    break;
 
                 	default :
-                	    break loop144;
+                	    break loop147;
                     }
                 } while (true);
 
@@ -23622,11 +24032,11 @@
 
         }
 
-        // InternalSignalDSL.g:6187:7: ( ( '|' ) )
-        // InternalSignalDSL.g:6188:8: ( '|' )
+        // InternalSignalDSL.g:6351:7: ( ( '|' ) )
+        // InternalSignalDSL.g:6352:8: ( '|' )
         {
-        // InternalSignalDSL.g:6188:8: ( '|' )
-        // InternalSignalDSL.g:6189:9: '|'
+        // InternalSignalDSL.g:6352:8: ( '|' )
+        // InternalSignalDSL.g:6353:9: '|'
         {
         match(input,76,FOLLOW_2); if (state.failed) return ;
 
@@ -23645,14 +24055,14 @@
 
     // $ANTLR start synpred42_InternalSignalDSL
     public final void synpred42_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6266:4: ( ( () '[' ) )
-        // InternalSignalDSL.g:6266:5: ( () '[' )
+        // InternalSignalDSL.g:6430:4: ( ( () '[' ) )
+        // InternalSignalDSL.g:6430:5: ( () '[' )
         {
-        // InternalSignalDSL.g:6266:5: ( () '[' )
-        // InternalSignalDSL.g:6267:5: () '['
+        // InternalSignalDSL.g:6430:5: ( () '[' )
+        // InternalSignalDSL.g:6431:5: () '['
         {
-        // InternalSignalDSL.g:6267:5: ()
-        // InternalSignalDSL.g:6268:5: 
+        // InternalSignalDSL.g:6431:5: ()
+        // InternalSignalDSL.g:6432:5: 
         {
         }
 
@@ -23667,7 +24077,7 @@
 
     // $ANTLR start synpred43_InternalSignalDSL
     public final void synpred43_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6609:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )
+        // InternalSignalDSL.g:6773:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )
         // InternalSignalDSL.g:
         {
         if ( (input.LA(1)>=RULE_STRING && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=29 && input.LA(1)<=31)||input.LA(1)==36||(input.LA(1)>=40 && input.LA(1)<=41)||input.LA(1)==48||(input.LA(1)>=64 && input.LA(1)<=65)||input.LA(1)==69||input.LA(1)==77||input.LA(1)==79||(input.LA(1)>=82 && input.LA(1)<=84)||(input.LA(1)>=87 && input.LA(1)<=96)||input.LA(1)==98 ) {
@@ -23687,8 +24097,8 @@
 
     // $ANTLR start synpred44_InternalSignalDSL
     public final void synpred44_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6680:6: ( 'catch' )
-        // InternalSignalDSL.g:6680:7: 'catch'
+        // InternalSignalDSL.g:6844:6: ( 'catch' )
+        // InternalSignalDSL.g:6844:7: 'catch'
         {
         match(input,99,FOLLOW_2); if (state.failed) return ;
 
@@ -23698,8 +24108,8 @@
 
     // $ANTLR start synpred45_InternalSignalDSL
     public final void synpred45_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6701:7: ( 'finally' )
-        // InternalSignalDSL.g:6701:8: 'finally'
+        // InternalSignalDSL.g:6865:7: ( 'finally' )
+        // InternalSignalDSL.g:6865:8: 'finally'
         {
         match(input,97,FOLLOW_2); if (state.failed) return ;
 
@@ -23709,8 +24119,8 @@
 
     // $ANTLR start synpred48_InternalSignalDSL
     public final void synpred48_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6945:5: ( '.' )
-        // InternalSignalDSL.g:6945:6: '.'
+        // InternalSignalDSL.g:7109:5: ( '.' )
+        // InternalSignalDSL.g:7109:6: '.'
         {
         match(input,73,FOLLOW_2); if (state.failed) return ;
 
@@ -23720,14 +24130,14 @@
 
     // $ANTLR start synpred49_InternalSignalDSL
     public final void synpred49_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7071:5: ( ( () ruleArrayBrackets ) )
-        // InternalSignalDSL.g:7071:6: ( () ruleArrayBrackets )
+        // InternalSignalDSL.g:7235:5: ( ( () ruleArrayBrackets ) )
+        // InternalSignalDSL.g:7235:6: ( () ruleArrayBrackets )
         {
-        // InternalSignalDSL.g:7071:6: ( () ruleArrayBrackets )
-        // InternalSignalDSL.g:7072:6: () ruleArrayBrackets
+        // InternalSignalDSL.g:7235:6: ( () ruleArrayBrackets )
+        // InternalSignalDSL.g:7236:6: () ruleArrayBrackets
         {
-        // InternalSignalDSL.g:7072:6: ()
-        // InternalSignalDSL.g:7073:6: 
+        // InternalSignalDSL.g:7236:6: ()
+        // InternalSignalDSL.g:7237:6: 
         {
         }
 
@@ -23746,8 +24156,8 @@
 
     // $ANTLR start synpred50_InternalSignalDSL
     public final void synpred50_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7268:5: ( '<' )
-        // InternalSignalDSL.g:7268:6: '<'
+        // InternalSignalDSL.g:7432:5: ( '<' )
+        // InternalSignalDSL.g:7432:6: '<'
         {
         match(input,48,FOLLOW_2); if (state.failed) return ;
 
@@ -23757,14 +24167,14 @@
 
     // $ANTLR start synpred51_InternalSignalDSL
     public final void synpred51_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7324:6: ( ( () '.' ) )
-        // InternalSignalDSL.g:7324:7: ( () '.' )
+        // InternalSignalDSL.g:7488:6: ( ( () '.' ) )
+        // InternalSignalDSL.g:7488:7: ( () '.' )
         {
-        // InternalSignalDSL.g:7324:7: ( () '.' )
-        // InternalSignalDSL.g:7325:7: () '.'
+        // InternalSignalDSL.g:7488:7: ( () '.' )
+        // InternalSignalDSL.g:7489:7: () '.'
         {
-        // InternalSignalDSL.g:7325:7: ()
-        // InternalSignalDSL.g:7326:7: 
+        // InternalSignalDSL.g:7489:7: ()
+        // InternalSignalDSL.g:7490:7: 
         {
         }
 
@@ -23779,8 +24189,8 @@
 
     // $ANTLR start synpred52_InternalSignalDSL
     public final void synpred52_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7362:7: ( '<' )
-        // InternalSignalDSL.g:7362:8: '<'
+        // InternalSignalDSL.g:7526:7: ( '<' )
+        // InternalSignalDSL.g:7526:8: '<'
         {
         match(input,48,FOLLOW_2); if (state.failed) return ;
 
@@ -24422,42 +24832,42 @@
     }
 
 
-    protected DFA10 dfa10 = new DFA10(this);
     protected DFA13 dfa13 = new DFA13(this);
-    protected DFA19 dfa19 = new DFA19(this);
+    protected DFA16 dfa16 = new DFA16(this);
     protected DFA22 dfa22 = new DFA22(this);
-    protected DFA24 dfa24 = new DFA24(this);
-    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA25 dfa25 = new DFA25(this);
+    protected DFA27 dfa27 = new DFA27(this);
     protected DFA37 dfa37 = new DFA37(this);
-    protected DFA53 dfa53 = new DFA53(this);
-    protected DFA52 dfa52 = new DFA52(this);
-    protected DFA54 dfa54 = new DFA54(this);
+    protected DFA40 dfa40 = new DFA40(this);
     protected DFA56 dfa56 = new DFA56(this);
-    protected DFA65 dfa65 = new DFA65(this);
-    protected DFA72 dfa72 = new DFA72(this);
-    protected DFA71 dfa71 = new DFA71(this);
-    protected DFA94 dfa94 = new DFA94(this);
-    protected DFA93 dfa93 = new DFA93(this);
-    protected DFA95 dfa95 = new DFA95(this);
-    protected DFA99 dfa99 = new DFA99(this);
+    protected DFA55 dfa55 = new DFA55(this);
+    protected DFA57 dfa57 = new DFA57(this);
+    protected DFA59 dfa59 = new DFA59(this);
+    protected DFA68 dfa68 = new DFA68(this);
+    protected DFA75 dfa75 = new DFA75(this);
+    protected DFA74 dfa74 = new DFA74(this);
+    protected DFA97 dfa97 = new DFA97(this);
+    protected DFA96 dfa96 = new DFA96(this);
+    protected DFA98 dfa98 = new DFA98(this);
     protected DFA102 dfa102 = new DFA102(this);
-    protected DFA101 dfa101 = new DFA101(this);
-    protected DFA103 dfa103 = new DFA103(this);
+    protected DFA105 dfa105 = new DFA105(this);
+    protected DFA104 dfa104 = new DFA104(this);
     protected DFA106 dfa106 = new DFA106(this);
-    protected DFA124 dfa124 = new DFA124(this);
-    protected DFA122 dfa122 = new DFA122(this);
+    protected DFA109 dfa109 = new DFA109(this);
+    protected DFA127 dfa127 = new DFA127(this);
+    protected DFA125 dfa125 = new DFA125(this);
     static final String dfa_1s = "\10\uffff";
     static final String dfa_2s = "\2\uffff\1\5\4\uffff\1\5";
-    static final String dfa_3s = "\1\6\1\uffff\1\15\1\uffff\1\6\2\uffff\1\15";
+    static final String dfa_3s = "\1\5\1\uffff\1\15\1\uffff\1\5\2\uffff\1\15";
     static final String dfa_4s = "\1\41\1\uffff\1\111\1\uffff\1\40\2\uffff\1\111";
     static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\3\1\uffff";
     static final String dfa_6s = "\10\uffff}>";
     static final String[] dfa_7s = {
-            "\1\2\27\uffff\1\1\2\uffff\1\3",
+            "\1\2\30\uffff\1\1\2\uffff\1\3",
             "",
             "\1\5\17\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
             "",
-            "\1\7\31\uffff\1\6",
+            "\1\7\32\uffff\1\6",
             "",
             "",
             "\1\5\17\uffff\1\5\4\uffff\1\5\46\uffff\1\4"
@@ -24471,11 +24881,11 @@
     static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
     static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
 
-    class DFA10 extends DFA {
+    class DFA13 extends DFA {
 
-        public DFA10(BaseRecognizer recognizer) {
+        public DFA13(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 10;
+            this.decisionNumber = 13;
             this.eot = dfa_1;
             this.eof = dfa_2;
             this.min = dfa_3;
@@ -24485,7 +24895,7 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "1038:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )";
+            return "1202:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )";
         }
     }
     static final String dfa_8s = "\44\uffff";
@@ -24494,7 +24904,7 @@
     static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\3\1\1";
     static final String dfa_12s = "\1\uffff\1\0\42\uffff}>";
     static final String[] dfa_13s = {
-            "\2\2\1\1\2\2\5\uffff\1\2\16\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\2\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\2\1\1\3\2\5\uffff\1\2\16\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\2\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -24539,11 +24949,11 @@
     static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
     static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
 
-    class DFA13 extends DFA {
+    class DFA16 extends DFA {
 
-        public DFA13(BaseRecognizer recognizer) {
+        public DFA16(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 13;
+            this.decisionNumber = 16;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_9;
@@ -24553,17 +24963,17 @@
             this.transition = dfa_13;
         }
         public String getDescription() {
-            return "1255:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
+            return "1419:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA13_1 = input.LA(1);
+                        int LA16_1 = input.LA(1);
 
                          
-                        int index13_1 = input.index();
+                        int index16_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred2_InternalSignalDSL()) ) {s = 35;}
@@ -24571,13 +24981,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index13_1);
+                        input.seek(index16_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 13, _s, input);
+                new NoViableAltException(getDescription(), 16, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -24632,50 +25042,6 @@
     static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
     static final short[][] dfa_19 = unpackEncodedStringArray(dfa_19s);
 
-    class DFA19 extends DFA {
-
-        public DFA19(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 19;
-            this.eot = dfa_14;
-            this.eof = dfa_14;
-            this.min = dfa_15;
-            this.max = dfa_16;
-            this.accept = dfa_17;
-            this.special = dfa_18;
-            this.transition = dfa_19;
-        }
-        public String getDescription() {
-            return "1435:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA19_1 = input.LA(1);
-
-                         
-                        int index19_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred5_InternalSignalDSL()) ) {s = 34;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index19_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 19, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
     class DFA22 extends DFA {
 
         public DFA22(BaseRecognizer recognizer) {
@@ -24690,7 +25056,7 @@
             this.transition = dfa_19;
         }
         public String getDescription() {
-            return "1577:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
+            return "1599:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -24703,7 +25069,7 @@
                         int index22_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6_InternalSignalDSL()) ) {s = 34;}
+                        if ( (synpred5_InternalSignalDSL()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -24719,12 +25085,56 @@
             throw nvae;
         }
     }
+
+    class DFA25 extends DFA {
+
+        public DFA25(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 25;
+            this.eot = dfa_14;
+            this.eof = dfa_14;
+            this.min = dfa_15;
+            this.max = dfa_16;
+            this.accept = dfa_17;
+            this.special = dfa_18;
+            this.transition = dfa_19;
+        }
+        public String getDescription() {
+            return "1741:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA25_1 = input.LA(1);
+
+                         
+                        int index25_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred6_InternalSignalDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index25_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 25, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
     static final String dfa_20s = "\12\uffff";
     static final String dfa_21s = "\1\10\11\uffff";
     static final String dfa_22s = "\1\4\7\0\2\uffff";
     static final String dfa_23s = "\1\143\7\0\2\uffff";
     static final String dfa_24s = "\10\uffff\1\2\1\1";
-    static final String dfa_25s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\6\1\5\2\uffff}>";
+    static final String dfa_25s = "\1\uffff\1\2\1\3\1\4\1\5\1\6\1\0\1\1\2\uffff}>";
     static final String[] dfa_26s = {
             "\5\10\5\uffff\2\10\10\uffff\1\10\4\uffff\4\10\1\uffff\1\10\1\uffff\3\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\32\10\1\uffff\27\10",
             "\1\uffff",
@@ -24746,11 +25156,11 @@
     static final short[] dfa_25 = DFA.unpackEncodedString(dfa_25s);
     static final short[][] dfa_26 = unpackEncodedStringArray(dfa_26s);
 
-    class DFA24 extends DFA {
+    class DFA27 extends DFA {
 
-        public DFA24(BaseRecognizer recognizer) {
+        public DFA27(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 24;
+            this.decisionNumber = 27;
             this.eot = dfa_20;
             this.eof = dfa_21;
             this.min = dfa_22;
@@ -24760,17 +25170,17 @@
             this.transition = dfa_26;
         }
         public String getDescription() {
-            return "1806:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
+            return "1970:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA24_1 = input.LA(1);
+                        int LA27_6 = input.LA(1);
 
                          
-                        int index24_1 = input.index();
+                        int index27_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -24778,14 +25188,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index24_1);
+                        input.seek(index27_6);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA24_2 = input.LA(1);
+                        int LA27_7 = input.LA(1);
 
                          
-                        int index24_2 = input.index();
+                        int index27_7 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -24793,14 +25203,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index24_2);
+                        input.seek(index27_7);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA24_3 = input.LA(1);
+                        int LA27_1 = input.LA(1);
 
                          
-                        int index24_3 = input.index();
+                        int index27_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -24808,14 +25218,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index24_3);
+                        input.seek(index27_1);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA24_4 = input.LA(1);
+                        int LA27_2 = input.LA(1);
 
                          
-                        int index24_4 = input.index();
+                        int index27_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -24823,14 +25233,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index24_4);
+                        input.seek(index27_2);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA24_5 = input.LA(1);
+                        int LA27_3 = input.LA(1);
 
                          
-                        int index24_5 = input.index();
+                        int index27_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -24838,14 +25248,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index24_5);
+                        input.seek(index27_3);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA24_7 = input.LA(1);
+                        int LA27_4 = input.LA(1);
 
                          
-                        int index24_7 = input.index();
+                        int index27_4 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -24853,14 +25263,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index24_7);
+                        input.seek(index27_4);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA24_6 = input.LA(1);
+                        int LA27_5 = input.LA(1);
 
                          
-                        int index24_6 = input.index();
+                        int index27_5 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -24868,13 +25278,13 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index24_6);
+                        input.seek(index27_5);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 24, _s, input);
+                new NoViableAltException(getDescription(), 27, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -24884,7 +25294,7 @@
     static final String dfa_29s = "\1\4\1\uffff\10\0\1\uffff";
     static final String dfa_30s = "\1\143\1\uffff\10\0\1\uffff";
     static final String dfa_31s = "\1\uffff\1\2\10\uffff\1\1";
-    static final String dfa_32s = "\2\uffff\1\4\1\0\1\5\1\6\1\3\1\7\1\1\1\2\1\uffff}>";
+    static final String dfa_32s = "\2\uffff\1\7\1\4\1\1\1\2\1\0\1\3\1\5\1\6\1\uffff}>";
     static final String[] dfa_33s = {
             "\5\1\5\uffff\2\1\10\uffff\1\1\4\uffff\4\1\1\uffff\1\1\1\uffff\3\1\1\uffff\10\1\1\2\1\3\10\1\1\4\1\5\1\6\1\7\1\10\1\11\14\1\1\uffff\27\1",
             "",
@@ -24907,11 +25317,11 @@
     static final short[] dfa_32 = DFA.unpackEncodedString(dfa_32s);
     static final short[][] dfa_33 = unpackEncodedStringArray(dfa_33s);
 
-    class DFA34 extends DFA {
+    class DFA37 extends DFA {
 
-        public DFA34(BaseRecognizer recognizer) {
+        public DFA37(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 34;
+            this.decisionNumber = 37;
             this.eot = dfa_27;
             this.eof = dfa_28;
             this.min = dfa_29;
@@ -24921,17 +25331,17 @@
             this.transition = dfa_33;
         }
         public String getDescription() {
-            return "()* loopback of 2520:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
+            return "()* loopback of 2684:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA34_3 = input.LA(1);
+                        int LA37_6 = input.LA(1);
 
                          
-                        int index34_3 = input.index();
+                        int index37_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24939,14 +25349,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_3);
+                        input.seek(index37_6);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA34_8 = input.LA(1);
+                        int LA37_4 = input.LA(1);
 
                          
-                        int index34_8 = input.index();
+                        int index37_4 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24954,14 +25364,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_8);
+                        input.seek(index37_4);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA34_9 = input.LA(1);
+                        int LA37_5 = input.LA(1);
 
                          
-                        int index34_9 = input.index();
+                        int index37_5 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24969,14 +25379,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_9);
+                        input.seek(index37_5);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA34_6 = input.LA(1);
+                        int LA37_7 = input.LA(1);
 
                          
-                        int index34_6 = input.index();
+                        int index37_7 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24984,14 +25394,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_6);
+                        input.seek(index37_7);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA34_2 = input.LA(1);
+                        int LA37_3 = input.LA(1);
 
                          
-                        int index34_2 = input.index();
+                        int index37_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24999,14 +25409,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_2);
+                        input.seek(index37_3);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA34_4 = input.LA(1);
+                        int LA37_8 = input.LA(1);
 
                          
-                        int index34_4 = input.index();
+                        int index37_8 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -25014,14 +25424,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_4);
+                        input.seek(index37_8);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA34_5 = input.LA(1);
+                        int LA37_9 = input.LA(1);
 
                          
-                        int index34_5 = input.index();
+                        int index37_9 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -25029,14 +25439,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_5);
+                        input.seek(index37_9);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA34_7 = input.LA(1);
+                        int LA37_2 = input.LA(1);
 
                          
-                        int index34_7 = input.index();
+                        int index37_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -25044,13 +25454,13 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index34_7);
+                        input.seek(index37_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 34, _s, input);
+                new NoViableAltException(getDescription(), 37, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25078,11 +25488,11 @@
     static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
     static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
 
-    class DFA37 extends DFA {
+    class DFA40 extends DFA {
 
-        public DFA37(BaseRecognizer recognizer) {
+        public DFA40(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 37;
+            this.decisionNumber = 40;
             this.eot = dfa_27;
             this.eof = dfa_27;
             this.min = dfa_34;
@@ -25092,7 +25502,7 @@
             this.transition = dfa_38;
         }
         public String getDescription() {
-            return "2596:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
+            return "2760:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
         }
     }
     static final String dfa_39s = "\116\uffff";
@@ -25190,11 +25600,11 @@
     static final short[] dfa_44 = DFA.unpackEncodedString(dfa_44s);
     static final short[][] dfa_45 = unpackEncodedStringArray(dfa_45s);
 
-    class DFA53 extends DFA {
+    class DFA56 extends DFA {
 
-        public DFA53(BaseRecognizer recognizer) {
+        public DFA56(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 53;
+            this.decisionNumber = 56;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -25204,17 +25614,17 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "3497:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
+            return "3661:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA53_1 = input.LA(1);
+                        int LA56_1 = input.LA(1);
 
                          
-                        int index53_1 = input.index();
+                        int index56_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred22_InternalSignalDSL()) ) {s = 77;}
@@ -25222,13 +25632,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index53_1);
+                        input.seek(index56_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 53, _s, input);
+                new NoViableAltException(getDescription(), 56, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25238,7 +25648,7 @@
     static final String dfa_48s = "\3\uffff\2\1\1\2\35\uffff\1\3";
     static final String dfa_49s = "\1\0\1\1\1\2\41\uffff}>";
     static final String[] dfa_50s = {
-            "\2\5\1\1\2\5\5\uffff\1\5\16\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\2\uffff\3\5\2\uffff\12\5\1\uffff\1\5",
+            "\1\5\1\1\3\5\5\uffff\1\5\16\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\2\uffff\3\5\2\uffff\12\5\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -25281,11 +25691,11 @@
     static final short[] dfa_49 = DFA.unpackEncodedString(dfa_49s);
     static final short[][] dfa_50 = unpackEncodedStringArray(dfa_50s);
 
-    class DFA52 extends DFA {
+    class DFA55 extends DFA {
 
-        public DFA52(BaseRecognizer recognizer) {
+        public DFA55(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 52;
+            this.decisionNumber = 55;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_46;
@@ -25295,40 +25705,40 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "3516:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
+            return "3680:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA52_0 = input.LA(1);
+                        int LA55_0 = input.LA(1);
 
                          
-                        int index52_0 = input.index();
+                        int index55_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA52_0==RULE_ID) ) {s = 1;}
+                        if ( (LA55_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA52_0==36) ) {s = 2;}
+                        else if ( (LA55_0==36) ) {s = 2;}
 
-                        else if ( (LA52_0==61) && (synpred23_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA55_0==61) && (synpred23_InternalSignalDSL())) {s = 3;}
 
-                        else if ( (LA52_0==76) && (synpred23_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA55_0==76) && (synpred23_InternalSignalDSL())) {s = 4;}
 
-                        else if ( ((LA52_0>=RULE_STRING && LA52_0<=RULE_INT)||(LA52_0>=RULE_HEX && LA52_0<=RULE_DECIMAL)||LA52_0==14||(LA52_0>=29 && LA52_0<=31)||(LA52_0>=40 && LA52_0<=41)||LA52_0==48||(LA52_0>=64 && LA52_0<=65)||LA52_0==69||LA52_0==77||LA52_0==79||(LA52_0>=82 && LA52_0<=84)||(LA52_0>=87 && LA52_0<=96)||LA52_0==98) ) {s = 5;}
+                        else if ( (LA55_0==RULE_STRING||(LA55_0>=RULE_INT && LA55_0<=RULE_DECIMAL)||LA55_0==14||(LA55_0>=29 && LA55_0<=31)||(LA55_0>=40 && LA55_0<=41)||LA55_0==48||(LA55_0>=64 && LA55_0<=65)||LA55_0==69||LA55_0==77||LA55_0==79||(LA55_0>=82 && LA55_0<=84)||(LA55_0>=87 && LA55_0<=96)||LA55_0==98) ) {s = 5;}
 
-                        else if ( (LA52_0==38) ) {s = 35;}
+                        else if ( (LA55_0==38) ) {s = 35;}
 
                          
-                        input.seek(index52_0);
+                        input.seek(index55_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA52_1 = input.LA(1);
+                        int LA55_1 = input.LA(1);
 
                          
-                        int index52_1 = input.index();
+                        int index55_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred23_InternalSignalDSL()) ) {s = 4;}
@@ -25336,14 +25746,14 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index52_1);
+                        input.seek(index55_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA52_2 = input.LA(1);
+                        int LA55_2 = input.LA(1);
 
                          
-                        int index52_2 = input.index();
+                        int index55_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred23_InternalSignalDSL()) ) {s = 4;}
@@ -25351,13 +25761,13 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index52_2);
+                        input.seek(index55_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 52, _s, input);
+                new NoViableAltException(getDescription(), 55, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25444,11 +25854,11 @@
     };
     static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
 
-    class DFA54 extends DFA {
+    class DFA57 extends DFA {
 
-        public DFA54(BaseRecognizer recognizer) {
+        public DFA57(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 54;
+            this.decisionNumber = 57;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -25458,17 +25868,17 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "3614:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
+            return "3778:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA54_1 = input.LA(1);
+                        int LA57_1 = input.LA(1);
 
                          
-                        int index54_1 = input.index();
+                        int index57_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred24_InternalSignalDSL()) ) {s = 77;}
@@ -25476,13 +25886,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index54_1);
+                        input.seek(index57_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 54, _s, input);
+                new NoViableAltException(getDescription(), 57, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25493,7 +25903,7 @@
     static final String dfa_55s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
     static final String dfa_56s = "\1\0\26\uffff\1\1\10\uffff}>";
     static final String[] dfa_57s = {
-            "\2\14\1\5\2\14\5\uffff\1\2\16\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\2\uffff\1\27\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
+            "\1\14\1\5\3\14\5\uffff\1\2\16\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\2\uffff\1\27\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
             "",
             "",
             "",
@@ -25534,11 +25944,11 @@
     static final short[] dfa_56 = DFA.unpackEncodedString(dfa_56s);
     static final short[][] dfa_57 = unpackEncodedStringArray(dfa_57s);
 
-    class DFA56 extends DFA {
+    class DFA59 extends DFA {
 
-        public DFA56(BaseRecognizer recognizer) {
+        public DFA59(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 56;
+            this.decisionNumber = 59;
             this.eot = dfa_52;
             this.eof = dfa_52;
             this.min = dfa_53;
@@ -25548,56 +25958,56 @@
             this.transition = dfa_57;
         }
         public String getDescription() {
-            return "3659:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
+            return "3823:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA56_0 = input.LA(1);
+                        int LA59_0 = input.LA(1);
 
                          
-                        int index56_0 = input.index();
+                        int index59_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA56_0==89) ) {s = 1;}
+                        if ( (LA59_0==89) ) {s = 1;}
 
-                        else if ( (LA56_0==14) ) {s = 2;}
+                        else if ( (LA59_0==14) ) {s = 2;}
 
-                        else if ( (LA56_0==79) ) {s = 3;}
+                        else if ( (LA59_0==79) ) {s = 3;}
 
-                        else if ( (LA56_0==98) && (synpred25_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA59_0==98) && (synpred25_InternalSignalDSL())) {s = 4;}
 
-                        else if ( (LA56_0==RULE_ID||(LA56_0>=29 && LA56_0<=31)||LA56_0==48||(LA56_0>=87 && LA56_0<=88)) ) {s = 5;}
+                        else if ( (LA59_0==RULE_ID||(LA59_0>=29 && LA59_0<=31)||LA59_0==48||(LA59_0>=87 && LA59_0<=88)) ) {s = 5;}
 
-                        else if ( ((LA56_0>=RULE_STRING && LA56_0<=RULE_INT)||(LA56_0>=RULE_HEX && LA56_0<=RULE_DECIMAL)||(LA56_0>=40 && LA56_0<=41)||(LA56_0>=90 && LA56_0<=93)) ) {s = 12;}
+                        else if ( (LA59_0==RULE_STRING||(LA59_0>=RULE_INT && LA59_0<=RULE_DECIMAL)||(LA59_0>=40 && LA59_0<=41)||(LA59_0>=90 && LA59_0<=93)) ) {s = 12;}
 
-                        else if ( (LA56_0==77) ) {s = 22;}
+                        else if ( (LA59_0==77) ) {s = 22;}
 
-                        else if ( (LA56_0==82) ) {s = 23;}
+                        else if ( (LA59_0==82) ) {s = 23;}
 
-                        else if ( (LA56_0==83) ) {s = 24;}
+                        else if ( (LA59_0==83) ) {s = 24;}
 
-                        else if ( (LA56_0==84) ) {s = 25;}
+                        else if ( (LA59_0==84) ) {s = 25;}
 
-                        else if ( (LA56_0==94) ) {s = 26;}
+                        else if ( (LA59_0==94) ) {s = 26;}
 
-                        else if ( (LA56_0==95) ) {s = 27;}
+                        else if ( (LA59_0==95) ) {s = 27;}
 
-                        else if ( (LA56_0==96) ) {s = 28;}
+                        else if ( (LA59_0==96) ) {s = 28;}
 
-                        else if ( (LA56_0==36) ) {s = 29;}
+                        else if ( (LA59_0==36) ) {s = 29;}
 
                          
-                        input.seek(index56_0);
+                        input.seek(index59_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA56_23 = input.LA(1);
+                        int LA59_23 = input.LA(1);
 
                          
-                        int index56_23 = input.index();
+                        int index59_23 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred26_InternalSignalDSL()) ) {s = 30;}
@@ -25605,13 +26015,13 @@
                         else if ( (true) ) {s = 31;}
 
                          
-                        input.seek(index56_23);
+                        input.seek(index59_23);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 56, _s, input);
+                new NoViableAltException(getDescription(), 59, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25622,7 +26032,7 @@
     static final String dfa_61s = "\3\uffff\2\1\1\2\40\uffff";
     static final String dfa_62s = "\1\0\1\1\1\2\43\uffff}>";
     static final String[] dfa_63s = {
-            "\2\5\1\1\2\5\5\uffff\1\5\16\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\2\uffff\17\5\1\uffff\1\5",
+            "\1\5\1\1\3\5\5\uffff\1\5\16\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\2\uffff\17\5\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -25669,11 +26079,11 @@
     static final short[] dfa_62 = DFA.unpackEncodedString(dfa_62s);
     static final short[][] dfa_63 = unpackEncodedStringArray(dfa_63s);
 
-    class DFA65 extends DFA {
+    class DFA68 extends DFA {
 
-        public DFA65(BaseRecognizer recognizer) {
+        public DFA68(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 65;
+            this.decisionNumber = 68;
             this.eot = dfa_58;
             this.eof = dfa_58;
             this.min = dfa_59;
@@ -25683,38 +26093,38 @@
             this.transition = dfa_63;
         }
         public String getDescription() {
-            return "4151:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
+            return "4315:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA65_0 = input.LA(1);
+                        int LA68_0 = input.LA(1);
 
                          
-                        int index65_0 = input.index();
+                        int index68_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA65_0==RULE_ID) ) {s = 1;}
+                        if ( (LA68_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA65_0==36) ) {s = 2;}
+                        else if ( (LA68_0==36) ) {s = 2;}
 
-                        else if ( (LA65_0==61) && (synpred29_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA68_0==61) && (synpred29_InternalSignalDSL())) {s = 3;}
 
-                        else if ( (LA65_0==76) && (synpred29_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA68_0==76) && (synpred29_InternalSignalDSL())) {s = 4;}
 
-                        else if ( ((LA65_0>=RULE_STRING && LA65_0<=RULE_INT)||(LA65_0>=RULE_HEX && LA65_0<=RULE_DECIMAL)||LA65_0==14||(LA65_0>=29 && LA65_0<=31)||(LA65_0>=40 && LA65_0<=42)||LA65_0==48||(LA65_0>=64 && LA65_0<=65)||LA65_0==69||LA65_0==77||LA65_0==79||(LA65_0>=82 && LA65_0<=96)||LA65_0==98) ) {s = 5;}
+                        else if ( (LA68_0==RULE_STRING||(LA68_0>=RULE_INT && LA68_0<=RULE_DECIMAL)||LA68_0==14||(LA68_0>=29 && LA68_0<=31)||(LA68_0>=40 && LA68_0<=42)||LA68_0==48||(LA68_0>=64 && LA68_0<=65)||LA68_0==69||LA68_0==77||LA68_0==79||(LA68_0>=82 && LA68_0<=96)||LA68_0==98) ) {s = 5;}
 
                          
-                        input.seek(index65_0);
+                        input.seek(index68_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA65_1 = input.LA(1);
+                        int LA68_1 = input.LA(1);
 
                          
-                        int index65_1 = input.index();
+                        int index68_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred29_InternalSignalDSL()) ) {s = 4;}
@@ -25722,14 +26132,14 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index65_1);
+                        input.seek(index68_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA65_2 = input.LA(1);
+                        int LA68_2 = input.LA(1);
 
                          
-                        int index65_2 = input.index();
+                        int index68_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred29_InternalSignalDSL()) ) {s = 4;}
@@ -25737,13 +26147,13 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index65_2);
+                        input.seek(index68_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 65, _s, input);
+                new NoViableAltException(getDescription(), 68, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25787,11 +26197,11 @@
     };
     static final short[][] dfa_64 = unpackEncodedStringArray(dfa_64s);
 
-    class DFA72 extends DFA {
+    class DFA75 extends DFA {
 
-        public DFA72(BaseRecognizer recognizer) {
+        public DFA75(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 72;
+            this.decisionNumber = 75;
             this.eot = dfa_14;
             this.eof = dfa_14;
             this.min = dfa_15;
@@ -25801,17 +26211,17 @@
             this.transition = dfa_64;
         }
         public String getDescription() {
-            return "4617:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
+            return "4781:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA72_1 = input.LA(1);
+                        int LA75_1 = input.LA(1);
 
                          
-                        int index72_1 = input.index();
+                        int index75_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred32_InternalSignalDSL()) ) {s = 34;}
@@ -25819,13 +26229,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index72_1);
+                        input.seek(index75_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 72, _s, input);
+                new NoViableAltException(getDescription(), 75, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25836,7 +26246,7 @@
     static final String dfa_68s = "\3\uffff\1\1\1\2\35\uffff";
     static final String dfa_69s = "\1\0\1\1\1\2\37\uffff}>";
     static final String[] dfa_70s = {
-            "\2\4\1\1\2\4\5\uffff\1\4\16\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\2\uffff\3\4\2\uffff\12\4\1\uffff\1\4",
+            "\1\4\1\1\3\4\5\uffff\1\4\16\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\2\uffff\3\4\2\uffff\12\4\1\uffff\1\4",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -25879,11 +26289,11 @@
     static final short[] dfa_69 = DFA.unpackEncodedString(dfa_69s);
     static final short[][] dfa_70 = unpackEncodedStringArray(dfa_70s);
 
-    class DFA71 extends DFA {
+    class DFA74 extends DFA {
 
-        public DFA71(BaseRecognizer recognizer) {
+        public DFA74(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 71;
+            this.decisionNumber = 74;
             this.eot = dfa_65;
             this.eof = dfa_65;
             this.min = dfa_66;
@@ -25893,36 +26303,36 @@
             this.transition = dfa_70;
         }
         public String getDescription() {
-            return "4686:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
+            return "4850:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA71_0 = input.LA(1);
+                        int LA74_0 = input.LA(1);
 
                          
-                        int index71_0 = input.index();
+                        int index74_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA71_0==RULE_ID) ) {s = 1;}
+                        if ( (LA74_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA71_0==36) ) {s = 2;}
+                        else if ( (LA74_0==36) ) {s = 2;}
 
-                        else if ( (LA71_0==61) && (synpred33_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA74_0==61) && (synpred33_InternalSignalDSL())) {s = 3;}
 
-                        else if ( ((LA71_0>=RULE_STRING && LA71_0<=RULE_INT)||(LA71_0>=RULE_HEX && LA71_0<=RULE_DECIMAL)||LA71_0==14||(LA71_0>=29 && LA71_0<=31)||(LA71_0>=40 && LA71_0<=41)||LA71_0==48||(LA71_0>=64 && LA71_0<=65)||LA71_0==69||LA71_0==77||LA71_0==79||(LA71_0>=82 && LA71_0<=84)||(LA71_0>=87 && LA71_0<=96)||LA71_0==98) ) {s = 4;}
+                        else if ( (LA74_0==RULE_STRING||(LA74_0>=RULE_INT && LA74_0<=RULE_DECIMAL)||LA74_0==14||(LA74_0>=29 && LA74_0<=31)||(LA74_0>=40 && LA74_0<=41)||LA74_0==48||(LA74_0>=64 && LA74_0<=65)||LA74_0==69||LA74_0==77||LA74_0==79||(LA74_0>=82 && LA74_0<=84)||(LA74_0>=87 && LA74_0<=96)||LA74_0==98) ) {s = 4;}
 
                          
-                        input.seek(index71_0);
+                        input.seek(index74_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA71_1 = input.LA(1);
+                        int LA74_1 = input.LA(1);
 
                          
-                        int index71_1 = input.index();
+                        int index74_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred33_InternalSignalDSL()) ) {s = 3;}
@@ -25930,14 +26340,14 @@
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index71_1);
+                        input.seek(index74_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA71_2 = input.LA(1);
+                        int LA74_2 = input.LA(1);
 
                          
-                        int index71_2 = input.index();
+                        int index74_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred33_InternalSignalDSL()) ) {s = 3;}
@@ -25945,23 +26355,23 @@
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index71_2);
+                        input.seek(index74_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 71, _s, input);
+                new NoViableAltException(getDescription(), 74, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA94 extends DFA {
+    class DFA97 extends DFA {
 
-        public DFA94(BaseRecognizer recognizer) {
+        public DFA97(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 94;
+            this.decisionNumber = 97;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -25971,17 +26381,17 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "5815:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
+            return "5979:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA94_1 = input.LA(1);
+                        int LA97_1 = input.LA(1);
 
                          
-                        int index94_1 = input.index();
+                        int index97_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred36_InternalSignalDSL()) ) {s = 77;}
@@ -25989,23 +26399,23 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index94_1);
+                        input.seek(index97_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 94, _s, input);
+                new NoViableAltException(getDescription(), 97, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA93 extends DFA {
+    class DFA96 extends DFA {
 
-        public DFA93(BaseRecognizer recognizer) {
+        public DFA96(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 93;
+            this.decisionNumber = 96;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_46;
@@ -26015,40 +26425,40 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "5834:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
+            return "5998:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA93_0 = input.LA(1);
+                        int LA96_0 = input.LA(1);
 
                          
-                        int index93_0 = input.index();
+                        int index96_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA93_0==RULE_ID) ) {s = 1;}
+                        if ( (LA96_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA93_0==36) ) {s = 2;}
+                        else if ( (LA96_0==36) ) {s = 2;}
 
-                        else if ( (LA93_0==61) && (synpred37_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA96_0==61) && (synpred37_InternalSignalDSL())) {s = 3;}
 
-                        else if ( (LA93_0==76) && (synpred37_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA96_0==76) && (synpred37_InternalSignalDSL())) {s = 4;}
 
-                        else if ( ((LA93_0>=RULE_STRING && LA93_0<=RULE_INT)||(LA93_0>=RULE_HEX && LA93_0<=RULE_DECIMAL)||LA93_0==14||(LA93_0>=29 && LA93_0<=31)||(LA93_0>=40 && LA93_0<=41)||LA93_0==48||(LA93_0>=64 && LA93_0<=65)||LA93_0==69||LA93_0==77||LA93_0==79||(LA93_0>=82 && LA93_0<=84)||(LA93_0>=87 && LA93_0<=96)||LA93_0==98) ) {s = 5;}
+                        else if ( (LA96_0==RULE_STRING||(LA96_0>=RULE_INT && LA96_0<=RULE_DECIMAL)||LA96_0==14||(LA96_0>=29 && LA96_0<=31)||(LA96_0>=40 && LA96_0<=41)||LA96_0==48||(LA96_0>=64 && LA96_0<=65)||LA96_0==69||LA96_0==77||LA96_0==79||(LA96_0>=82 && LA96_0<=84)||(LA96_0>=87 && LA96_0<=96)||LA96_0==98) ) {s = 5;}
 
-                        else if ( (LA93_0==38) ) {s = 35;}
+                        else if ( (LA96_0==38) ) {s = 35;}
 
                          
-                        input.seek(index93_0);
+                        input.seek(index96_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA93_1 = input.LA(1);
+                        int LA96_1 = input.LA(1);
 
                          
-                        int index93_1 = input.index();
+                        int index96_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred37_InternalSignalDSL()) ) {s = 4;}
@@ -26056,14 +26466,14 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index93_1);
+                        input.seek(index96_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA93_2 = input.LA(1);
+                        int LA96_2 = input.LA(1);
 
                          
-                        int index93_2 = input.index();
+                        int index96_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred37_InternalSignalDSL()) ) {s = 4;}
@@ -26071,23 +26481,23 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index93_2);
+                        input.seek(index96_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 93, _s, input);
+                new NoViableAltException(getDescription(), 96, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA95 extends DFA {
+    class DFA98 extends DFA {
 
-        public DFA95(BaseRecognizer recognizer) {
+        public DFA98(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 95;
+            this.decisionNumber = 98;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -26097,17 +26507,17 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "5932:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
+            return "6096:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA95_1 = input.LA(1);
+                        int LA98_1 = input.LA(1);
 
                          
-                        int index95_1 = input.index();
+                        int index98_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred38_InternalSignalDSL()) ) {s = 77;}
@@ -26115,13 +26525,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index95_1);
+                        input.seek(index98_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 95, _s, input);
+                new NoViableAltException(getDescription(), 98, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -26208,50 +26618,6 @@
     };
     static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
 
-    class DFA99 extends DFA {
-
-        public DFA99(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 99;
-            this.eot = dfa_39;
-            this.eof = dfa_40;
-            this.min = dfa_41;
-            this.max = dfa_42;
-            this.accept = dfa_43;
-            this.special = dfa_44;
-            this.transition = dfa_71;
-        }
-        public String getDescription() {
-            return "6091:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA99_1 = input.LA(1);
-
-                         
-                        int index99_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred39_InternalSignalDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index99_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 99, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
     class DFA102 extends DFA {
 
         public DFA102(BaseRecognizer recognizer) {
@@ -26263,10 +26629,10 @@
             this.max = dfa_42;
             this.accept = dfa_43;
             this.special = dfa_44;
-            this.transition = dfa_45;
+            this.transition = dfa_71;
         }
         public String getDescription() {
-            return "6148:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
+            return "6255:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -26279,7 +26645,7 @@
                         int index102_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred40_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred39_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -26296,11 +26662,55 @@
         }
     }
 
-    class DFA101 extends DFA {
+    class DFA105 extends DFA {
 
-        public DFA101(BaseRecognizer recognizer) {
+        public DFA105(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 101;
+            this.decisionNumber = 105;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_45;
+        }
+        public String getDescription() {
+            return "6312:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA105_1 = input.LA(1);
+
+                         
+                        int index105_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalSignalDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index105_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 105, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA104 extends DFA {
+
+        public DFA104(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 104;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_46;
@@ -26310,40 +26720,40 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "6167:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
+            return "6331:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA101_0 = input.LA(1);
+                        int LA104_0 = input.LA(1);
 
                          
-                        int index101_0 = input.index();
+                        int index104_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA101_0==RULE_ID) ) {s = 1;}
+                        if ( (LA104_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA101_0==36) ) {s = 2;}
+                        else if ( (LA104_0==36) ) {s = 2;}
 
-                        else if ( (LA101_0==61) && (synpred41_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA104_0==61) && (synpred41_InternalSignalDSL())) {s = 3;}
 
-                        else if ( (LA101_0==76) && (synpred41_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA104_0==76) && (synpred41_InternalSignalDSL())) {s = 4;}
 
-                        else if ( ((LA101_0>=RULE_STRING && LA101_0<=RULE_INT)||(LA101_0>=RULE_HEX && LA101_0<=RULE_DECIMAL)||LA101_0==14||(LA101_0>=29 && LA101_0<=31)||(LA101_0>=40 && LA101_0<=41)||LA101_0==48||(LA101_0>=64 && LA101_0<=65)||LA101_0==69||LA101_0==77||LA101_0==79||(LA101_0>=82 && LA101_0<=84)||(LA101_0>=87 && LA101_0<=96)||LA101_0==98) ) {s = 5;}
+                        else if ( (LA104_0==RULE_STRING||(LA104_0>=RULE_INT && LA104_0<=RULE_DECIMAL)||LA104_0==14||(LA104_0>=29 && LA104_0<=31)||(LA104_0>=40 && LA104_0<=41)||LA104_0==48||(LA104_0>=64 && LA104_0<=65)||LA104_0==69||LA104_0==77||LA104_0==79||(LA104_0>=82 && LA104_0<=84)||(LA104_0>=87 && LA104_0<=96)||LA104_0==98) ) {s = 5;}
 
-                        else if ( (LA101_0==38) ) {s = 35;}
+                        else if ( (LA104_0==38) ) {s = 35;}
 
                          
-                        input.seek(index101_0);
+                        input.seek(index104_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA101_1 = input.LA(1);
+                        int LA104_1 = input.LA(1);
 
                          
-                        int index101_1 = input.index();
+                        int index104_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred41_InternalSignalDSL()) ) {s = 4;}
@@ -26351,14 +26761,14 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index101_1);
+                        input.seek(index104_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA101_2 = input.LA(1);
+                        int LA104_2 = input.LA(1);
 
                          
-                        int index101_2 = input.index();
+                        int index104_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred41_InternalSignalDSL()) ) {s = 4;}
@@ -26366,23 +26776,23 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index101_2);
+                        input.seek(index104_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 101, _s, input);
+                new NoViableAltException(getDescription(), 104, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA103 extends DFA {
+    class DFA106 extends DFA {
 
-        public DFA103(BaseRecognizer recognizer) {
+        public DFA106(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 103;
+            this.decisionNumber = 106;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -26392,17 +26802,17 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "6265:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
+            return "6429:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA103_1 = input.LA(1);
+                        int LA106_1 = input.LA(1);
 
                          
-                        int index103_1 = input.index();
+                        int index106_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred42_InternalSignalDSL()) ) {s = 77;}
@@ -26410,13 +26820,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index103_1);
+                        input.seek(index106_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 103, _s, input);
+                new NoViableAltException(getDescription(), 106, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -26427,7 +26837,7 @@
     static final String dfa_75s = "\41\uffff\1\2\53\uffff\1\1";
     static final String dfa_76s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
     static final String[] dfa_77s = {
-            "\1\27\1\24\1\1\1\23\1\25\5\uffff\1\12\1\41\10\uffff\1\41\4\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\2\41\1\32\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
+            "\1\27\1\1\1\24\1\23\1\25\5\uffff\1\12\1\41\10\uffff\1\41\4\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\2\41\1\32\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -26513,11 +26923,11 @@
     static final short[] dfa_76 = DFA.unpackEncodedString(dfa_76s);
     static final short[][] dfa_77 = unpackEncodedStringArray(dfa_77s);
 
-    class DFA106 extends DFA {
+    class DFA109 extends DFA {
 
-        public DFA106(BaseRecognizer recognizer) {
+        public DFA109(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 106;
+            this.decisionNumber = 109;
             this.eot = dfa_39;
             this.eof = dfa_72;
             this.min = dfa_73;
@@ -26527,17 +26937,17 @@
             this.transition = dfa_77;
         }
         public String getDescription() {
-            return "6608:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
+            return "6772:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA106_1 = input.LA(1);
+                        int LA109_1 = input.LA(1);
 
                          
-                        int index106_1 = input.index();
+                        int index109_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26545,14 +26955,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_1);
+                        input.seek(index109_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA106_2 = input.LA(1);
+                        int LA109_2 = input.LA(1);
 
                          
-                        int index106_2 = input.index();
+                        int index109_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26560,14 +26970,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_2);
+                        input.seek(index109_2);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA106_3 = input.LA(1);
+                        int LA109_3 = input.LA(1);
 
                          
-                        int index106_3 = input.index();
+                        int index109_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26575,14 +26985,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_3);
+                        input.seek(index109_3);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA106_4 = input.LA(1);
+                        int LA109_4 = input.LA(1);
 
                          
-                        int index106_4 = input.index();
+                        int index109_4 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26590,14 +27000,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_4);
+                        input.seek(index109_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA106_5 = input.LA(1);
+                        int LA109_5 = input.LA(1);
 
                          
-                        int index106_5 = input.index();
+                        int index109_5 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26605,14 +27015,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_5);
+                        input.seek(index109_5);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA106_6 = input.LA(1);
+                        int LA109_6 = input.LA(1);
 
                          
-                        int index106_6 = input.index();
+                        int index109_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26620,14 +27030,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_6);
+                        input.seek(index109_6);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA106_7 = input.LA(1);
+                        int LA109_7 = input.LA(1);
 
                          
-                        int index106_7 = input.index();
+                        int index109_7 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26635,14 +27045,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_7);
+                        input.seek(index109_7);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA106_8 = input.LA(1);
+                        int LA109_8 = input.LA(1);
 
                          
-                        int index106_8 = input.index();
+                        int index109_8 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26650,14 +27060,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_8);
+                        input.seek(index109_8);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA106_9 = input.LA(1);
+                        int LA109_9 = input.LA(1);
 
                          
-                        int index106_9 = input.index();
+                        int index109_9 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26665,14 +27075,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_9);
+                        input.seek(index109_9);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA106_10 = input.LA(1);
+                        int LA109_10 = input.LA(1);
 
                          
-                        int index106_10 = input.index();
+                        int index109_10 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26680,14 +27090,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_10);
+                        input.seek(index109_10);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA106_11 = input.LA(1);
+                        int LA109_11 = input.LA(1);
 
                          
-                        int index106_11 = input.index();
+                        int index109_11 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26695,14 +27105,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_11);
+                        input.seek(index109_11);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA106_12 = input.LA(1);
+                        int LA109_12 = input.LA(1);
 
                          
-                        int index106_12 = input.index();
+                        int index109_12 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26710,14 +27120,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_12);
+                        input.seek(index109_12);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA106_13 = input.LA(1);
+                        int LA109_13 = input.LA(1);
 
                          
-                        int index106_13 = input.index();
+                        int index109_13 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26725,14 +27135,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_13);
+                        input.seek(index109_13);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA106_14 = input.LA(1);
+                        int LA109_14 = input.LA(1);
 
                          
-                        int index106_14 = input.index();
+                        int index109_14 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26740,14 +27150,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_14);
+                        input.seek(index109_14);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA106_15 = input.LA(1);
+                        int LA109_15 = input.LA(1);
 
                          
-                        int index106_15 = input.index();
+                        int index109_15 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26755,14 +27165,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_15);
+                        input.seek(index109_15);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA106_16 = input.LA(1);
+                        int LA109_16 = input.LA(1);
 
                          
-                        int index106_16 = input.index();
+                        int index109_16 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26770,14 +27180,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_16);
+                        input.seek(index109_16);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA106_17 = input.LA(1);
+                        int LA109_17 = input.LA(1);
 
                          
-                        int index106_17 = input.index();
+                        int index109_17 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26785,14 +27195,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_17);
+                        input.seek(index109_17);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA106_18 = input.LA(1);
+                        int LA109_18 = input.LA(1);
 
                          
-                        int index106_18 = input.index();
+                        int index109_18 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26800,14 +27210,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_18);
+                        input.seek(index109_18);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA106_19 = input.LA(1);
+                        int LA109_19 = input.LA(1);
 
                          
-                        int index106_19 = input.index();
+                        int index109_19 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26815,14 +27225,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_19);
+                        input.seek(index109_19);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA106_20 = input.LA(1);
+                        int LA109_20 = input.LA(1);
 
                          
-                        int index106_20 = input.index();
+                        int index109_20 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26830,14 +27240,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_20);
+                        input.seek(index109_20);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA106_21 = input.LA(1);
+                        int LA109_21 = input.LA(1);
 
                          
-                        int index106_21 = input.index();
+                        int index109_21 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26845,14 +27255,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_21);
+                        input.seek(index109_21);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA106_22 = input.LA(1);
+                        int LA109_22 = input.LA(1);
 
                          
-                        int index106_22 = input.index();
+                        int index109_22 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26860,14 +27270,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_22);
+                        input.seek(index109_22);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA106_23 = input.LA(1);
+                        int LA109_23 = input.LA(1);
 
                          
-                        int index106_23 = input.index();
+                        int index109_23 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26875,14 +27285,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_23);
+                        input.seek(index109_23);
                         if ( s>=0 ) return s;
                         break;
                     case 23 : 
-                        int LA106_24 = input.LA(1);
+                        int LA109_24 = input.LA(1);
 
                          
-                        int index106_24 = input.index();
+                        int index109_24 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26890,14 +27300,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_24);
+                        input.seek(index109_24);
                         if ( s>=0 ) return s;
                         break;
                     case 24 : 
-                        int LA106_25 = input.LA(1);
+                        int LA109_25 = input.LA(1);
 
                          
-                        int index106_25 = input.index();
+                        int index109_25 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26905,14 +27315,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_25);
+                        input.seek(index109_25);
                         if ( s>=0 ) return s;
                         break;
                     case 25 : 
-                        int LA106_26 = input.LA(1);
+                        int LA109_26 = input.LA(1);
 
                          
-                        int index106_26 = input.index();
+                        int index109_26 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26920,14 +27330,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_26);
+                        input.seek(index109_26);
                         if ( s>=0 ) return s;
                         break;
                     case 26 : 
-                        int LA106_27 = input.LA(1);
+                        int LA109_27 = input.LA(1);
 
                          
-                        int index106_27 = input.index();
+                        int index109_27 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26935,14 +27345,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_27);
+                        input.seek(index109_27);
                         if ( s>=0 ) return s;
                         break;
                     case 27 : 
-                        int LA106_28 = input.LA(1);
+                        int LA109_28 = input.LA(1);
 
                          
-                        int index106_28 = input.index();
+                        int index109_28 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26950,14 +27360,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_28);
+                        input.seek(index109_28);
                         if ( s>=0 ) return s;
                         break;
                     case 28 : 
-                        int LA106_29 = input.LA(1);
+                        int LA109_29 = input.LA(1);
 
                          
-                        int index106_29 = input.index();
+                        int index109_29 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26965,14 +27375,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_29);
+                        input.seek(index109_29);
                         if ( s>=0 ) return s;
                         break;
                     case 29 : 
-                        int LA106_30 = input.LA(1);
+                        int LA109_30 = input.LA(1);
 
                          
-                        int index106_30 = input.index();
+                        int index109_30 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26980,14 +27390,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_30);
+                        input.seek(index109_30);
                         if ( s>=0 ) return s;
                         break;
                     case 30 : 
-                        int LA106_31 = input.LA(1);
+                        int LA109_31 = input.LA(1);
 
                          
-                        int index106_31 = input.index();
+                        int index109_31 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26995,14 +27405,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_31);
+                        input.seek(index109_31);
                         if ( s>=0 ) return s;
                         break;
                     case 31 : 
-                        int LA106_32 = input.LA(1);
+                        int LA109_32 = input.LA(1);
 
                          
-                        int index106_32 = input.index();
+                        int index109_32 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -27010,13 +27420,13 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index106_32);
+                        input.seek(index109_32);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 106, _s, input);
+                new NoViableAltException(getDescription(), 109, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -27117,11 +27527,11 @@
     static final short[] dfa_83 = DFA.unpackEncodedString(dfa_83s);
     static final short[][] dfa_84 = unpackEncodedStringArray(dfa_84s);
 
-    class DFA124 extends DFA {
+    class DFA127 extends DFA {
 
-        public DFA124(BaseRecognizer recognizer) {
+        public DFA127(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 124;
+            this.decisionNumber = 127;
             this.eot = dfa_78;
             this.eof = dfa_79;
             this.min = dfa_80;
@@ -27131,17 +27541,17 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "7266:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
+            return "7430:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA124_1 = input.LA(1);
+                        int LA127_1 = input.LA(1);
 
                          
-                        int index124_1 = input.index();
+                        int index127_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred50_InternalSignalDSL()) ) {s = 78;}
@@ -27149,23 +27559,23 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index124_1);
+                        input.seek(index127_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 124, _s, input);
+                new NoViableAltException(getDescription(), 127, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA122 extends DFA {
+    class DFA125 extends DFA {
 
-        public DFA122(BaseRecognizer recognizer) {
+        public DFA125(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 122;
+            this.decisionNumber = 125;
             this.eot = dfa_78;
             this.eof = dfa_79;
             this.min = dfa_80;
@@ -27175,17 +27585,17 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "7360:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
+            return "7524:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA122_1 = input.LA(1);
+                        int LA125_1 = input.LA(1);
 
                          
-                        int index122_1 = input.index();
+                        int index125_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred52_InternalSignalDSL()) ) {s = 78;}
@@ -27193,13 +27603,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index122_1);
+                        input.seek(index125_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 122, _s, input);
+                new NoViableAltException(getDescription(), 125, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -27209,102 +27619,104 @@
     public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
     public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000002000L});
-    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000020L});
     public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000004002L});
-    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000018000L});
-    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000118000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x00000000000A0000L});
     public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000048000L});
-    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000000L,0x000003C000000000L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000180000L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x000000000AE00000L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000020L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000001000000L});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000000L,0x0001FC0000000000L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000240000040L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000080000040L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000100000040L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000400000002L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000001000000002L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x00010358E00041F0L,0x00000005FF9CA023L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000006000000000L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000008000000000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x00010318E00041F0L,0x00000005FF9CA023L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000020000000000L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x00010718E00041F0L,0x00000005FF9CA023L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000042000000000L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000002000000002L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0003F80000000002L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0001000000000000L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0006000000000000L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0004000000000000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0008000000000002L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0010000000000002L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x01E0000000000002L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0207000000000002L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x2000001000000040L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0xFC03000000000002L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0002000000000000L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x2001000000000000L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000100000002L,0x000000000000001CL});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000180L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000E00L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x00000000E0000040L,0x0000000000800000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x00010000E0000040L,0x0000000001800000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x2000001000000040L,0x0000001000000000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0002002000000000L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000021000000002L,0x0000000000000E00L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x20010358E00041F0L,0x00000005FF9CB023L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000020000000002L,0x0000000000000E00L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x00010318E000C1F0L,0x00000005FF9CA023L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000002000008000L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x20010718E00041F0L,0x00000005FFFCB023L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000002000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x00010718E00041F0L,0x00000005FFFCA023L});
-    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0001031CE00041F2L,0x00000005FFFCA023L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x00010318E00041F2L,0x00000005FFFCA023L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
-    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x20010318E00041F0L,0x00000005FF9CA023L});
-    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x2000003001008040L,0x0000000000030000L});
-    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000002001000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000002001000000L});
-    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0001031CE00041F0L,0x00000005FFFCA023L});
-    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000002400000000L});
-    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x00010318E00041F0L,0x00000005FFFCA023L});
-    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0001031CE00041F0L,0x00000005FF9CA023L});
-    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000400000000L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x00010318E000C1F0L,0x00000005FFFCA023L});
-    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0001031CE000C1F0L,0x00000005FFFCA023L});
-    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000008000000002L});
-    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000021000000002L});
-    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000020000000002L});
-    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0001021000000002L});
-    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000024000000000L});
-    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x00010318E00041F2L,0x00000005FF9CA023L});
-    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000000000000L,0x0000000A00000000L});
-    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000002L,0x0000000A00000000L});
-    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
-    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000120L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x2000005000000040L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x2000000000000000L});
-    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0001000000000002L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0001000000000002L,0x0000000000000200L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
-    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000100000000L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000020000002L});
-    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000042L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000000L,0x0000018000000000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000020000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000020008000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x000000000AE00000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000040000L,0x0000018000000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000000L,0x0000FE0000000000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000010000002L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000240000020L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000080000020L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000100000020L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x00010358E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000006000000000L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x00010318E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000020000000000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x00010718E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000042000000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000002000000002L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0003F80000000002L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0001000000000000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0006000000000000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0004000000000000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0008000000000002L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0010000000000002L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x01E0000000000002L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0207000000000002L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x2000001000000020L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0xFC03000000000002L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x1000000000000000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0002000000000000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x2001000000000000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000100000002L,0x000000000000001CL});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000180L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x00000000E0000020L,0x0000000000800000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x00010000E0000020L,0x0000000001800000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x2000001000000020L,0x0000001000000000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0002002000000000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000021000000002L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x20010358E00041F0L,0x00000005FF9CB023L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000020000000002L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x00010318E000C1F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000002000008000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x20010718E00041F0L,0x00000005FFFCB023L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000002000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x00010718E00041F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0001031CE00041F2L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x00010318E00041F2L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x20010318E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x2000003001008020L,0x0000000000030000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000002001000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000002001000000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0001031CE00041F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000002400000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x00010318E00041F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0001031CE00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x00010318E000C1F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0001031CE000C1F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000008000000002L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000021000000002L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0001021000000002L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000024000000000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x00010318E00041F2L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000000L,0x0000000A00000000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000002L,0x0000000A00000000L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000140L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x2000005000000020L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0001000000000002L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0001000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000022L});
 
 }
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java
index 4978690..c378d45 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java
@@ -31,12 +31,12 @@
 import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
-import org.eclipse.osbp.xtext.signal.SignalHandler;
 import org.eclipse.osbp.xtext.signal.SignalModel;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
 import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
-import org.eclipse.osbp.xtext.signal.TriggerFile;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
 import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
 import org.eclipse.osbp.xtext.signal.services.SignalDSLGrammarAccess;
 import org.eclipse.xtext.Action;
@@ -128,9 +128,6 @@
 			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE:
 				sequence_SignalDatainterchange(context, (SignalDatainterchange) semanticObject); 
 				return; 
-			case SignalDSLPackage.SIGNAL_HANDLER:
-				sequence_SignalHandler(context, (SignalHandler) semanticObject); 
-				return; 
 			case SignalDSLPackage.SIGNAL_MODEL:
 				sequence_SignalModel(context, (SignalModel) semanticObject); 
 				return; 
@@ -143,8 +140,11 @@
 			case SignalDSLPackage.SIGNAL_WATCHER:
 				sequence_SignalWatcher(context, (SignalWatcher) semanticObject); 
 				return; 
-			case SignalDSLPackage.TRIGGER_FILE:
-				sequence_TriggerFile(context, (TriggerFile) semanticObject); 
+			case SignalDSLPackage.WATCHER_WITH_FILE_MASK:
+				sequence_WatcherWithFileMask(context, (WatcherWithFileMask) semanticObject); 
+				return; 
+			case SignalDSLPackage.WATCHER_WITH_FILE_NAME:
+				sequence_WatcherWithFileName(context, (WatcherWithFileName) semanticObject); 
 				return; 
 			case SignalDSLPackage.WEEKLY_SCHEDULER:
 				sequence_WeeklyScheduler(context, (WeeklyScheduler) semanticObject); 
@@ -453,7 +453,7 @@
 	
 	/**
 	 * Contexts:
-	 *     Scheduler returns CronScheduler
+	 *     SchedulerType returns CronScheduler
 	 *     CronScheduler returns CronScheduler
 	 *
 	 * Constraint:
@@ -472,7 +472,7 @@
 	
 	/**
 	 * Contexts:
-	 *     Scheduler returns DailyScheduler
+	 *     SchedulerType returns DailyScheduler
 	 *     DailyScheduler returns DailyScheduler
 	 *
 	 * Constraint:
@@ -494,7 +494,7 @@
 	
 	/**
 	 * Contexts:
-	 *     Scheduler returns HourlyScheduler
+	 *     SchedulerType returns HourlyScheduler
 	 *     HourlyScheduler returns HourlyScheduler
 	 *
 	 * Constraint:
@@ -513,7 +513,7 @@
 	
 	/**
 	 * Contexts:
-	 *     Scheduler returns MonthlyScheduler
+	 *     SchedulerType returns MonthlyScheduler
 	 *     MonthlyScheduler returns MonthlyScheduler
 	 *
 	 * Constraint:
@@ -539,36 +539,11 @@
 	/**
 	 * Contexts:
 	 *     SignalDatainterchange returns SignalDatainterchange
-	 *     SignalProcessor returns SignalDatainterchange
 	 *
 	 * Constraint:
-	 *     (dataAction=SignalActionEnum dataRef=[DataInterchange|ID] fileName=STRING)
+	 *     (dataAction=SignalActionEnum dataRef=[DataInterchange|ID] baseinterchange?='applyon'?)
 	 */
 	protected void sequence_SignalDatainterchange(ISerializationContext context, SignalDatainterchange semanticObject) {
-		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__DATA_ACTION) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__DATA_ACTION));
-			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__DATA_REF) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__DATA_REF));
-			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME));
-		}
-		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getSignalDatainterchangeAccess().getDataActionSignalActionEnumEnumRuleCall_0_0(), semanticObject.getDataAction());
-		feeder.accept(grammarAccess.getSignalDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_1_0_1(), semanticObject.eGet(SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__DATA_REF, false));
-		feeder.accept(grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0(), semanticObject.getFileName());
-		feeder.finish();
-	}
-	
-	
-	/**
-	 * Contexts:
-	 *     SignalHandler returns SignalHandler
-	 *
-	 * Constraint:
-	 *     (name=TRANSLATABLEID interchanges+=SignalDatainterchange* executiontype=SignalExecutionTypeEnum triggerpolicy=TriggerPolicy)
-	 */
-	protected void sequence_SignalHandler(ISerializationContext context, SignalHandler semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
@@ -590,7 +565,7 @@
 	 *     SignalPackage returns SignalPackage
 	 *
 	 * Constraint:
-	 *     (name=QualifiedName watchers+=SignalWatcher*)
+	 *     (name=QualifiedName signals+=SignalDefinition*)
 	 */
 	protected void sequence_SignalPackage(ISerializationContext context, SignalPackage semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
@@ -599,57 +574,89 @@
 	
 	/**
 	 * Contexts:
-	 *     TriggerPolicy returns SignalScheduler
+	 *     SignalDefinition returns SignalScheduler
 	 *     SignalScheduler returns SignalScheduler
 	 *
 	 * Constraint:
-	 *     scheduler=Scheduler
+	 *     (
+	 *         name=TRANSLATABLEID 
+	 *         schedulertype=SchedulerType 
+	 *         executiontype=SignalExecutionTypeEnum? 
+	 *         interchangegroup=[DataInterchangeGroup|ID] 
+	 *         interchanges+=SignalDatainterchange*
+	 *     )
 	 */
 	protected void sequence_SignalScheduler(ISerializationContext context, SignalScheduler semanticObject) {
-		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SIGNAL_SCHEDULER__SCHEDULER) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SIGNAL_SCHEDULER__SCHEDULER));
-		}
-		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0(), semanticObject.getScheduler());
-		feeder.finish();
-	}
-	
-	
-	/**
-	 * Contexts:
-	 *     SignalWatcher returns SignalWatcher
-	 *
-	 * Constraint:
-	 *     (name=TRANSLATABLEID directory=STRING handlers+=SignalHandler*)
-	 */
-	protected void sequence_SignalWatcher(ISerializationContext context, SignalWatcher semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
 	 * Contexts:
-	 *     TriggerPolicy returns TriggerFile
-	 *     TriggerFile returns TriggerFile
+	 *     SignalDefinition returns SignalWatcher
+	 *     SignalWatcher returns SignalWatcher
 	 *
 	 * Constraint:
-	 *     filemask=STRING
+	 *     (name=TRANSLATABLEID definition=WatcherDefinition)
 	 */
-	protected void sequence_TriggerFile(ISerializationContext context, TriggerFile semanticObject) {
+	protected void sequence_SignalWatcher(ISerializationContext context, SignalWatcher semanticObject) {
 		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SIGNAL_DEFINITION__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SIGNAL_DEFINITION__NAME));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SIGNAL_WATCHER__DEFINITION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SIGNAL_WATCHER__DEFINITION));
 		}
 		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0(), semanticObject.getFilemask());
+		feeder.accept(grammarAccess.getSignalWatcherAccess().getNameTRANSLATABLEIDParserRuleCall_2_0(), semanticObject.getName());
+		feeder.accept(grammarAccess.getSignalWatcherAccess().getDefinitionWatcherDefinitionParserRuleCall_3_0(), semanticObject.getDefinition());
 		feeder.finish();
 	}
 	
 	
 	/**
 	 * Contexts:
-	 *     Scheduler returns WeeklyScheduler
+	 *     WatcherDefinition returns WatcherWithFileMask
+	 *     WatcherWithFileMask returns WatcherWithFileMask
+	 *
+	 * Constraint:
+	 *     (filemask=STRING executiontype=SignalExecutionTypeEnum interchangegroup=[DataInterchangeGroup|ID] interchange=SignalDatainterchange)
+	 */
+	protected void sequence_WatcherWithFileMask(ISerializationContext context, WatcherWithFileMask semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.WATCHER_DEFINITION__EXECUTIONTYPE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.WATCHER_DEFINITION__EXECUTIONTYPE));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.WATCHER_DEFINITION__INTERCHANGEGROUP) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.WATCHER_DEFINITION__INTERCHANGEGROUP));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__INTERCHANGE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__INTERCHANGE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getWatcherWithFileMaskAccess().getFilemaskSTRINGTerminalRuleCall_2_0(), semanticObject.getFilemask());
+		feeder.accept(grammarAccess.getWatcherWithFileMaskAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0(), semanticObject.getExecutiontype());
+		feeder.accept(grammarAccess.getWatcherWithFileMaskAccess().getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1(), semanticObject.eGet(SignalDSLPackage.Literals.WATCHER_DEFINITION__INTERCHANGEGROUP, false));
+		feeder.accept(grammarAccess.getWatcherWithFileMaskAccess().getInterchangeSignalDatainterchangeParserRuleCall_7_0(), semanticObject.getInterchange());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     WatcherDefinition returns WatcherWithFileName
+	 *     WatcherWithFileName returns WatcherWithFileName
+	 *
+	 * Constraint:
+	 *     (filename=STRING executiontype=SignalExecutionTypeEnum interchangegroup=[DataInterchangeGroup|ID] interchanges+=SignalDatainterchange*)
+	 */
+	protected void sequence_WatcherWithFileName(ISerializationContext context, WatcherWithFileName semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     SchedulerType returns WeeklyScheduler
 	 *     WeeklyScheduler returns WeeklyScheduler
 	 *
 	 * Constraint:
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java
index 2896494..ce53c6b 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java
@@ -82,15 +82,17 @@
 		private final RuleCall cNameQualifiedNameParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
 		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
 		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
-		private final Assignment cWatchersAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
-		private final RuleCall cWatchersSignalWatcherParserRuleCall_3_1_0 = (RuleCall)cWatchersAssignment_3_1.eContents().get(0);
+		private final Assignment cSignalsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cSignalsSignalDefinitionParserRuleCall_3_1_0 = (RuleCall)cSignalsAssignment_3_1.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
 		
 		//SignalPackage:
-		//	{SignalPackage} 'package' name=QualifiedName ('{' watchers+=SignalWatcher* '}')?;
+		//	{SignalPackage} 'package' name=QualifiedName ('{'
+		//	signals+=SignalDefinition*
+		//	'}')?;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{SignalPackage} 'package' name=QualifiedName ('{' watchers+=SignalWatcher* '}')?
+		//{SignalPackage} 'package' name=QualifiedName ('{' signals+=SignalDefinition* '}')?
 		public Group getGroup() { return cGroup; }
 		
 		//{SignalPackage}
@@ -105,21 +107,40 @@
 		//QualifiedName
 		public RuleCall getNameQualifiedNameParserRuleCall_2_0() { return cNameQualifiedNameParserRuleCall_2_0; }
 		
-		//('{' watchers+=SignalWatcher* '}')?
+		//('{' signals+=SignalDefinition* '}')?
 		public Group getGroup_3() { return cGroup_3; }
 		
 		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
 		
-		//watchers+=SignalWatcher*
-		public Assignment getWatchersAssignment_3_1() { return cWatchersAssignment_3_1; }
+		//signals+=SignalDefinition*
+		public Assignment getSignalsAssignment_3_1() { return cSignalsAssignment_3_1; }
 		
-		//SignalWatcher
-		public RuleCall getWatchersSignalWatcherParserRuleCall_3_1_0() { return cWatchersSignalWatcherParserRuleCall_3_1_0; }
+		//SignalDefinition
+		public RuleCall getSignalsSignalDefinitionParserRuleCall_3_1_0() { return cSignalsSignalDefinitionParserRuleCall_3_1_0; }
 		
 		//'}'
 		public Keyword getRightCurlyBracketKeyword_3_2() { return cRightCurlyBracketKeyword_3_2; }
 	}
+	public class SignalDefinitionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalDefinition");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cSignalWatcherParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cSignalSchedulerParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//SignalDefinition:
+		//	SignalWatcher | SignalScheduler;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//SignalWatcher | SignalScheduler
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//SignalWatcher
+		public RuleCall getSignalWatcherParserRuleCall_0() { return cSignalWatcherParserRuleCall_0; }
+		
+		//SignalScheduler
+		public RuleCall getSignalSchedulerParserRuleCall_1() { return cSignalSchedulerParserRuleCall_1; }
+	}
 	public class SignalWatcherElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalWatcher");
 		private final Group cGroup = (Group)rule.eContents().get(1);
@@ -127,24 +148,16 @@
 		private final Keyword cWatcherKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
-		private final Keyword cDirectoryKeyword_3 = (Keyword)cGroup.eContents().get(3);
-		private final Assignment cDirectoryAssignment_4 = (Assignment)cGroup.eContents().get(4);
-		private final RuleCall cDirectorySTRINGTerminalRuleCall_4_0 = (RuleCall)cDirectoryAssignment_4.eContents().get(0);
-		private final Keyword cLeftCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
-		private final Assignment cHandlersAssignment_6 = (Assignment)cGroup.eContents().get(6);
-		private final RuleCall cHandlersSignalHandlerParserRuleCall_6_0 = (RuleCall)cHandlersAssignment_6.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cDefinitionAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cDefinitionWatcherDefinitionParserRuleCall_3_0 = (RuleCall)cDefinitionAssignment_3.eContents().get(0);
 		
 		//SignalWatcher:
 		//	{SignalWatcher}
 		//	'watcher' name=TRANSLATABLEID
-		//	'directory' directory=STRING
-		//	'{'
-		//	handlers+=SignalHandler*
-		//	'}';
+		//	definition=WatcherDefinition;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{SignalWatcher} 'watcher' name=TRANSLATABLEID 'directory' directory=STRING '{' handlers+=SignalHandler* '}'
+		//{SignalWatcher} 'watcher' name=TRANSLATABLEID definition=WatcherDefinition
 		public Group getGroup() { return cGroup; }
 		
 		//{SignalWatcher}
@@ -159,58 +172,219 @@
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
 		
-		//'directory'
-		public Keyword getDirectoryKeyword_3() { return cDirectoryKeyword_3; }
+		//definition=WatcherDefinition
+		public Assignment getDefinitionAssignment_3() { return cDefinitionAssignment_3; }
 		
-		//directory=STRING
-		public Assignment getDirectoryAssignment_4() { return cDirectoryAssignment_4; }
-		
-		//STRING
-		public RuleCall getDirectorySTRINGTerminalRuleCall_4_0() { return cDirectorySTRINGTerminalRuleCall_4_0; }
-		
-		//'{'
-		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
-		
-		//handlers+=SignalHandler*
-		public Assignment getHandlersAssignment_6() { return cHandlersAssignment_6; }
-		
-		//SignalHandler
-		public RuleCall getHandlersSignalHandlerParserRuleCall_6_0() { return cHandlersSignalHandlerParserRuleCall_6_0; }
-		
-		//'}'
-		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
+		//WatcherDefinition
+		public RuleCall getDefinitionWatcherDefinitionParserRuleCall_3_0() { return cDefinitionWatcherDefinitionParserRuleCall_3_0; }
 	}
-	public class SignalHandlerElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandler");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Action cSignalHandlerAction_0 = (Action)cGroup.eContents().get(0);
-		private final Keyword cHandlerKeyword_1 = (Keyword)cGroup.eContents().get(1);
-		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
-		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
-		private final Assignment cInterchangesAssignment_3 = (Assignment)cGroup.eContents().get(3);
-		private final RuleCall cInterchangesSignalDatainterchangeParserRuleCall_3_0 = (RuleCall)cInterchangesAssignment_3.eContents().get(0);
-		private final Assignment cExecutiontypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
-		private final RuleCall cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0 = (RuleCall)cExecutiontypeAssignment_4.eContents().get(0);
-		private final Assignment cTriggerpolicyAssignment_5 = (Assignment)cGroup.eContents().get(5);
-		private final RuleCall cTriggerpolicyTriggerPolicyParserRuleCall_5_0 = (RuleCall)cTriggerpolicyAssignment_5.eContents().get(0);
+	public class WatcherDefinitionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.WatcherDefinition");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cWatcherWithFileMaskParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cWatcherWithFileNameParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		
-		//SignalHandler:
-		//	{SignalHandler}
-		//	'handler' name=TRANSLATABLEID
-		//	interchanges+=SignalDatainterchange*
-		//	executiontype=SignalExecutionTypeEnum
-		//	triggerpolicy=TriggerPolicy;
+		//WatcherDefinition:
+		//	WatcherWithFileMask | WatcherWithFileName;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{SignalHandler} 'handler' name=TRANSLATABLEID interchanges+=SignalDatainterchange* executiontype=SignalExecutionTypeEnum
-		//triggerpolicy=TriggerPolicy
+		//WatcherWithFileMask | WatcherWithFileName
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//WatcherWithFileMask
+		public RuleCall getWatcherWithFileMaskParserRuleCall_0() { return cWatcherWithFileMaskParserRuleCall_0; }
+		
+		//WatcherWithFileName
+		public RuleCall getWatcherWithFileNameParserRuleCall_1() { return cWatcherWithFileNameParserRuleCall_1; }
+	}
+	public class WatcherWithFileMaskElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.WatcherWithFileMask");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cWatcherWithFileMaskAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFilemaskKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cFilemaskAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cFilemaskSTRINGTerminalRuleCall_2_0 = (RuleCall)cFilemaskAssignment_2.eContents().get(0);
+		private final Assignment cExecutiontypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0 = (RuleCall)cExecutiontypeAssignment_3.eContents().get(0);
+		private final Keyword cFromKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cInterchangegroupAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cInterchangegroupDataInterchangeGroupCrossReference_5_0 = (CrossReference)cInterchangegroupAssignment_5.eContents().get(0);
+		private final RuleCall cInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1 = (RuleCall)cInterchangegroupDataInterchangeGroupCrossReference_5_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cInterchangeAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cInterchangeSignalDatainterchangeParserRuleCall_7_0 = (RuleCall)cInterchangeAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//WatcherWithFileMask:
+		//	{WatcherWithFileMask}
+		//	'filemask' filemask=STRING
+		//	executiontype=SignalExecutionTypeEnum
+		//	'from' interchangegroup=[data::DataInterchangeGroup]
+		//	'{'
+		//	interchange=SignalDatainterchange
+		//	'}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{WatcherWithFileMask} 'filemask' filemask=STRING executiontype=SignalExecutionTypeEnum 'from'
+		//interchangegroup=[data::DataInterchangeGroup] '{' interchange=SignalDatainterchange '}'
 		public Group getGroup() { return cGroup; }
 		
-		//{SignalHandler}
-		public Action getSignalHandlerAction_0() { return cSignalHandlerAction_0; }
+		//{WatcherWithFileMask}
+		public Action getWatcherWithFileMaskAction_0() { return cWatcherWithFileMaskAction_0; }
 		
-		//'handler'
-		public Keyword getHandlerKeyword_1() { return cHandlerKeyword_1; }
+		//'filemask'
+		public Keyword getFilemaskKeyword_1() { return cFilemaskKeyword_1; }
+		
+		//filemask=STRING
+		public Assignment getFilemaskAssignment_2() { return cFilemaskAssignment_2; }
+		
+		//STRING
+		public RuleCall getFilemaskSTRINGTerminalRuleCall_2_0() { return cFilemaskSTRINGTerminalRuleCall_2_0; }
+		
+		//executiontype=SignalExecutionTypeEnum
+		public Assignment getExecutiontypeAssignment_3() { return cExecutiontypeAssignment_3; }
+		
+		//SignalExecutionTypeEnum
+		public RuleCall getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0() { return cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0; }
+		
+		//'from'
+		public Keyword getFromKeyword_4() { return cFromKeyword_4; }
+		
+		//interchangegroup=[data::DataInterchangeGroup]
+		public Assignment getInterchangegroupAssignment_5() { return cInterchangegroupAssignment_5; }
+		
+		//[data::DataInterchangeGroup]
+		public CrossReference getInterchangegroupDataInterchangeGroupCrossReference_5_0() { return cInterchangegroupDataInterchangeGroupCrossReference_5_0; }
+		
+		//ID
+		public RuleCall getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1() { return cInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1; }
+		
+		//'{'
+		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+		
+		//interchange=SignalDatainterchange
+		public Assignment getInterchangeAssignment_7() { return cInterchangeAssignment_7; }
+		
+		//SignalDatainterchange
+		public RuleCall getInterchangeSignalDatainterchangeParserRuleCall_7_0() { return cInterchangeSignalDatainterchangeParserRuleCall_7_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+	public class WatcherWithFileNameElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.WatcherWithFileName");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cWatcherWithFileNameAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cFilenameKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cFilenameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cFilenameSTRINGTerminalRuleCall_2_0 = (RuleCall)cFilenameAssignment_2.eContents().get(0);
+		private final Assignment cExecutiontypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0 = (RuleCall)cExecutiontypeAssignment_3.eContents().get(0);
+		private final Keyword cFromKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cInterchangegroupAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cInterchangegroupDataInterchangeGroupCrossReference_5_0 = (CrossReference)cInterchangegroupAssignment_5.eContents().get(0);
+		private final RuleCall cInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1 = (RuleCall)cInterchangegroupDataInterchangeGroupCrossReference_5_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cInterchangesAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cInterchangesSignalDatainterchangeParserRuleCall_7_0 = (RuleCall)cInterchangesAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//WatcherWithFileName:
+		//	{WatcherWithFileName}
+		//	'filename' filename=STRING
+		//	executiontype=SignalExecutionTypeEnum
+		//	'from' interchangegroup=[data::DataInterchangeGroup]
+		//	'{'
+		//	interchanges+=SignalDatainterchange*
+		//	'}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{WatcherWithFileName} 'filename' filename=STRING executiontype=SignalExecutionTypeEnum 'from'
+		//interchangegroup=[data::DataInterchangeGroup] '{' interchanges+=SignalDatainterchange* '}'
+		public Group getGroup() { return cGroup; }
+		
+		//{WatcherWithFileName}
+		public Action getWatcherWithFileNameAction_0() { return cWatcherWithFileNameAction_0; }
+		
+		//'filename'
+		public Keyword getFilenameKeyword_1() { return cFilenameKeyword_1; }
+		
+		//filename=STRING
+		public Assignment getFilenameAssignment_2() { return cFilenameAssignment_2; }
+		
+		//STRING
+		public RuleCall getFilenameSTRINGTerminalRuleCall_2_0() { return cFilenameSTRINGTerminalRuleCall_2_0; }
+		
+		//executiontype=SignalExecutionTypeEnum
+		public Assignment getExecutiontypeAssignment_3() { return cExecutiontypeAssignment_3; }
+		
+		//SignalExecutionTypeEnum
+		public RuleCall getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0() { return cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_3_0; }
+		
+		//'from'
+		public Keyword getFromKeyword_4() { return cFromKeyword_4; }
+		
+		//interchangegroup=[data::DataInterchangeGroup]
+		public Assignment getInterchangegroupAssignment_5() { return cInterchangegroupAssignment_5; }
+		
+		//[data::DataInterchangeGroup]
+		public CrossReference getInterchangegroupDataInterchangeGroupCrossReference_5_0() { return cInterchangegroupDataInterchangeGroupCrossReference_5_0; }
+		
+		//ID
+		public RuleCall getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1() { return cInterchangegroupDataInterchangeGroupIDTerminalRuleCall_5_0_1; }
+		
+		//'{'
+		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+		
+		//interchanges+=SignalDatainterchange*
+		public Assignment getInterchangesAssignment_7() { return cInterchangesAssignment_7; }
+		
+		//SignalDatainterchange
+		public RuleCall getInterchangesSignalDatainterchangeParserRuleCall_7_0() { return cInterchangesSignalDatainterchangeParserRuleCall_7_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+	public class SignalSchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cSignalSchedulerAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cSchedulerKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Assignment cSchedulertypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cSchedulertypeSchedulerTypeParserRuleCall_3_0 = (RuleCall)cSchedulertypeAssignment_3.eContents().get(0);
+		private final Assignment cExecutiontypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0 = (RuleCall)cExecutiontypeAssignment_4.eContents().get(0);
+		private final Keyword cFromKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cInterchangegroupAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cInterchangegroupDataInterchangeGroupCrossReference_6_0 = (CrossReference)cInterchangegroupAssignment_6.eContents().get(0);
+		private final RuleCall cInterchangegroupDataInterchangeGroupIDTerminalRuleCall_6_0_1 = (RuleCall)cInterchangegroupDataInterchangeGroupCrossReference_6_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Assignment cInterchangesAssignment_8 = (Assignment)cGroup.eContents().get(8);
+		private final RuleCall cInterchangesSignalDatainterchangeParserRuleCall_8_0 = (RuleCall)cInterchangesAssignment_8.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		
+		//SignalScheduler:
+		//	{SignalScheduler}
+		//	'scheduler' name=TRANSLATABLEID
+		//	schedulertype=SchedulerType
+		//	executiontype=SignalExecutionTypeEnum?
+		//	'from' interchangegroup=[data::DataInterchangeGroup]
+		//	'{'
+		//	interchanges+=SignalDatainterchange*
+		//	'}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{SignalScheduler} 'scheduler' name=TRANSLATABLEID schedulertype=SchedulerType executiontype=SignalExecutionTypeEnum?
+		//'from' interchangegroup=[data::DataInterchangeGroup] '{' interchanges+=SignalDatainterchange* '}'
+		public Group getGroup() { return cGroup; }
+		
+		//{SignalScheduler}
+		public Action getSignalSchedulerAction_0() { return cSignalSchedulerAction_0; }
+		
+		//'scheduler'
+		public Keyword getSchedulerKeyword_1() { return cSchedulerKeyword_1; }
 		
 		//name=TRANSLATABLEID
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
@@ -218,91 +392,44 @@
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
 		
-		//interchanges+=SignalDatainterchange*
-		public Assignment getInterchangesAssignment_3() { return cInterchangesAssignment_3; }
+		//schedulertype=SchedulerType
+		public Assignment getSchedulertypeAssignment_3() { return cSchedulertypeAssignment_3; }
 		
-		//SignalDatainterchange
-		public RuleCall getInterchangesSignalDatainterchangeParserRuleCall_3_0() { return cInterchangesSignalDatainterchangeParserRuleCall_3_0; }
+		//SchedulerType
+		public RuleCall getSchedulertypeSchedulerTypeParserRuleCall_3_0() { return cSchedulertypeSchedulerTypeParserRuleCall_3_0; }
 		
-		//executiontype=SignalExecutionTypeEnum
+		//executiontype=SignalExecutionTypeEnum?
 		public Assignment getExecutiontypeAssignment_4() { return cExecutiontypeAssignment_4; }
 		
 		//SignalExecutionTypeEnum
 		public RuleCall getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0() { return cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0; }
 		
-		//triggerpolicy=TriggerPolicy
-		public Assignment getTriggerpolicyAssignment_5() { return cTriggerpolicyAssignment_5; }
+		//'from'
+		public Keyword getFromKeyword_5() { return cFromKeyword_5; }
 		
-		//TriggerPolicy
-		public RuleCall getTriggerpolicyTriggerPolicyParserRuleCall_5_0() { return cTriggerpolicyTriggerPolicyParserRuleCall_5_0; }
+		//interchangegroup=[data::DataInterchangeGroup]
+		public Assignment getInterchangegroupAssignment_6() { return cInterchangegroupAssignment_6; }
+		
+		//[data::DataInterchangeGroup]
+		public CrossReference getInterchangegroupDataInterchangeGroupCrossReference_6_0() { return cInterchangegroupDataInterchangeGroupCrossReference_6_0; }
+		
+		//ID
+		public RuleCall getInterchangegroupDataInterchangeGroupIDTerminalRuleCall_6_0_1() { return cInterchangegroupDataInterchangeGroupIDTerminalRuleCall_6_0_1; }
+		
+		//'{'
+		public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
+		
+		//interchanges+=SignalDatainterchange*
+		public Assignment getInterchangesAssignment_8() { return cInterchangesAssignment_8; }
+		
+		//SignalDatainterchange
+		public RuleCall getInterchangesSignalDatainterchangeParserRuleCall_8_0() { return cInterchangesSignalDatainterchangeParserRuleCall_8_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
 	}
-	public class TriggerPolicyElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.TriggerPolicy");
-		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
-		private final RuleCall cTriggerFileParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
-		private final RuleCall cSignalSchedulerParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
-		
-		//TriggerPolicy:
-		//	TriggerFile | SignalScheduler;
-		@Override public ParserRule getRule() { return rule; }
-		
-		//TriggerFile | SignalScheduler
-		public Alternatives getAlternatives() { return cAlternatives; }
-		
-		//TriggerFile
-		public RuleCall getTriggerFileParserRuleCall_0() { return cTriggerFileParserRuleCall_0; }
-		
-		//SignalScheduler
-		public RuleCall getSignalSchedulerParserRuleCall_1() { return cSignalSchedulerParserRuleCall_1; }
-	}
-	public class TriggerFileElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.TriggerFile");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cForFileMaskKeyword_0 = (Keyword)cGroup.eContents().get(0);
-		private final Assignment cFilemaskAssignment_1 = (Assignment)cGroup.eContents().get(1);
-		private final RuleCall cFilemaskSTRINGTerminalRuleCall_1_0 = (RuleCall)cFilemaskAssignment_1.eContents().get(0);
-		
-		//TriggerFile:
-		//	'forFileMask' filemask=STRING;
-		@Override public ParserRule getRule() { return rule; }
-		
-		//'forFileMask' filemask=STRING
-		public Group getGroup() { return cGroup; }
-		
-		//'forFileMask'
-		public Keyword getForFileMaskKeyword_0() { return cForFileMaskKeyword_0; }
-		
-		//filemask=STRING
-		public Assignment getFilemaskAssignment_1() { return cFilemaskAssignment_1; }
-		
-		//STRING
-		public RuleCall getFilemaskSTRINGTerminalRuleCall_1_0() { return cFilemaskSTRINGTerminalRuleCall_1_0; }
-	}
-	public class SignalSchedulerElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalScheduler");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cScheduleForKeyword_0 = (Keyword)cGroup.eContents().get(0);
-		private final Assignment cSchedulerAssignment_1 = (Assignment)cGroup.eContents().get(1);
-		private final RuleCall cSchedulerSchedulerParserRuleCall_1_0 = (RuleCall)cSchedulerAssignment_1.eContents().get(0);
-		
-		//SignalScheduler:
-		//	'scheduleFor' scheduler=Scheduler;
-		@Override public ParserRule getRule() { return rule; }
-		
-		//'scheduleFor' scheduler=Scheduler
-		public Group getGroup() { return cGroup; }
-		
-		//'scheduleFor'
-		public Keyword getScheduleForKeyword_0() { return cScheduleForKeyword_0; }
-		
-		//scheduler=Scheduler
-		public Assignment getSchedulerAssignment_1() { return cSchedulerAssignment_1; }
-		
-		//Scheduler
-		public RuleCall getSchedulerSchedulerParserRuleCall_1_0() { return cSchedulerSchedulerParserRuleCall_1_0; }
-	}
-	public class SchedulerElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.Scheduler");
+	public class SchedulerTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SchedulerType");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cCronSchedulerParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cHourlySchedulerParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
@@ -310,7 +437,7 @@
 		private final RuleCall cWeeklySchedulerParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		private final RuleCall cMonthlySchedulerParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
 		
-		//Scheduler:
+		//SchedulerType:
 		//	CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler;
 		@Override public ParserRule getRule() { return rule; }
 		
@@ -358,19 +485,19 @@
 	public class HourlySchedulerElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.HourlyScheduler");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cHourlyAtKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cHourlyatKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cMinuteAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cMinuteINTTerminalRuleCall_1_0 = (RuleCall)cMinuteAssignment_1.eContents().get(0);
 		
 		//HourlyScheduler:
-		//	'hourlyAt' minute=INT;
+		//	'hourlyat' minute=INT;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'hourlyAt' minute=INT
+		//'hourlyat' minute=INT
 		public Group getGroup() { return cGroup; }
 		
-		//'hourlyAt'
-		public Keyword getHourlyAtKeyword_0() { return cHourlyAtKeyword_0; }
+		//'hourlyat'
+		public Keyword getHourlyatKeyword_0() { return cHourlyatKeyword_0; }
 		
 		//minute=INT
 		public Assignment getMinuteAssignment_1() { return cMinuteAssignment_1; }
@@ -381,7 +508,7 @@
 	public class DailySchedulerElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.DailyScheduler");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cDailyAtKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cDailyatKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cHourAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cHourINTTerminalRuleCall_1_0 = (RuleCall)cHourAssignment_1.eContents().get(0);
 		private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
@@ -389,14 +516,14 @@
 		private final RuleCall cMinuteINTTerminalRuleCall_3_0 = (RuleCall)cMinuteAssignment_3.eContents().get(0);
 		
 		//DailyScheduler:
-		//	'dailyAt' hour=INT ':' minute=INT;
+		//	'dailyat' hour=INT ':' minute=INT;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'dailyAt' hour=INT ':' minute=INT
+		//'dailyat' hour=INT ':' minute=INT
 		public Group getGroup() { return cGroup; }
 		
-		//'dailyAt'
-		public Keyword getDailyAtKeyword_0() { return cDailyAtKeyword_0; }
+		//'dailyat'
+		public Keyword getDailyatKeyword_0() { return cDailyatKeyword_0; }
 		
 		//hour=INT
 		public Assignment getHourAssignment_1() { return cHourAssignment_1; }
@@ -416,7 +543,7 @@
 	public class WeeklySchedulerElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.WeeklyScheduler");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cWeeklyOnKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cWeeklyonKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cDayofweekAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cDayofweekDayOfWeekEnumEnumRuleCall_1_0 = (RuleCall)cDayofweekAssignment_1.eContents().get(0);
 		private final Keyword cAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
@@ -427,14 +554,14 @@
 		private final RuleCall cMinuteINTTerminalRuleCall_5_0 = (RuleCall)cMinuteAssignment_5.eContents().get(0);
 		
 		//WeeklyScheduler:
-		//	'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
+		//	'weeklyon' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT
+		//'weeklyon' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT
 		public Group getGroup() { return cGroup; }
 		
-		//'weeklyOn'
-		public Keyword getWeeklyOnKeyword_0() { return cWeeklyOnKeyword_0; }
+		//'weeklyon'
+		public Keyword getWeeklyonKeyword_0() { return cWeeklyonKeyword_0; }
 		
 		//dayofweek=DayOfWeekEnum
 		public Assignment getDayofweekAssignment_1() { return cDayofweekAssignment_1; }
@@ -463,7 +590,7 @@
 	public class MonthlySchedulerElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.MonthlyScheduler");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cMonthlyOnKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cMonthlyonKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cDayofmonthAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cDayofmonthINTTerminalRuleCall_1_0 = (RuleCall)cDayofmonthAssignment_1.eContents().get(0);
 		private final Keyword cAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
@@ -474,14 +601,14 @@
 		private final RuleCall cMinuteINTTerminalRuleCall_5_0 = (RuleCall)cMinuteAssignment_5.eContents().get(0);
 		
 		//MonthlyScheduler:
-		//	'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT;
+		//	'monthlyon' dayofmonth=INT 'at' hour=INT ':' minute=INT;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT
+		//'monthlyon' dayofmonth=INT 'at' hour=INT ':' minute=INT
 		public Group getGroup() { return cGroup; }
 		
-		//'monthlyOn'
-		public Keyword getMonthlyOnKeyword_0() { return cMonthlyOnKeyword_0; }
+		//'monthlyon'
+		public Keyword getMonthlyonKeyword_0() { return cMonthlyonKeyword_0; }
 		
 		//dayofmonth=INT
 		public Assignment getDayofmonthAssignment_1() { return cDayofmonthAssignment_1; }
@@ -515,17 +642,15 @@
 		private final Assignment cDataRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final CrossReference cDataRefDataInterchangeCrossReference_1_0 = (CrossReference)cDataRefAssignment_1.eContents().get(0);
 		private final RuleCall cDataRefDataInterchangeIDTerminalRuleCall_1_0_1 = (RuleCall)cDataRefDataInterchangeCrossReference_1_0.eContents().get(1);
-		private final Keyword cFileNameKeyword_2 = (Keyword)cGroup.eContents().get(2);
-		private final Assignment cFileNameAssignment_3 = (Assignment)cGroup.eContents().get(3);
-		private final RuleCall cFileNameSTRINGTerminalRuleCall_3_0 = (RuleCall)cFileNameAssignment_3.eContents().get(0);
+		private final Assignment cBaseinterchangeAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final Keyword cBaseinterchangeApplyonKeyword_2_0 = (Keyword)cBaseinterchangeAssignment_2.eContents().get(0);
 		
 		//SignalDatainterchange:
 		//	dataAction=SignalActionEnum
-		//	dataRef=[data::DataInterchange]
-		//	'fileName' fileName=STRING;
+		//	dataRef=[data::DataInterchange] baseinterchange?='applyon'?;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//dataAction=SignalActionEnum dataRef=[data::DataInterchange] 'fileName' fileName=STRING
+		//dataAction=SignalActionEnum dataRef=[data::DataInterchange] baseinterchange?='applyon'?
 		public Group getGroup() { return cGroup; }
 		
 		//dataAction=SignalActionEnum
@@ -543,25 +668,11 @@
 		//ID
 		public RuleCall getDataRefDataInterchangeIDTerminalRuleCall_1_0_1() { return cDataRefDataInterchangeIDTerminalRuleCall_1_0_1; }
 		
-		//'fileName'
-		public Keyword getFileNameKeyword_2() { return cFileNameKeyword_2; }
+		//baseinterchange?='applyon'?
+		public Assignment getBaseinterchangeAssignment_2() { return cBaseinterchangeAssignment_2; }
 		
-		//fileName=STRING
-		public Assignment getFileNameAssignment_3() { return cFileNameAssignment_3; }
-		
-		//STRING
-		public RuleCall getFileNameSTRINGTerminalRuleCall_3_0() { return cFileNameSTRINGTerminalRuleCall_3_0; }
-	}
-	public class SignalProcessorElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalProcessor");
-		private final RuleCall cSignalDatainterchangeParserRuleCall = (RuleCall)rule.eContents().get(1);
-		
-		//SignalProcessor:
-		//	SignalDatainterchange;
-		@Override public ParserRule getRule() { return rule; }
-		
-		//SignalDatainterchange
-		public RuleCall getSignalDatainterchangeParserRuleCall() { return cSignalDatainterchangeParserRuleCall; }
+		//'applyon'
+		public Keyword getBaseinterchangeApplyonKeyword_2_0() { return cBaseinterchangeApplyonKeyword_2_0; }
 	}
 	public class TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.TRANSLATABLEID");
@@ -595,22 +706,23 @@
 		private final Keyword cDATAEXPORTExportKeyword_1_0 = (Keyword)cDATAEXPORTEnumLiteralDeclaration_1.eContents().get(0);
 		
 		//enum SignalActionEnum:
-		//	DATAIMPORT='Import' | DATAEXPORT='Export';
+		//	DATAIMPORT='import' |
+		//	DATAEXPORT='export';
 		public EnumRule getRule() { return rule; }
 		
-		//DATAIMPORT='Import' | DATAEXPORT='Export'
+		//DATAIMPORT='import' | DATAEXPORT='export'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//DATAIMPORT='Import'
+		//DATAIMPORT='import'
 		public EnumLiteralDeclaration getDATAIMPORTEnumLiteralDeclaration_0() { return cDATAIMPORTEnumLiteralDeclaration_0; }
 		
-		//'Import'
+		//'import'
 		public Keyword getDATAIMPORTImportKeyword_0_0() { return cDATAIMPORTImportKeyword_0_0; }
 		
-		//DATAEXPORT='Export'
+		//DATAEXPORT='export'
 		public EnumLiteralDeclaration getDATAEXPORTEnumLiteralDeclaration_1() { return cDATAEXPORTEnumLiteralDeclaration_1; }
 		
-		//'Export'
+		//'export'
 		public Keyword getDATAEXPORTExportKeyword_1_0() { return cDATAEXPORTExportKeyword_1_0; }
 	}
 	public class SignalExecutionTypeEnumElements extends AbstractEnumRuleElementFinder {
@@ -622,7 +734,8 @@
 		private final Keyword cNOSEQParallelKeyword_1_0 = (Keyword)cNOSEQEnumLiteralDeclaration_1.eContents().get(0);
 		
 		//enum SignalExecutionTypeEnum:
-		//	SEQ='sequential' | NOSEQ='parallel';
+		//	SEQ='sequential' |
+		//	NOSEQ='parallel';
 		public EnumRule getRule() { return rule; }
 		
 		//SEQ='sequential' | NOSEQ='parallel'
@@ -717,19 +830,19 @@
 	
 	private final SignalModelElements pSignalModel;
 	private final SignalPackageElements pSignalPackage;
+	private final SignalDefinitionElements pSignalDefinition;
 	private final SignalWatcherElements pSignalWatcher;
-	private final SignalHandlerElements pSignalHandler;
-	private final TriggerPolicyElements pTriggerPolicy;
-	private final TriggerFileElements pTriggerFile;
+	private final WatcherDefinitionElements pWatcherDefinition;
+	private final WatcherWithFileMaskElements pWatcherWithFileMask;
+	private final WatcherWithFileNameElements pWatcherWithFileName;
 	private final SignalSchedulerElements pSignalScheduler;
-	private final SchedulerElements pScheduler;
+	private final SchedulerTypeElements pSchedulerType;
 	private final CronSchedulerElements pCronScheduler;
 	private final HourlySchedulerElements pHourlyScheduler;
 	private final DailySchedulerElements pDailyScheduler;
 	private final WeeklySchedulerElements pWeeklyScheduler;
 	private final MonthlySchedulerElements pMonthlyScheduler;
 	private final SignalDatainterchangeElements pSignalDatainterchange;
-	private final SignalProcessorElements pSignalProcessor;
 	private final SignalActionEnumElements eSignalActionEnum;
 	private final SignalExecutionTypeEnumElements eSignalExecutionTypeEnum;
 	private final DayOfWeekEnumElements eDayOfWeekEnum;
@@ -759,19 +872,19 @@
 		this.gaXtype = gaXtype;
 		this.pSignalModel = new SignalModelElements();
 		this.pSignalPackage = new SignalPackageElements();
+		this.pSignalDefinition = new SignalDefinitionElements();
 		this.pSignalWatcher = new SignalWatcherElements();
-		this.pSignalHandler = new SignalHandlerElements();
-		this.pTriggerPolicy = new TriggerPolicyElements();
-		this.pTriggerFile = new TriggerFileElements();
+		this.pWatcherDefinition = new WatcherDefinitionElements();
+		this.pWatcherWithFileMask = new WatcherWithFileMaskElements();
+		this.pWatcherWithFileName = new WatcherWithFileNameElements();
 		this.pSignalScheduler = new SignalSchedulerElements();
-		this.pScheduler = new SchedulerElements();
+		this.pSchedulerType = new SchedulerTypeElements();
 		this.pCronScheduler = new CronSchedulerElements();
 		this.pHourlyScheduler = new HourlySchedulerElements();
 		this.pDailyScheduler = new DailySchedulerElements();
 		this.pWeeklyScheduler = new WeeklySchedulerElements();
 		this.pMonthlyScheduler = new MonthlySchedulerElements();
 		this.pSignalDatainterchange = new SignalDatainterchangeElements();
-		this.pSignalProcessor = new SignalProcessorElements();
 		this.eSignalActionEnum = new SignalActionEnumElements();
 		this.eSignalExecutionTypeEnum = new SignalExecutionTypeEnumElements();
 		this.eDayOfWeekEnum = new DayOfWeekEnumElements();
@@ -830,7 +943,9 @@
 	}
 	
 	//SignalPackage:
-	//	{SignalPackage} 'package' name=QualifiedName ('{' watchers+=SignalWatcher* '}')?;
+	//	{SignalPackage} 'package' name=QualifiedName ('{'
+	//	signals+=SignalDefinition*
+	//	'}')?;
 	public SignalPackageElements getSignalPackageAccess() {
 		return pSignalPackage;
 	}
@@ -839,13 +954,20 @@
 		return getSignalPackageAccess().getRule();
 	}
 	
+	//SignalDefinition:
+	//	SignalWatcher | SignalScheduler;
+	public SignalDefinitionElements getSignalDefinitionAccess() {
+		return pSignalDefinition;
+	}
+	
+	public ParserRule getSignalDefinitionRule() {
+		return getSignalDefinitionAccess().getRule();
+	}
+	
 	//SignalWatcher:
 	//	{SignalWatcher}
 	//	'watcher' name=TRANSLATABLEID
-	//	'directory' directory=STRING
-	//	'{'
-	//	handlers+=SignalHandler*
-	//	'}';
+	//	definition=WatcherDefinition;
 	public SignalWatcherElements getSignalWatcherAccess() {
 		return pSignalWatcher;
 	}
@@ -854,42 +976,57 @@
 		return getSignalWatcherAccess().getRule();
 	}
 	
-	//SignalHandler:
-	//	{SignalHandler}
-	//	'handler' name=TRANSLATABLEID
-	//	interchanges+=SignalDatainterchange*
+	//WatcherDefinition:
+	//	WatcherWithFileMask | WatcherWithFileName;
+	public WatcherDefinitionElements getWatcherDefinitionAccess() {
+		return pWatcherDefinition;
+	}
+	
+	public ParserRule getWatcherDefinitionRule() {
+		return getWatcherDefinitionAccess().getRule();
+	}
+	
+	//WatcherWithFileMask:
+	//	{WatcherWithFileMask}
+	//	'filemask' filemask=STRING
 	//	executiontype=SignalExecutionTypeEnum
-	//	triggerpolicy=TriggerPolicy;
-	public SignalHandlerElements getSignalHandlerAccess() {
-		return pSignalHandler;
+	//	'from' interchangegroup=[data::DataInterchangeGroup]
+	//	'{'
+	//	interchange=SignalDatainterchange
+	//	'}';
+	public WatcherWithFileMaskElements getWatcherWithFileMaskAccess() {
+		return pWatcherWithFileMask;
 	}
 	
-	public ParserRule getSignalHandlerRule() {
-		return getSignalHandlerAccess().getRule();
+	public ParserRule getWatcherWithFileMaskRule() {
+		return getWatcherWithFileMaskAccess().getRule();
 	}
 	
-	//TriggerPolicy:
-	//	TriggerFile | SignalScheduler;
-	public TriggerPolicyElements getTriggerPolicyAccess() {
-		return pTriggerPolicy;
+	//WatcherWithFileName:
+	//	{WatcherWithFileName}
+	//	'filename' filename=STRING
+	//	executiontype=SignalExecutionTypeEnum
+	//	'from' interchangegroup=[data::DataInterchangeGroup]
+	//	'{'
+	//	interchanges+=SignalDatainterchange*
+	//	'}';
+	public WatcherWithFileNameElements getWatcherWithFileNameAccess() {
+		return pWatcherWithFileName;
 	}
 	
-	public ParserRule getTriggerPolicyRule() {
-		return getTriggerPolicyAccess().getRule();
-	}
-	
-	//TriggerFile:
-	//	'forFileMask' filemask=STRING;
-	public TriggerFileElements getTriggerFileAccess() {
-		return pTriggerFile;
-	}
-	
-	public ParserRule getTriggerFileRule() {
-		return getTriggerFileAccess().getRule();
+	public ParserRule getWatcherWithFileNameRule() {
+		return getWatcherWithFileNameAccess().getRule();
 	}
 	
 	//SignalScheduler:
-	//	'scheduleFor' scheduler=Scheduler;
+	//	{SignalScheduler}
+	//	'scheduler' name=TRANSLATABLEID
+	//	schedulertype=SchedulerType
+	//	executiontype=SignalExecutionTypeEnum?
+	//	'from' interchangegroup=[data::DataInterchangeGroup]
+	//	'{'
+	//	interchanges+=SignalDatainterchange*
+	//	'}';
 	public SignalSchedulerElements getSignalSchedulerAccess() {
 		return pSignalScheduler;
 	}
@@ -898,14 +1035,14 @@
 		return getSignalSchedulerAccess().getRule();
 	}
 	
-	//Scheduler:
+	//SchedulerType:
 	//	CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler;
-	public SchedulerElements getSchedulerAccess() {
-		return pScheduler;
+	public SchedulerTypeElements getSchedulerTypeAccess() {
+		return pSchedulerType;
 	}
 	
-	public ParserRule getSchedulerRule() {
-		return getSchedulerAccess().getRule();
+	public ParserRule getSchedulerTypeRule() {
+		return getSchedulerTypeAccess().getRule();
 	}
 	
 	//CronScheduler:
@@ -919,7 +1056,7 @@
 	}
 	
 	//HourlyScheduler:
-	//	'hourlyAt' minute=INT;
+	//	'hourlyat' minute=INT;
 	public HourlySchedulerElements getHourlySchedulerAccess() {
 		return pHourlyScheduler;
 	}
@@ -929,7 +1066,7 @@
 	}
 	
 	//DailyScheduler:
-	//	'dailyAt' hour=INT ':' minute=INT;
+	//	'dailyat' hour=INT ':' minute=INT;
 	public DailySchedulerElements getDailySchedulerAccess() {
 		return pDailyScheduler;
 	}
@@ -939,7 +1076,7 @@
 	}
 	
 	//WeeklyScheduler:
-	//	'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
+	//	'weeklyon' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
 	public WeeklySchedulerElements getWeeklySchedulerAccess() {
 		return pWeeklyScheduler;
 	}
@@ -949,7 +1086,7 @@
 	}
 	
 	//MonthlyScheduler:
-	//	'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT;
+	//	'monthlyon' dayofmonth=INT 'at' hour=INT ':' minute=INT;
 	public MonthlySchedulerElements getMonthlySchedulerAccess() {
 		return pMonthlyScheduler;
 	}
@@ -960,8 +1097,7 @@
 	
 	//SignalDatainterchange:
 	//	dataAction=SignalActionEnum
-	//	dataRef=[data::DataInterchange]
-	//	'fileName' fileName=STRING;
+	//	dataRef=[data::DataInterchange] baseinterchange?='applyon'?;
 	public SignalDatainterchangeElements getSignalDatainterchangeAccess() {
 		return pSignalDatainterchange;
 	}
@@ -970,18 +1106,9 @@
 		return getSignalDatainterchangeAccess().getRule();
 	}
 	
-	//SignalProcessor:
-	//	SignalDatainterchange;
-	public SignalProcessorElements getSignalProcessorAccess() {
-		return pSignalProcessor;
-	}
-	
-	public ParserRule getSignalProcessorRule() {
-		return getSignalProcessorAccess().getRule();
-	}
-	
 	//enum SignalActionEnum:
-	//	DATAIMPORT='Import' | DATAEXPORT='Export';
+	//	DATAIMPORT='import' |
+	//	DATAEXPORT='export';
 	public SignalActionEnumElements getSignalActionEnumAccess() {
 		return eSignalActionEnum;
 	}
@@ -991,7 +1118,8 @@
 	}
 	
 	//enum SignalExecutionTypeEnum:
-	//	SEQ='sequential' | NOSEQ='parallel';
+	//	SEQ='sequential' |
+	//	NOSEQ='parallel';
 	public SignalExecutionTypeEnumElements getSignalExecutionTypeEnumAccess() {
 		return eSignalExecutionTypeEnum;
 	}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext
index 5f2d4aa..8434ef6 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext
@@ -26,61 +26,88 @@
 
 SignalPackage:
 	{SignalPackage} 'package' name=QualifiedName
-	('{' (watchers+=SignalWatcher)* '}')?;
+	('{' 
+		(signals+=SignalDefinition)* 
+	'}')?
+;
+
+SignalDefinition:
+	SignalWatcher | SignalScheduler
+;
 
 SignalWatcher:
 	{SignalWatcher}
 	'watcher' name=TRANSLATABLEID
-	'directory' directory=STRING
-	'{'
-	(handlers+=SignalHandler)*
-	'}';
+	definition=WatcherDefinition
+;
 
-SignalHandler:
-	{SignalHandler}
-	'handler' name=TRANSLATABLEID
-	interchanges+=SignalDatainterchange*
+WatcherDefinition: 
+	WatcherWithFileMask | WatcherWithFileName
+;
+
+WatcherWithFileMask: 
+	{WatcherWithFileMask}
+	'filemask' filemask=STRING
 	executiontype=SignalExecutionTypeEnum
-	triggerpolicy=TriggerPolicy;
+	'from' interchangegroup=[data::DataInterchangeGroup]
+	'{'
+		interchange=SignalDatainterchange
+	'}'
+;
 
-TriggerPolicy:
-	TriggerFile | SignalScheduler;
-
-TriggerFile:
-	'forFileMask' filemask=STRING;
+WatcherWithFileName: 
+	{WatcherWithFileName}
+	'filename' filename=STRING
+	executiontype=SignalExecutionTypeEnum
+	'from' interchangegroup=[data::DataInterchangeGroup]
+	'{'
+		interchanges+=SignalDatainterchange*
+	'}'
+;
 
 SignalScheduler:
-	'scheduleFor' scheduler=Scheduler;
+	{SignalScheduler}
+	'scheduler' name=TRANSLATABLEID
+	schedulertype=SchedulerType
+	(executiontype=SignalExecutionTypeEnum)?
+	'from' interchangegroup=[data::DataInterchangeGroup]
+	'{'
+		interchanges+=SignalDatainterchange*
+	'}'
+;
 
-Scheduler:
+SchedulerType: 
 	CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler;
 
 CronScheduler:
 	'cron' expression=STRING;
 
 HourlyScheduler:
-	'hourlyAt' minute=INT;
+	'hourlyat' minute=INT;
 
 DailyScheduler:
-	'dailyAt' hour=INT ':' minute=INT; 
+	'dailyat' hour=INT ':' minute=INT; 
 WeeklyScheduler:
-	'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
+	'weeklyon' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
 
 MonthlyScheduler:
-	'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT;
+	'monthlyon' dayofmonth=INT 'at' hour=INT ':' minute=INT;
 
 SignalDatainterchange:
-	dataAction=SignalActionEnum
-	dataRef=[data::DataInterchange]
-	'fileName' fileName=STRING;
-SignalProcessor:
-	SignalDatainterchange;
+	dataAction=SignalActionEnum 
+	dataRef=[data::DataInterchange] 
+	(baseinterchange?='applyon')?
+;
 
 enum SignalActionEnum:
-	DATAIMPORT='Import' | DATAEXPORT='Export';
+	DATAIMPORT='import' | 
+	DATAEXPORT='export'
+;
 
 enum SignalExecutionTypeEnum:
-	SEQ='sequential' | NOSEQ='parallel';
+	SEQ='sequential' | 
+	NOSEQ='parallel'
+;
 
 enum DayOfWeekEnum:
 	SUNDAY='sunday' |
@@ -89,10 +116,13 @@
 	WEDNESDAY='wednesday' |
 	THURSDAY='thursday' |
 	FRIDAY='friday' |
-	SATURDAY='saturday';
+	SATURDAY='saturday'
+;
 
 TRANSLATABLEID:
-	ID;
+	ID
+;
 
 TRANSLATABLESTRING:
-	STRING;
\ No newline at end of file
+	STRING
+;
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/IOSBPSignalWatcher.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/IOSBPSignalWatcher.java
deleted file mode 100644
index c8a110f..0000000
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/IOSBPSignalWatcher.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-package org.eclipse.osbp.xtext.signal.common;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.WatchEvent;
-
-public interface IOSBPSignalWatcher {
-
-	/**
-     * Process all events for keys queued to the watcher.
-     */
-    public void processEvents();
-    
-    /**
-     * Handling method for the user to extend.
-     * @param ev the {@link WatchEvent}
-     */
-    public void handleEvent(WatchEvent<Path> ev);
-    
-
-    /**
-     * Register the given directory with the WatchService
-     * @param directory
-     * @throws IOException
-     */
-    public void registerPathToWatcher(Path directory) throws IOException;
-    
-    /**
-     * Register the given directory, and all its sub-directories,  with the WatchService.
-     * @param rootpath	{@link Path} the root path.
-     * @throws IOException
-     */
-    public void registerAll(Path rootpath) throws IOException;    
-    
-}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalCommonData.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalCommonData.java
deleted file mode 100644
index 1e34fe5..0000000
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalCommonData.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-package org.eclipse.osbp.xtext.signal.common;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.FutureTask;
-
-import org.eclipse.osbp.preferences.ProductConfiguration;
-import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
-import org.quartz.CronExpression;
-import org.quartz.DateBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class contains all common data to be used either from
- * {@link OSBPSignalWatcher} or {@link OSBPSignalScheduler}.
- */
-public abstract class OSBPSignalCommonData {
-	/** the log */
-	private static Logger log = LoggerFactory.getLogger("signal");
-	/** the list of all tasks, data interchange unit to be executed */
-	private static Map<String, ArrayList<WorkerThreadRunnable>> listOfTasks;
-	/** the list of all watcher configurations */
-	private static HashMap<String, String> watcherconfigurations;
-	/** if the config file is ready to use **/
-	private static HashMap<String, Boolean> configurationsready;
-
-	/**
-	 * Returns the {@link #listOfTasks}.
-	 * 
-	 * @return {@link Map<String, ArrayList<WorkerThreadRunnable>>} the list of
-	 *         all tasks.
-	 */
-	public Map<String, ArrayList<WorkerThreadRunnable>> getListOfTasks() {
-		return listOfTasks;
-	}
-
-	/**
-	 * Initializes the list of tasks.
-	 * 
-	 * @param listOfTasks
-	 *            the list of tasks.
-	 */
-	public void initListOfTasks() {
-		if (listOfTasks == null) {
-			listOfTasks = new HashMap<>();
-		}
-	}
-
-	/**
-	 * Checks if all tasks are done.
-	 * 
-	 * @param tasks
-	 *            list of tasks to be checked
-	 *            {@link ArrayList<FutureTask<WorkerThreadRunnable>>}
-	 * @return true if yes, false if not
-	 */
-	public boolean allTasksDone(ArrayList<FutureTask<WorkerThreadRunnable>> tasks) {
-		for (FutureTask<WorkerThreadRunnable> task : tasks) {
-			if (task != null && !task.isDone()) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Make sure that the given file is deleted.
-	 * 
-	 * @param file
-	 *            the file to be deleted
-	 */
-	public void deleteFile(final Path file) {
-		try {
-			if (Files.deleteIfExists(file)) {
-				if (log.isDebugEnabled()) {
-					log.debug("File: " + file + " successfuly removed.");
-				}
-			} else {
-				if (log.isDebugEnabled()) {
-					log.debug("File: " + file + " doesn't exists and could not be removed.");
-				}
-			}
-		} catch (IOException e) {
-			log.error("File: " + file + " could not be deleted.\n" + e.getMessage());
-		}
-	}
-
-	/**
-	 * Checks if the given file mask is empty. Further validation can be
-	 * implemented here.
-	 * 
-	 * @param filemask
-	 *            the file mask
-	 * @return the file mask value, or null
-	 */
-	public String getFilemaskValue(String filemask) {
-		if (filemask != null && !filemask.isEmpty()) {
-			return filemask;
-		}
-		return null;
-	}
-
-	/**
-	 * Checks if the given cron expression is valid and gives it back
-	 * eventually.
-	 * 
-	 * @param expression
-	 *            the cron expression
-	 * @return a valid cron expression or null
-	 */
-	public String getCronExpressionValue(String expression) {
-		if (expression != null && CronExpression.isValidExpression(expression)) {
-			return expression;
-		}
-		return null;
-	}
-
-	/**
-	 * Checks if the given minutes value is between 0 and 59 and gives the
-	 * appropriate integer value back.
-	 * 
-	 * @param minutes
-	 *            the minutes
-	 * @return a value between 0 and 59, or -1
-	 */
-	public int getMinutesValue(String minutes) {
-		try {
-			int value = Integer.valueOf(minutes);
-			if (value >= 0 && value <= 59) {
-				return value;
-			}
-		} catch (NumberFormatException e) {
-			log.error("getMinutesValue - given minute value [" + minutes + "] is not valid.");
-		}
-		return -1;
-	}
-
-	/**
-	 * Checks if the given hour value is between 0 and 23 and gives the
-	 * appropriate integer value back.
-	 * 
-	 * @param hour
-	 *            the hour
-	 * @return a value between 0 and 23, or -1
-	 */
-	public int getHourValue(String hour) {
-		try {
-			int value = Integer.valueOf(hour);
-			if (value >= 0 && value <= 23) {
-				return value;
-			}
-		} catch (NumberFormatException e) {
-			log.error("getHourValue - given hour value [" + hour + "] is not valid.");
-		}
-		return -1;
-	}
-
-	/**
-	 * Checks if the given day of the week value is valid and give the
-	 * appropriate integer value back. Valid value here are: sunday | monday |
-	 * tuesday | wednesday | thursday | friday | saturday
-	 * 
-	 * @param dayofweek
-	 *            the day of the week
-	 * @return a value between 1 and 7, or -1
-	 */
-	public int getDayOfWeekValue(String dayofweek) {
-		switch (dayofweek.toLowerCase()) {
-		case "sunday":
-			return DateBuilder.SUNDAY;
-		case "monday":
-			return DateBuilder.MONDAY;
-		case "tuesday":
-			return DateBuilder.TUESDAY;
-		case "wednesday":
-			return DateBuilder.WEDNESDAY;
-		case "thursday":
-			return DateBuilder.THURSDAY;
-		case "friday":
-			return DateBuilder.FRIDAY;
-		case "saturday":
-			return DateBuilder.SATURDAY;
-		default:
-			log.error("getDayOfWeekValue - given dayofweek value [" + dayofweek + "] is not valid.");
-			return -1;
-		}
-	}
-
-	/**
-	 * Checks if the given day of the month value is between 1 and 31 and gives
-	 * the appropriate integer value back.
-	 * 
-	 * @param dayofmonth
-	 *            the day of month
-	 * @return a value between 1 and 31, or -1
-	 */
-	public int getDayOfMonthValue(String dayofmonth) {
-		try {
-			int value = Integer.valueOf(dayofmonth);
-			if (value >= 1 && value <= 31) {
-				return value;
-			}
-		} catch (NumberFormatException e) {
-			log.error("getDayofMonthValue - given dayofmonth value [" + dayofmonth + "] is not valid.");
-		}
-		return -1;
-	}
-
-	/**
-	 * Gives the {@link #watcherconfigurations} field back.
-	 * 
-	 * @return {@link HashMap<String, String>} the list of watcher
-	 *         configurations.
-	 */
-	public HashMap<String, String> getWatcherconfigurations() {
-		return watcherconfigurations;
-	}
-
-	/**
-	 * Sets the list {@link #watcherconfigurations} field.
-	 * 
-	 * @param watcherconfigurations
-	 *            the list of watcher configurations.
-	 */
-	public static void initWatcherconfigurations() {
-		if (watcherconfigurations == null) {
-			watcherconfigurations = new HashMap<>();
-		}
-		if (configurationsready == null) {
-			watcherconfigurations = new HashMap<>();
-		}
-	}
-
-	/**
-	 * Add a configuration entry.
-	 * 
-	 * @param key
-	 *            the configuration key
-	 * @param value
-	 *            the value
-	 */
-	public static void addWatcherConfig(String key, String value) {
-		String val = watcherconfigurations.get(key);
-		if (val == null) {
-			watcherconfigurations.put(key, value);
-		}
-	}
-
-	/**
-	 * Returns a value depending on the given key.
-	 * 
-	 * @param key
-	 *            the configuration key
-	 * @return the value or null
-	 */
-	public String getWatcherConfig(String key) {
-		return watcherconfigurations.get(key);
-	}
-
-	/**
-	 * Creates the signal dsl configuration file at the default location, if it
-	 * doesn't exist, and sets its path in the preferences. Updates the
-	 * configuration file to the missing entries with default value coming
-	 * originally from the model.
-	 */
-	public static boolean createOrUpdateConfigurationFile() {
-		String url = ProductConfiguration.getSignalConfiguration();
-		if (url == null || url.isEmpty()) {
-			url = System.getProperty("user.home") + "/.osbee/" + "SignalConfig.xml";
-		}
-		File file = new File(url);
-		if (file.exists()) {
-			try {
-				FileInputStream fileInput = new FileInputStream(file);
-				Properties properties = new Properties();
-				properties.loadFromXML(fileInput);
-				fileInput.close();
-				for (String key : watcherconfigurations.keySet()) {
-					if (!properties.containsKey(key)) {
-						properties.put(key, watcherconfigurations.get(key));
-					}
-				}
-				FileOutputStream fileOutput = new FileOutputStream(file);
-				properties.storeToXML(fileOutput, "Signal DSL Configuration");
-				fileOutput.close();
-				log.info("Signal configuration file " + file + " successfuly updated.");
-				return true;
-			} catch (IOException e) {
-				StringWriter sw = new StringWriter();
-				e.printStackTrace(new PrintWriter(sw));
-				log.error("createOrUpdateConfigurationFile: Error during update of file: " + file + " ... {}",
-						sw.toString());
-			}
-		} else {
-			try {
-				FileOutputStream fileOutput = new FileOutputStream(file);
-				// create a new file and set the preference entry
-				file.createNewFile();
-				Properties properties = new Properties();
-				for (String key : watcherconfigurations.keySet()) {
-					properties.put(key, watcherconfigurations.get(key));
-				}
-				properties.storeToXML(fileOutput, "Signal DSL Configuration");
-				fileOutput.close();
-				if (log.isDebugEnabled()) {
-					log.debug("Signal configuration file " + file + " successfuly created.");
-				}
-				String path = file.getAbsolutePath();
-				ProductConfiguration.setSignalConfiguration(path);
-				log.info("Actual signal configuration file: " + file);
-				return true;
-			} catch (IOException e) {
-				StringWriter sw = new StringWriter();
-				e.printStackTrace(new PrintWriter(sw));
-				log.error("createOrUpdateConfigurationFile: Error during creation of file: [" + file + "] ... {}",
-						sw.toString());
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Gives the property value of the given property name if existing.
-	 * 
-	 * @param propertyname
-	 *            the property name
-	 * @return the property value if existing, or null if not
-	 */
-	public String getHandlerPropertyFromConfigurationFile(String propertyname) {
-		if (propertyname != null) {
-			String url = ProductConfiguration.getSignalConfiguration();
-			if (url == null || url.isEmpty()) {
-				url = System.getProperty("user.home") + "/.osbee/" + "SignalConfig.xml";
-			}
-			File file = new File(url);
-			if (file.exists()) {
-				try {
-					FileInputStream fileInput = new FileInputStream(file);
-					Properties properties = new Properties();
-					properties.loadFromXML(fileInput);
-					fileInput.close();
-					String value = properties.getProperty(propertyname);
-					if (value != null) {
-						if (log.isDebugEnabled()) {
-							log.debug("getHandlerPropertyFromConfigurationFile propertyname[" + propertyname
-									+ "] -> value [" + value + "]");
-						}
-						return value;
-					}
-				} catch (IOException e) {
-					StringWriter sw = new StringWriter();
-					e.printStackTrace(new PrintWriter(sw));
-					log.error("Error during getHandlerPropertyFromConfigurationFile of propertyname: [" + propertyname
-							+ "] ... {}", sw.toString());
-				}
-			}
-		}
-		if (log.isDebugEnabled()) {
-			log.debug("getHandlerPropertyFromConfigurationFile propertyname[" + propertyname + "] -> value [null]");
-		}
-		return null;
-	}
-
-	/**
-	 * Checks if the given path points to an existing directory.
-	 * 
-	 * @param path
-	 *            the path
-	 * @return true if yes, false if not
-	 */
-	public boolean existsDirectory(String path) {
-		try {
-			return Files.isDirectory(Paths.get(path));
-		} catch (Exception e) {
-			log.error("existsDirectory - error ", e);
-		}
-		return false;
-	}
-
-	/**
-	 * Checks if the given string a valid url.
-	 * 
-	 * @param url
-	 * @return true if yes, false if not.
-	 */
-	public URL isDirectoryValidURL(String url) {
-		try {
-			return new URL(url);
-		} catch (MalformedURLException e1) {
-			if (e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol")) {
-				try {
-					return Paths.get(url).toUri().toURL();
-				} catch (MalformedURLException e2) {
-					StringWriter sw = new StringWriter();
-					e2.printStackTrace(new PrintWriter(sw));
-					log.error("{}", sw.toString());
-				}
-			}
-		}
-		return null;
-	}
-
-	public static void setConfigReady(String path, boolean ready) {
-		configurationsready.put(path, ready);
-	}
-
-	public static boolean isConfigReady(String path) {
-		if (configurationsready == null) {
-			configurationsready = new HashMap<>();
-		}
-		if (configurationsready.containsKey(path)) {
-			return configurationsready.get(path).booleanValue();
-		}
-		return false;
-	}
-
-}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalJob.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalJob.java
deleted file mode 100644
index dfa92ad..0000000
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalJob.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-package org.eclipse.osbp.xtext.signal.common;
-
-import java.util.ArrayList;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.FutureTask;
-
-import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class OSBPSignalJob extends OSBPSignalCommonData implements Job {
-	/** the log */
-	private Logger log = LoggerFactory.getLogger("scheduler");
-	/** the executor service for the processing of all job's tasks*/
-	private ExecutorService executorService = Executors.newCachedThreadPool();
-
-	/** Default constructor is needed for quartz.*/
-	public OSBPSignalJob() {}
-	
-	@Override
-	/**
-	 * Triggers the job's logic.
-	 */
-	public void execute(JobExecutionContext context) throws JobExecutionException {
-		log.info("Execution of ["+context.getJobDetail().getKey()+"] ...");
-		if(context.getJobDetail().getJobDataMap().getBoolean(OSBPSignalConstants.SEQUENTIAL)){
-			executeTasksSequentially((String)context.getJobDetail().getJobDataMap().get(OSBPSignalConstants.TASKSLIST));
-		}else{
-			executeTasksParallel((String)context.getJobDetail().getJobDataMap().get(OSBPSignalConstants.TASKSLIST));
-		}
-	}
-	
-	/**
-	 * Executes the list of tasks sequentially.
-	 * @param handlername handler name, having the list of tasks to be executed
-	 * @return true if the execution was successful, false if not
-	 */
-	public void executeTasksSequentially(String handlername) {
-		log.info("Start - Sequential execution of list of tasks from handler ["+handlername+"] ...");
-		
-		for (WorkerThreadRunnable interchange : getListOfTasks().get(handlername)) {
-			try {
-				executorService.submit(interchange).get();
-			} catch (Exception e) {
-				log.error("Execution - " + interchange.getDirection() + " for " + interchange.getName()
-						+ " interupted!\n" + e.getMessage());
-			}
-		}
-		log.info("End - Sequential execution of list of tasks from handler ["+handlername+"] ...");
-	}
-
-	/**
-	 * Executes the list of tasks in parallel fashion.
-	 * @param handlername handler name, having the list of tasks to be executed
-	 */
-	@SuppressWarnings("unchecked")
-	public void executeTasksParallel(String handlername) {
-		log.info("Start - Parallel execution of list of tasks from handler ["+handlername+"] ...");
-		
-		boolean allTasksDone = false;
-		ArrayList<FutureTask<WorkerThreadRunnable>> tasks = new ArrayList<>();
-		for (WorkerThreadRunnable dataint : getListOfTasks().get(handlername)) {
-			tasks.add((FutureTask<WorkerThreadRunnable>) executorService.submit(dataint));
-		}
-		while (!allTasksDone) {
-			allTasksDone = allTasksDone(tasks);
-		}
-		if (allTasksDone) {
-			log.info("All tasks done!");
-		}
-		log.info("End - Parallel execution of list of tasks from handler ["+handlername+"] ...");
-	}
-
-}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalScheduler.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalScheduler.java
deleted file mode 100644
index 8469c2b..0000000
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalScheduler.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-package org.eclipse.osbp.xtext.signal.common;
-
-import static org.quartz.CronScheduleBuilder.cronSchedule;
-import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute;
-import static org.quartz.CronScheduleBuilder.monthlyOnDayAndHourAndMinute;
-import static org.quartz.CronScheduleBuilder.weeklyOnDayAndHourAndMinute;
-import static org.quartz.JobBuilder.newJob;
-import static org.quartz.TriggerBuilder.newTrigger;
-
-import java.util.ArrayList;
-import java.util.Date;
-
-import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
-import org.quartz.CronExpression;
-import org.quartz.CronTrigger;
-import org.quartz.JobDetail;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.SchedulerFactory;
-import org.quartz.Trigger;
-import org.quartz.TriggerKey;
-import org.quartz.impl.StdSchedulerFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class OSBPSignalScheduler extends OSBPSignalCommonData {
-
-	public Logger log = LoggerFactory.getLogger("scheduler");
-	private Scheduler scheduler;
-	
-	/**
-	 * Constructor
-	 * @throws SchedulerException possible thrown exception
-	 */
-	public OSBPSignalScheduler() throws SchedulerException {
-		initScheduler();
-	}
-	
-	/**
-	 * Initializes the {@link #scheduler} field.
-	 * @throws SchedulerException possible thrown exception
-	 */
-	public void initScheduler() throws SchedulerException {
-		log.info("Initializes scheduler ...");
-		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
-		scheduler = schedulerFactory.getScheduler();
-	}
-
-	/**
-	 * Starts the {@link #scheduler}.
-	 * @throws SchedulerException
-	 */
-	public void startScheduler() throws SchedulerException {
-		log.info("Starts scheduler ...");
-		scheduler.start();
-	}
-
-	/**
-	 * Halts the Scheduler's firing of Triggers, and cleans up all resources
-	 * associated with the Scheduler.
-	 * 
-	 * @param waitForJobsToComplete
-	 *            whether or not the scheduler shuts down immediately or wait
-	 *            for jobs to finish.
-	 * @throws SchedulerException
-	 */
-	public void shutdownScheduler(boolean waitForJobsToComplete) throws SchedulerException {
-		log.info("Shutdowns scheduler ...");
-		scheduler.shutdown(waitForJobsToComplete);
-	}
-
-	public void pauseScheduler() throws SchedulerException {
-		log.info("Pauses scheduler ...");
-		scheduler.pauseAll();
-	}
-
-	public void resumeScheduler() throws SchedulerException {
-		log.info("Resumes scheduler ...");
-		scheduler.resumeAll();
-	}
-
-	/**
-	 * Schedules a given job based on a given trigger.
-	 * @param job		the {@link JobDetail} to be scheduled
-	 * @param trigger	the corresponding trigger
-	 * @return
-	 */
-	public Date scheduleJob(JobDetail job, Trigger trigger) {
-		try {
-			return scheduler.scheduleJob(job, trigger);
-		} catch (SchedulerException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	/**
-	 * Unschedules a job.
-	 * @param triggerkey	the trigger key.
-	 */
-	public void unscheduleJob(TriggerKey triggerkey) {
-		try {
-			scheduler.unscheduleJob(triggerkey);
-		} catch (SchedulerException e1) {
-			e1.printStackTrace();
-		}
-	}
-	
-	/**
-	 * Creates a job based on the given list of tasks. 
-	 * @param name			Job name
-	 * @param groupname		Group name
-	 * @param description	Description of the job
-	 * @param issequential	Execution type of the given lsit of tasks
-	 * @param takslist		List of tasks, for now only Datainterchange import/export-Funktionnen.
-	 * @return	{@link JobDetail} the newly created Job.
-	 */
-	public JobDetail createDataTransferJob(String name, String groupname, String description, boolean issequential,
-			ArrayList<WorkerThreadRunnable> takslist) {
-		JobDetail job = newJob(OSBPSignalJob.class).usingJobData(OSBPSignalConstants.SEQUENTIAL, issequential)
-				.withDescription(description).withIdentity(name, groupname).build();
-		job.getJobDataMap().putIfAbsent(OSBPSignalConstants.TASKSLIST, takslist);
-		return job;
-	}
-
-	/**
-	 * Creates an hourly based trigger.
-	 * @param name			Trigger name
-	 * @param groupname		Group name
-	 * @param minute		The exact minute, in which the trigger is hourly fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createHourlyTrigger(String name, String groupname, int minute) {
-		log.debug("Creating createHourlyTrigger [" + name + "] for group [" + groupname
-		+ "] running hourly at [" + minute + "] minutes ...");
-		
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
-		.withSchedule(cronSchedule(String.format("0 %s * * * ?", minute))).build();
-		
-		log.debug("createHourlyTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-	/**
-	 * Creates a daily based trigger.
-	 * @param name			Trigger name
-	 * @param groupname		Group name
-	 * @param hour			The exact hour, in which the trigger is daily fired (0-23).
-	 * @param minute		The exact minute, in which the trigger is hourly in a day fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createDailyTriggerAtHourandMins(String name, String groupname, int hour, int minute) {
-		log.debug("Creating DailyTrigger [" + name + "] for group [" + groupname + "] running at hour[" + hour
-				+ "] and [" + minute + "] minutes ...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
-				.withSchedule(dailyAtHourAndMinute(hour, minute)).build();
-		log.debug("DailyTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-	/**
-	 * Creates a weekly based trigger.
-	 * @param name			Trigger name
-	 * @param groupname		Group name
-	 * @param dayOfWeek		The day of the week on which the trigger has to be fired (0-6 for Sunday-Saturday).
-	 * @param hour			The exact hour, in which the trigger is daily fired (0-23).
-	 * @param minute		The exact minute, in which the trigger is hourly in a day fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createWeeklyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfWeek, int hour, int minute) {
-		log.debug("Creating Trigger [" + name + "] for group [" + groupname + "] ...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(weeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).build();
-		log.debug("Trigger " + trigger + " successfully created.");
-		return trigger;
-	}
-	
-	/**
-	 * Creates a monthly based trigger.
-	 * @param name			Trigger name
-	 * @param groupname		Group name
-	 * @param dayOfMonth	The day of the month on which the trigger has to be fired (1-31).
-	 * @param hour			The exact hour, in which the trigger is daily fired (0-23).
-	 * @param minute		The exact minute, in which the trigger is hourly in a day fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createMonthlyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfMonth, int hour, int minute) {
-		log.debug("Creating MonthlyTrigger["+name+"] for group [" + groupname + "] on Day["+dayOfMonth+"] and Hour["+hour+"] and ["+minute+"]Minute...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(monthlyOnDayAndHourAndMinute(dayOfMonth, hour, minute)).build();
-		log.debug("MonthlyTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-	/**
-	 * Creates a cron based trigger, depending on the given cron-expression. 
-	 * @param name			Trigger name
-	 * @param groupname		Group name
-	 * @param expression	the {@link CronExpression} as string value
-	 * @return {@link CronTrigger} the newly created cron-trigger.
-	 */
-	public CronTrigger createCronTrigger(String name, String groupname, String expression) {
-		log.debug("Creating CronTrigger [" + name + "] for group [" + groupname + "] with CronExpression [" + expression
-				+ "]...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(cronSchedule(expression)).build();
-		log.debug("CronTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalWatcher.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalWatcher.java
deleted file mode 100644
index 2bea986..0000000
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalWatcher.java
+++ /dev/null
@@ -1,717 +0,0 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License 2.0        
- *  which accompanies this distribution, and is available at                  
- *  https://www.eclipse.org/legal/epl-2.0/                                 
- *                                 
- *  SPDX-License-Identifier: EPL-2.0                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-package org.eclipse.osbp.xtext.signal.common;
-
-import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
-import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
-import static java.nio.file.StandardWatchEventKinds.OVERFLOW;
-import static org.quartz.CronScheduleBuilder.cronSchedule;
-import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute;
-import static org.quartz.CronScheduleBuilder.monthlyOnDayAndHourAndMinute;
-import static org.quartz.CronScheduleBuilder.weeklyOnDayAndHourAndMinute;
-import static org.quartz.JobBuilder.newJob;
-import static org.quartz.TriggerBuilder.newTrigger;
-
-import java.io.IOException;
-import java.nio.file.FileSystems;
-import java.nio.file.FileVisitResult;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.SimpleFileVisitor;
-import java.nio.file.StandardWatchEventKinds;
-import java.nio.file.WatchEvent;
-import java.nio.file.WatchEvent.Kind;
-import java.nio.file.WatchKey;
-import java.nio.file.WatchService;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.FutureTask;
-import java.util.regex.PatternSyntaxException;
-
-import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
-import org.quartz.CronExpression;
-import org.quartz.CronTrigger;
-import org.quartz.JobDetail;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.Trigger;
-import org.quartz.TriggerKey;
-import org.quartz.impl.StdSchedulerFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class OSBPSignalWatcher extends OSBPSignalCommonData {
-	/** the log */
-	public Logger log = LoggerFactory.getLogger("watcher");
-	/** the scheduler */
-	private Scheduler scheduler;
-	/** the watcher service */
-	private WatchService watcher;
-	/** list of all created keys and paths */
-	private Map<WatchKey, Path> keys = null;
-	/**
-	 * determines if the all tree of a directory has to be watched for changes
-	 */
-	private boolean recursive = false;
-	/** determine if the path has already been registered or not */
-	private boolean pathregistered = false;
-	/** the list of handler names and their file masks */
-	private static HashMap<String, String> masks = new HashMap<>();
-	/** the executor service for the processing of all tasks */
-	private static ExecutorService executorService = Executors.newCachedThreadPool();
-
-	/**
-	 * Constructor.
-	 * 
-	 * @throws IOException
-	 */
-	public OSBPSignalWatcher() throws Exception {
-		initWatcher();
-	}
-
-	/**
-	 * Initializes the {@link #watcher}.
-	 * 
-	 * @throws IOException
-	 *             possible thrown exception
-	 */
-	public void initWatcher() throws IOException {
-		this.watcher = FileSystems.getDefault().newWatchService();
-		this.keys = new HashMap<>();
-	}
-
-	/**
-	 * Process all events for keys queued to the watcher.
-	 */
-	public void processEvents() {
-		for (;;) {
-			// wait for key to be signaled
-			WatchKey key;
-			try {
-				key = watcher.take();
-			} catch (InterruptedException x) {
-				return;
-			}
-
-			Path dir = keys.get(key);
-			if (dir == null) {
-				log.error("WatchKey not recognized!!");
-				continue;
-			}
-
-			for (WatchEvent<?> event : key.pollEvents()) {
-				Kind<?> kind = event.kind();
-
-				// handle the OVERFLOW event
-				if (kind == OVERFLOW) {
-					continue;
-				}
-
-				if (isHandlingAllowed(kind)) {
-					// Context for directory entry event is the file name of
-					// entry
-					WatchEvent<Path> ev = cast(event);
-					Path child = dir.resolve(ev.context());
-					log.debug(String.format("%s: %s\n", event.kind().name(), child));
-
-					// only allowed event can be handle
-					try {
-						handleEvent(child);
-					} catch (Exception e) {
-						log.error("WatcherService shortly interrupted due to: " + e.toString());
-						log.info("WatcherService resumed.");
-					}
-
-					// if directory is created, and watching recursively, then
-					// register it and its sub-directories
-					if (recursive && (kind == ENTRY_CREATE)) {
-						try {
-							if (Files.isDirectory(child, NOFOLLOW_LINKS)) {
-								registerAll(child);
-							}
-						} catch (IOException x) {
-							// ignore to keep sample readbale
-						}
-					}
-				}
-				// reset key and remove from set if directory no longer
-				// accessible
-				boolean valid = key.reset();
-				if (!valid) {
-					keys.remove(key);
-
-					// all directories are inaccessible
-					if (keys.isEmpty()) {
-						break;
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Checks if an event type has to be handle or not. Only create event are
-	 * allowed for now on.
-	 * 
-	 * @param event
-	 *            {@link WatchEvent<Path>} the event
-	 * @return true if yes, false if not
-	 */
-	public boolean isHandlingAllowed(Kind<?> event) {
-		if (event.name().equals("ENTRY_CREATE")) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * Handling operation to execute after the given file is created in the
-	 * watched directory.
-	 * 
-	 * @param file
-	 *            the newly created file, to react on
-	 */
-	public void handleEvent(Path file) {
-	}
-
-	@SuppressWarnings("unchecked")
-	static <T> WatchEvent<T> cast(WatchEvent<?> event) {
-		return (WatchEvent<T>) event;
-	}
-
-	/**
-	 * Register the given directory, and all its sub-directories, with the
-	 * WatchService.
-	 * 
-	 * @param rootpath
-	 *            {@link Path} the root path.
-	 * @param signals
-	 * @throws IOException
-	 */
-	public void registerAll(Path rootpath) throws IOException {
-		// register directory and sub-directories
-		Files.walkFileTree(rootpath, new SimpleFileVisitor<Path>() {
-			@Override
-			public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
-				registerPathToWatcher(dir);
-				return FileVisitResult.CONTINUE;
-			}
-		});
-	}
-
-	/**
-	 * Register the given directory with the WatchService
-	 * 
-	 * @param directory
-	 * @param combined
-	 *            true to create only one {@link WatchKey} for all event types,
-	 *            false to create separate key for each event type.
-	 * @throws IOException
-	 */
-	public void registerPathToWatcher(Path directory) throws IOException {
-		log.info("Directory of path to watch: [" + directory + "] registered!");
-		getRegisteredKeysAndPaths().put(directory.register(getWatcher(), StandardWatchEventKinds.ENTRY_CREATE),
-				directory);
-	}
-
-	/**
-	 * Checks if the given {@link WatchKey} is valid.
-	 * 
-	 * @return true if yes, false if not
-	 */
-	public boolean isKeyValid(WatchKey key) {
-		return key != null ? key.isValid() : false;
-	}
-
-	/**
-	 * Closes the watcher service
-	 * 
-	 * @return true if yes or non existing, false if not
-	 */
-	public boolean closeWatcher() {
-		try {
-			if (watcher != null) {
-				watcher.close();
-			}
-			return true;
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return false;
-	}
-
-	/**
-	 * Get the list of registered directories.
-	 * 
-	 * @return {@link Collection<Path>} {@link #directories}
-	 */
-	public Collection<Path> getRegisteredDirectories() {
-		return keys.values();
-	}
-
-	/**
-	 * Gets the list of registered keys.
-	 * 
-	 * @return {@link Set<WatchKey>}
-	 */
-	public Set<WatchKey> getRegisteredKeys() {
-		return keys.keySet();
-	}
-
-	/**
-	 * Gets the list of registered keys and their paths.
-	 * 
-	 * @return {@link Map<WatchKey,Path>}
-	 */
-	public Map<WatchKey, Path> getRegisteredKeysAndPaths() {
-		return keys;
-	}
-
-	/**
-	 * Gets the watcher.
-	 * 
-	 * @return {@link WatchService}
-	 */
-	public WatchService getWatcher() {
-		return watcher;
-	}
-
-	/**
-	 * Checks if the given filename corresponds to one of the file masks
-	 * eventually defined in one handler of the watcher
-	 * 
-	 * @param filename
-	 *            the filename to be checked
-	 * @return the corresponding handler name or null
-	 */
-	public String isFileNameValid(String filename) {
-		if (filename != null && !filename.isEmpty() && !masks.isEmpty()) {
-			for (String handlername : masks.keySet()) {
-				String filemask = masks.get(handlername);
-				try {
-					if (filename.toLowerCase().equals(filemask.toLowerCase()) || filename.matches(filemask)) {
-						return handlername;
-					}
-				} catch (PatternSyntaxException e) {
-					log.error("The defined pattern [" + filemask + "] is invalid.");
-				}
-			}
-		}
-		return null; // in the case of no filename matches
-	}
-
-	/**
-	 * Checks if the given directory ends with / or \, whatever is correct.
-	 * 
-	 * @param dirPath
-	 *            the path
-	 * @return true if yes, false if not
-	 */
-	public String checkPath(final String dirPath) {
-		
-		String cs = FileSystems.getDefault().getSeparator();
-		if (!dirPath.contains( cs )) {
-			cs = "/";
-			if (!dirPath.contains( cs )) {
-				return dirPath;
-			}
-		}
-		
-		if (!dirPath.endsWith(cs)) {
-			return dirPath.concat(cs);
-		}
- 
-		return dirPath;
-	}
-
-	/**
-	 * Gives the value of {@link #pathregistered}
-	 * 
-	 * @return true or false
-	 */
-	public boolean isPathregistered() {
-		return pathregistered;
-	}
-
-	/**
-	 * Set the value of {@link #pathregistered}
-	 * 
-	 * @param pathregistered
-	 *            value of {@link #pathregistered}
-	 */
-	public void setPathregistered(boolean pathregistered) {
-		this.pathregistered = pathregistered;
-	}
-
-	/**
-	 * Executes the given list of tasks sequentially.
-	 * 
-	 * @param handlername
-	 *            handler name, having the list of tasks to be executed
-	 * @param triggerfile
-	 *            the trigger file that has to be deleted at the end
-	 */
-	public void executeTasksSequentially(String handlername, final Path triggerfile) {
-		log.info("Start - Sequential execution of list of tasks from handler [" + handlername + "] ...");
-		for (WorkerThreadRunnable interchange : getListOfTasks().get(handlername)) {
-			// Making sure that the current task is done before continuing
-			try {
-				executorService.submit(interchange).get();
-			} catch (Exception e) {
-				log.error("Execution - " + interchange.getDirection() + " for " + interchange.getName()
-						+ " interupted!\n" + e.getMessage());
-			}
-		}
-		deleteFile(triggerfile); // always delete the triggerfile
-		log.info("End - Sequential execution of list of tasks from handler [" + handlername + "] ...");
-	}
-
-	/**
-	 * Executes the given list of tasks parallel.
-	 * 
-	 * @param handlername
-	 *            handler name, having the list of tasks to be executed
-	 * @param triggerfile
-	 *            the trigger file that has to be deleted at the end
-	 */
-	@SuppressWarnings("unchecked")
-	public void executeTasksParallel(String handlername, final Path triggerfile) {
-		log.info("Start - Parallel execution of list of tasks from handler [" + handlername + "] ...");
-		boolean allTasksDone = false;
-		ArrayList<FutureTask<WorkerThreadRunnable>> tasks = new ArrayList<>();
-		for (WorkerThreadRunnable dataint : getListOfTasks().get(handlername)) {
-			tasks.add((FutureTask<WorkerThreadRunnable>) executorService.submit(dataint));
-		}
-		while (!allTasksDone) {
-			allTasksDone = allTasksDone(tasks);
-		}
-		if (allTasksDone) {
-			log.info("All tasks done!");
-			deleteFile(triggerfile);
-		}
-		log.info("End - Parallel execution of list of tasks from handler [" + handlername + "] ...");
-	}
-
-	/**
-	 * Checks, if the given list of tasks has been fully processed.
-	 * 
-	 * @param tasks
-	 *            the list of tasks
-	 *            {@link ArrayList<FutureTask<WorkerThreadRunnable>>}
-	 * @return true if yes, false if not
-	 */
-	@Override
-	public boolean allTasksDone(ArrayList<FutureTask<WorkerThreadRunnable>> tasks) {
-		for (FutureTask<WorkerThreadRunnable> task : tasks) {
-			if (task != null && !task.isDone()) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Gives the list of file back.
-	 * 
-	 * @return {@link HashMap<String, String>} the list of file masks
-	 */
-	public HashMap<String, String> getMasks() {
-		return masks;
-	}
-
-	/**
-	 * Adds a new <handler name - file mask> pair to the {@link #masks}.
-	 * 
-	 * @param handlername
-	 *            the handler name
-	 * @param filemask
-	 *            the file mask
-	 */
-	public void addFileMasks(String handlername, String filemask) {
-		masks.put(handlername, filemask);
-	}
-
-	//////////// SCHEDULER FUNCTIONALITIES //////////
-
-	/**
-	 * Initializes the {@link #scheduler} field.
-	 * 
-	 * @param schedname
-	 * @param threadcount
-	 *            the maximum number of job that can be run simultaneously
-	 * @throws SchedulerException
-	 *             possible thrown exception
-	 */
-	public void initScheduler(String schedname, String threadcount) throws SchedulerException {
-		log.info("Initializes " + schedname + " ...");
-		Properties properties = new Properties();
-		properties.put("version", "2.2.1");
-		properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "AUTO");
-		properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, schedname);
-		properties.put(StdSchedulerFactory.PROP_SCHED_NAME, schedname);
-		properties.put(StdSchedulerFactory.PROP_THREAD_POOL_PREFIX + ".threadCount", threadcount);
-		properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, "org.quartz.simpl.SimpleThreadPool");
-		scheduler = new StdSchedulerFactory(properties).getScheduler();
-		log.info(schedname + " successfully initialized!");
-	}
-
-	/**
-	 * Starts the {@link #scheduler}.
-	 * 
-	 * @throws SchedulerException
-	 */
-	public void startScheduler() throws SchedulerException {
-		scheduler.start();
-		log.info(scheduler.getSchedulerName() + " Service started!");
-	}
-
-	/**
-	 * Halts the Scheduler's firing of Triggers, and cleans up all resources
-	 * associated with the Scheduler.
-	 * 
-	 * @param waitForJobsToComplete
-	 *            whether or not the scheduler shuts down immediately or wait
-	 *            for jobs to finish.
-	 * @throws SchedulerException
-	 */
-	public void shutdownScheduler(boolean waitForJobsToComplete) throws SchedulerException {
-		log.info("Shutdowns scheduler ...");
-		scheduler.shutdown(waitForJobsToComplete);
-	}
-
-	/**
-	 * Halts the Scheduler's firing of Triggers, and cleans up all resources
-	 * associated with the Scheduler.
-	 * 
-	 * @throws SchedulerException
-	 */
-	public void shutdownScheduler() throws SchedulerException {
-		log.info("Shutdowns scheduler ...");
-		scheduler.shutdown();
-	}
-
-	/**
-	 * Pauses the {@link #scheduler}.
-	 * 
-	 * @throws SchedulerException
-	 *             possible thrown exception
-	 */
-	public void pauseScheduler() throws SchedulerException {
-		log.info("Pauses scheduler ...");
-		scheduler.pauseAll();
-	}
-
-	/**
-	 * Resumes the {@link #scheduler}.
-	 * 
-	 * @throws SchedulerException
-	 *             possible thrown exception
-	 */
-	public void resumeScheduler() throws SchedulerException {
-		log.info("Resumes scheduler ...");
-		scheduler.resumeAll();
-	}
-
-	/**
-	 * Gives the {@link #scheduler} back.
-	 * 
-	 * @return the {@link OSBPSignalScheduler}
-	 */
-	public Scheduler getScheduler() {
-		return scheduler;
-	}
-
-	/**
-	 * Schedules a given job based on a given trigger.
-	 * 
-	 * @param job
-	 *            the {@link JobDetail} to be scheduled
-	 * @param trigger
-	 *            the corresponding trigger
-	 * @return
-	 */
-	public Date scheduleJob(JobDetail job, Trigger trigger) {
-		try {
-			return scheduler.scheduleJob(job, trigger);
-		} catch (SchedulerException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	/**
-	 * Unschedules a job.
-	 * 
-	 * @param triggerkey
-	 *            the trigger key.
-	 */
-	public void unscheduleJob(TriggerKey triggerkey) {
-		try {
-			scheduler.unscheduleJob(triggerkey);
-		} catch (SchedulerException e1) {
-			e1.printStackTrace();
-		}
-	}
-
-	/**
-	 * Creates a job based on the given watcher - handler name.
-	 * 
-	 * @param name
-	 *            Job name
-	 * @param groupname
-	 *            Group name
-	 * @param description
-	 *            Description of the job
-	 * @param issequential
-	 *            Execution type of the given lsit of tasks
-	 * @param handlername
-	 *            name of watcher - handler for this specific job.
-	 * @return {@link JobDetail} the newly created Job.
-	 */
-	public JobDetail createDataTransferJob(String name, String groupname, String description, boolean issequential,
-			String handlername) {
-		JobDetail job = newJob(OSBPSignalJob.class).usingJobData(OSBPSignalConstants.SEQUENTIAL, issequential)
-				.withDescription(description).withIdentity(name, groupname).build();
-		job.getJobDataMap().putIfAbsent(OSBPSignalConstants.TASKSLIST, handlername);
-		return job;
-	}
-
-	/**
-	 * Creates an hourly based trigger.
-	 * 
-	 * @param name
-	 *            Trigger name
-	 * @param groupname
-	 *            Group name
-	 * @param minute
-	 *            The exact minute, in which the trigger is hourly fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createHourlyTrigger(String name, String groupname, int minute) {
-		log.debug("Creating createHourlyTrigger [" + name + "] for group [" + groupname + "] running hourly at ["
-				+ minute + "] minutes ...");
-
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
-				.withSchedule(cronSchedule(String.format("0 %s * * * ?", minute))).build();
-
-		log.debug("createHourlyTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-	/**
-	 * Creates a daily based trigger.
-	 * 
-	 * @param name
-	 *            Trigger name
-	 * @param groupname
-	 *            Group name
-	 * @param hour
-	 *            The exact hour, in which the trigger is daily fired (0-23).
-	 * @param minute
-	 *            The exact minute, in which the trigger is hourly in a day
-	 *            fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createDailyTriggerAtHourandMins(String name, String groupname, int hour, int minute) {
-		log.debug("Creating DailyTrigger [" + name + "] for group [" + groupname + "] running at hour[" + hour
-				+ "] and [" + minute + "] minutes ...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
-				.withSchedule(dailyAtHourAndMinute(hour, minute)).build();
-		log.debug("DailyTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-	/**
-	 * Creates a weekly based trigger.
-	 * 
-	 * @param name
-	 *            Trigger name
-	 * @param groupname
-	 *            Group name
-	 * @param dayOfWeek
-	 *            The day of the week on which the trigger has to be fired (0-6
-	 *            for Sunday-Saturday).
-	 * @param hour
-	 *            The exact hour, in which the trigger is daily fired (0-23).
-	 * @param minute
-	 *            The exact minute, in which the trigger is hourly in a day
-	 *            fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createWeeklyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfWeek, int hour,
-			int minute) {
-		log.debug("Creating Trigger [" + name + "] for group [" + groupname + "] ...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
-				.withSchedule(weeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).build();
-		log.debug("Trigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-	/**
-	 * Creates a monthly based trigger.
-	 * 
-	 * @param name
-	 *            Trigger name
-	 * @param groupname
-	 *            Group name
-	 * @param dayOfMonth
-	 *            The day of the month on which the trigger has to be fired
-	 *            (1-31).
-	 * @param hour
-	 *            The exact hour, in which the trigger is daily fired (0-23).
-	 * @param minute
-	 *            The exact minute, in which the trigger is hourly in a day
-	 *            fired (0-59).
-	 * @return {@link CronTrigger} the newly created trigger.
-	 */
-	public CronTrigger createMonthlyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfMonth,
-			int hour, int minute) {
-		log.debug("Creating MonthlyTrigger[" + name + "] for group [" + groupname + "] on Day[" + dayOfMonth
-				+ "] and Hour[" + hour + "] and [" + minute + "]Minute...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
-				.withSchedule(monthlyOnDayAndHourAndMinute(dayOfMonth, hour, minute)).build();
-		log.debug("MonthlyTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-
-	/**
-	 * Creates a cron based trigger, depending on the given cron-expression.
-	 * 
-	 * @param name
-	 *            Trigger name
-	 * @param groupname
-	 *            Group name
-	 * @param expression
-	 *            the {@link CronExpression} as string value
-	 * @return {@link CronTrigger} the newly created cron-trigger.
-	 */
-	public CronTrigger createCronTrigger(String name, String groupname, String expression) {
-		log.debug("Creating CronTrigger [" + name + "] for group [" + groupname + "] with CronExpression [" + expression
-				+ "]...");
-		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(cronSchedule(expression)).build();
-		log.debug("CronTrigger " + trigger + " successfully created.");
-		return trigger;
-	}
-}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SchedulerImpl.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SchedulerImpl.java
new file mode 100644
index 0000000..c4eee02
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SchedulerImpl.java
@@ -0,0 +1,348 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.signal.common;
+
+import static org.quartz.CronScheduleBuilder.cronSchedule;
+import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute;
+import static org.quartz.CronScheduleBuilder.monthlyOnDayAndHourAndMinute;
+import static org.quartz.CronScheduleBuilder.weeklyOnDayAndHourAndMinute;
+import static org.quartz.JobBuilder.newJob;
+import static org.quartz.TriggerBuilder.newTrigger;
+
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+
+import org.quartz.CronExpression;
+import org.quartz.CronTrigger;
+import org.quartz.DateBuilder;
+import org.quartz.Job;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.impl.StdSchedulerFactory;
+
+public class SchedulerImpl extends SignalCommonData {
+	
+	/** the executor services for the processing of all tasks */
+	private static ExecutorService executorService;
+	
+	public SchedulerImpl(){
+		signalcount++;
+	}
+	
+	/**
+	 * Initializes the {@link #scheduler} field.
+	 * 
+	 * @param schedname
+	 *            the scheduler name
+	 * @throws SchedulerException
+	 *             possible thrown exception
+	 */
+	public Scheduler createScheduler(String schedname) throws SchedulerException {
+		log.info("createScheduler " + schedname + " ...");
+		Scheduler scheduler = null;
+		try {
+			Properties properties = new Properties();
+			properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "AUTO");
+			properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, schedname);
+			properties.put(StdSchedulerFactory.PROP_SCHED_NAME, schedname);
+			properties.put(StdSchedulerFactory.PROP_THREAD_POOL_PREFIX + ".threadCount", "1");
+			properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, "org.quartz.simpl.SimpleThreadPool");
+			StdSchedulerFactory factory = new StdSchedulerFactory(properties);
+			scheduler = factory.getScheduler();
+		} catch (ArrayIndexOutOfBoundsException e) {
+			log.debug(e.getMessage());
+		}
+		log.info(schedname + " successfully created and initialized!");
+		return scheduler;
+	}
+
+	
+	/**
+	 * *Creates a job based on the given watcher - handler name.
+	 * 
+	 * @param name
+	 *            Job name
+	 * @param groupname
+	 *            Group name
+	 * @param description
+	 *            Description of the job
+	 * @param issequential
+	 *            Execution type of the given lsit of tasks
+	 * @param handlername
+	 *            name of watcher - handler for this specific job.
+	 * @return {@link JobDetail} the newly created Job.
+	 */
+	public JobDetail createDataTransferJob(String name, String groupname, String description, boolean issequential,
+			String handlername, Class<? extends Job> jobClass) {
+		JobDetail job = newJob(jobClass).usingJobData(SignalConstants.SEQUENTIAL, issequential)
+				.withDescription(description).withIdentity(name, groupname).build();
+		job.getJobDataMap().putIfAbsent(SignalConstants.TASKSLIST, handlername);
+		return job;
+	}
+
+	/**
+	 * Creates an hourly based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createHourlyTrigger(String name, String groupname, int minute) {
+		log.debug("Creating createHourlyTrigger [" + name + "] for group [" + groupname + "] running hourly at ["
+				+ minute + "] minutes ...");
+
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(cronSchedule(String.format("0 %s * * * ?", minute))).build();
+
+		log.debug("createHourlyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a daily based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param hour
+	 *            The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly in a day
+	 *            fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createDailyTriggerAtHourandMins(String name, String groupname, int hour, int minute) {
+		log.debug("Creating DailyTrigger [" + name + "] for group [" + groupname + "] running at hour[" + hour
+				+ "] and [" + minute + "] minutes ...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(dailyAtHourAndMinute(hour, minute)).build();
+		log.debug("DailyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a weekly based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param dayOfWeek
+	 *            The day of the week on which the trigger has to be fired (0-6
+	 *            for Sunday-Saturday).
+	 * @param hour
+	 *            The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly in a day
+	 *            fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createWeeklyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfWeek, int hour,
+			int minute) {
+		log.debug("Creating Trigger [" + name + "] for group [" + groupname + "] ...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(weeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).build();
+		log.debug("Trigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a monthly based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param dayOfMonth
+	 *            The day of the month on which the trigger has to be fired
+	 *            (1-31).
+	 * @param hour
+	 *            The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly in a day
+	 *            fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createMonthlyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfMonth,
+			int hour, int minute) {
+		log.debug("Creating MonthlyTrigger[" + name + "] for group [" + groupname + "] on Day[" + dayOfMonth
+				+ "] and Hour[" + hour + "] and [" + minute + "]Minute...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(monthlyOnDayAndHourAndMinute(dayOfMonth, hour, minute)).build();
+		log.debug("MonthlyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a cron based trigger, depending on the given cron-expression.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param expression
+	 *            the {@link CronExpression} as string value
+	 * @return {@link CronTrigger} the newly created cron-trigger.
+	 */
+	public CronTrigger createCronTrigger(String name, String groupname, String expression) {
+		log.debug("Creating CronTrigger [" + name + "] for group [" + groupname + "] with CronExpression [" + expression
+				+ "]...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(cronSchedule(expression)).build();
+		log.debug("CronTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Checks if the given cron expression is valid and gives it back
+	 * eventually.
+	 * 
+	 * @param expression
+	 *            the cron expression
+	 * @return a valid cron expression or null
+	 */
+	public String getCronExpressionValue(String expression) {
+		if (expression != null && CronExpression.isValidExpression(expression)) {
+			return expression;
+		}
+		return null;
+	}
+
+	/**
+	 * Checks if the given minutes value is between 0 and 59 and gives the
+	 * appropriate integer value back.
+	 * 
+	 * @param minutes
+	 *            the minutes
+	 * @return a value between 0 and 59, or -1
+	 */
+	public int getMinutesValue(String minutes) {
+		try {
+			int value = Integer.valueOf(minutes);
+			if (value >= 0 && value <= 59) {
+				return value;
+			}
+		} catch (NumberFormatException e) {
+			log.error("getMinutesValue - given minute value [" + minutes + "] is not valid.");
+		}
+		return -1;
+	}
+
+	/**
+	 * Checks if the given hour value is between 0 and 23 and gives the
+	 * appropriate integer value back.
+	 * 
+	 * @param hour
+	 *            the hour
+	 * @return a value between 0 and 23, or -1
+	 */
+	public int getHourValue(String hour) {
+		try {
+			int value = Integer.valueOf(hour);
+			if (value >= 0 && value <= 23) {
+				return value;
+			}
+		} catch (NumberFormatException e) {
+			log.error("getHourValue - given hour value [" + hour + "] is not valid.");
+		}
+		return -1;
+	}
+
+	/**
+	 * Checks if the given day of the week value is valid and give the
+	 * appropriate integer value back. Valid value here are: sunday | monday |
+	 * tuesday | wednesday | thursday | friday | saturday
+	 * 
+	 * @param dayofweek
+	 *            the day of the week
+	 * @return a value between 1 and 7, or -1
+	 */
+	public int getDayOfWeekValue(String dayofweek) {
+		switch (dayofweek.toLowerCase()) {
+		case "sunday":
+			return DateBuilder.SUNDAY;
+		case "monday":
+			return DateBuilder.MONDAY;
+		case "tuesday":
+			return DateBuilder.TUESDAY;
+		case "wednesday":
+			return DateBuilder.WEDNESDAY;
+		case "thursday":
+			return DateBuilder.THURSDAY;
+		case "friday":
+			return DateBuilder.FRIDAY;
+		case "saturday":
+			return DateBuilder.SATURDAY;
+		default:
+			log.error("getDayOfWeekValue - given dayofweek value [" + dayofweek + "] is not valid.");
+			return -1;
+		}
+	}
+
+	/**
+	 * Checks if the given day of the month value is between 1 and 31 and gives
+	 * the appropriate integer value back.
+	 * 
+	 * @param dayofmonth
+	 *            the day of month
+	 * @return a value between 1 and 31, or -1
+	 */
+	public int getDayOfMonthValue(String dayofmonth) {
+		try {
+			int value = Integer.valueOf(dayofmonth);
+			if (value >= 1 && value <= 31) {
+				return value;
+			}
+		} catch (NumberFormatException e) {
+			log.error("getDayofMonthValue - given dayofmonth value [" + dayofmonth + "] is not valid.");
+		}
+		return -1;
+	}
+
+	/**
+	 * Returns the {@link #executorService}.
+	 * @return {@link ExecutorService} the executor service.
+	 */
+	public static ExecutorService getExecutorService() {
+		return executorService;
+	}
+
+	/**
+	 * Initialise the {@link #executorService}.
+	 * @param executorname the name of the service
+	 */
+	public void setExecutorService(String executorname) {
+		while(true){
+			if(getMaxParallelThreadsCount() == -1){
+				try {
+					Thread.sleep(2000);
+				} catch (InterruptedException e) {
+					// NOSONAR
+				}				
+			}
+			else{
+				executorService = createCustomExecutorService(executorname, getMaxParallelThreadsCount(), 0L);
+				break;
+			}
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SchedulerJobImpl.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SchedulerJobImpl.java
new file mode 100644
index 0000000..fe92178
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SchedulerJobImpl.java
@@ -0,0 +1,113 @@
+package org.eclipse.osbp.xtext.signal.common;
+
+import java.util.HashSet;
+
+import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
+
+public class SchedulerJobImpl extends SignalCommonData {
+	/** the full scheduler qualified name */
+	private String schedulerid;
+	/** the task status*/
+	private boolean done;
+	/** holds the completion status of each task in the parallel case*/
+	private HashSet<WorkerThreadRunnable> completionstatus;
+	
+	/**
+	 * Default constructor
+	 */
+	public SchedulerJobImpl(){
+		completionstatus = new HashSet<>();
+	}
+	
+	/**
+	 * Triggers the execution of the list of task.
+	 * This operation has to be overridden by subclasses.
+	 */
+	public void executeListOfTasks(){}
+
+	/**
+	 * Returns the scheduler full qualifier id.
+	 * @return {@link String} the value of {@link #schedulerid}
+	 */
+	public String getSchedulerId() {
+		return schedulerid;
+	}
+
+	/**
+	 * Sets the scheduler id value {@link #schedulerid}.
+	 * @param schedulerid the new value
+	 */
+	public void setSchedulerId(String schedulerid) {
+		this.schedulerid = schedulerid;
+	}
+
+	/**
+	 * Indicates if the execution of the list of tasks is done or not.
+	 * @return true if yes, false if not.
+	 */
+	public boolean isDone() {
+		return done;
+	}
+
+	/**
+	 * Sets the state of scheduler task: done or not.
+	 * @param done the state value
+	 */
+	public void setDone(boolean done) {
+		this.done = done;
+	}
+
+	/**
+	 * Adds an (interchange) task to the list of all tasks,
+	 * in order to monitor when it's done.
+	 * @param task the {@link WorkerThreadRunnable} task
+	 */
+	public void checkForCompletion(WorkerThreadRunnable task) {
+		completionstatus.add(task);
+	}
+	
+	/**
+	 * Updates the state of this scheduler task.
+	 */
+	public void updateTaskCompletionState(){
+		boolean result = true;
+		for(WorkerThreadRunnable task : completionstatus){
+			if(!task.isExecutionDone()){
+				result = false;
+				break;
+			}
+		}
+		setDone(result);
+	}
+	
+	/**
+	 * Responsible to execute additional tasks as soon as the execution of the list 
+	 * of tasks in {@link #executeListOfTasks()} is effectively done. 
+	 * Currently it makes sure in the parallel case. 
+	 * @param callerid the id of the caller for log purposes.
+	 */
+	public void finalizeTaskExecution(String callerid){
+		Thread completionTask = new Thread("CompletionThreadFOR"+callerid){
+			public void run() {
+				while(true){
+					// Check the task state each 2 seconds
+					try {
+						Thread.sleep(2000);
+					} catch (InterruptedException e) {
+						log.error("finalizeTaskExecution from ["+ schedulerid + "] ", e);
+					}
+					if(isDone()){
+						// logic to be added here for additional tasks 
+						// to be executed at the end of all tasks
+						break;
+					}else{
+						updateTaskCompletionState();
+					}
+				}
+				log.info("END - Parallel execution of "+callerid);
+			}
+		};
+		completionTask.setDaemon(true);
+		completionTask.start();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SignalCommonData.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SignalCommonData.java
new file mode 100644
index 0000000..177acb9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SignalCommonData.java
@@ -0,0 +1,202 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.signal.common;
+
+import java.io.IOException;
+import java.nio.file.FileAlreadyExistsException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.sql.Date;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+
+/**
+ * This class contains all common data to be used either from
+ * {@link WatcherWithFileMask} or {@link WatcherWithFileName} or
+ * {@link SignalScheduler}.
+ */
+public abstract class SignalCommonData {
+	/** the log */
+	public static Logger log = LoggerFactory.getLogger("signal");
+	/** the number of maximum task to be run simultaneously */
+	private static ArrayList<Integer> maxthreadcountinputs = new ArrayList<>();
+	/** the maximum thread count for parallel task execution */
+	private static int maxthreadcount = -1;
+	/** the number of thread count for parallel task execution */
+	public static int signalcount = 0;
+	/** needed for proper synchronization */
+	private static AtomicBoolean threadCountReady = new AtomicBoolean(false);
+	/** date formatter for renaming files */
+	private SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddhhmmssa", Locale.US);
+
+	/**
+	 * Returns the {@link #maxthreadcount} value.
+	 * @return {@link Integer} the maximum parallel thread count
+	 */
+	public int getMaxParallelThreadsCount() {
+		return maxthreadcount;
+	}
+
+	/**
+	 * Reads and initializes the highest number of parallel thread processing
+	 * allowed during the execution of watcher or a scheduler task.
+	 */
+	public void initMaxThreadCount() {
+		synchronized (threadCountReady) {
+			if(!threadCountReady.get()){
+				while (true) {
+					if (maxthreadcountinputs.size() == signalcount) {
+						Collections.sort(maxthreadcountinputs);
+						maxthreadcount = maxthreadcountinputs.get(maxthreadcountinputs.size() - 1);
+						threadCountReady.set(true);
+						break;
+					}
+					try {
+						Thread.sleep(SignalConstants.WAITINGTIME_FOR_WATCHER_INIT);
+					} catch (InterruptedException e) {
+						// NOSONAR
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Sets a maximum value for the count of parallel threads to be executed.
+	 * 
+	 * @param maxthrcount
+	 *            the max count
+	 */
+	public synchronized void setMaxParallelThreadsCount(String maxthrcount) {
+		try {
+			int value = Integer.valueOf(maxthrcount);
+			if (value >= 0 && value <= SignalConstants.MAXPARALLELTHREADCOUNT) {
+				maxthreadcountinputs.add(value);
+			} else if (value > SignalConstants.MAXPARALLELTHREADCOUNT) {
+				maxthreadcountinputs.add(SignalConstants.MAXPARALLELTHREADCOUNT);
+			} else {
+				maxthreadcountinputs.add(SignalConstants.DEFAULT_PARALLEL_THREADCOUNT);
+			}
+		} catch (NumberFormatException e) {
+			// log.error(String.format("getMaxParallelThreadsCount - the given
+			// maximum parallel threads count value [%s] is not valid.", maxthrcount));
+			maxthreadcountinputs.add(SignalConstants.DEFAULT_PARALLEL_THREADCOUNT);
+		}
+	}
+
+	/**
+	 * Make sure that the given file is deleted.
+	 * 
+	 * @param file
+	 *            the file to be deleted
+	 * @param logidinfo
+	 *            log information from the caller
+	 */
+	public void deleteFile(final Path file, String logidinfo) {
+		try {
+			if (Files.deleteIfExists(file)) {
+				if (log.isDebugEnabled()) {
+					log.info(logidinfo + " [" + file + "] successfuly removed.");
+				}
+			} else {
+				if (log.isDebugEnabled()) {
+					log.info(logidinfo + " [" + file + "] doesn't exist and could not be removed.");
+				}
+			}
+		} catch (IOException e) {
+			log.error(logidinfo + " [" + file + "] could not be deleted.\n" + e.getMessage());
+		}
+	}
+
+	/**
+	 * Renames the given file with the given new name. If a file with the given 
+	 * new name already exists then a number offset will be added to it.
+	 * @param file the file to rename
+	 * @param logidinfo information on the caller of this function
+	 */
+	public void renameFile(final Path file, String logidinfo) {
+		try {
+			if(Files.exists(file)){
+				String filename = file.getFileName().toString();
+				String newname = ("FAILEDIMPORT"+ formatter.format(new Date(System.currentTimeMillis())) + filename + ".LOCKED");
+				int renameTry = 0;
+				boolean done = false;
+				String tempname = newname;
+				String extension = newname.substring(newname.length()-4);
+				do{
+					try{						
+						Files.move(file, file.resolveSibling(tempname));
+						done =  true;
+					}catch (FileAlreadyExistsException ae) {
+						renameTry ++;
+						tempname = newname.replace(extension, renameTry+extension);
+					}						
+				}while(!done);
+				log.info(String.format("%s file [%s] renamed to %s.", logidinfo, filename, tempname));			 	
+			
+			}
+			else{
+				log.info(String.format("%s file [%s] doesn't exist and could not be renamed.", logidinfo, file));								
+			}
+		} catch (IOException e) {
+			log.error(String.format("%s file [%s] could not be renamed.\n%s", logidinfo, file, e.getMessage()));
+		}
+	}
+
+	/**
+	 * Creates an executor service with the given maximum amount of thread that
+	 * can run in parallel, with no idle thread allowed.
+	 * 
+	 * @param poolname
+	 *            - the name of the thread pool
+	 * @param maxparallelthreadcount
+	 *            - the maximum number of threads to allow in thepool
+	 * @param keepAliveTime
+	 *            - when the number of threads is greater thanthe core, this is
+	 *            the maximum time that excess idle threadswill wait for new
+	 *            tasks before terminating
+	 * @return {@link ExecutorService} the executor service
+	 */
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	public ExecutorService createCustomExecutorService(String poolname, int maxparallelthreadcount, long keepAliveTime) {
+		ThreadPoolExecutor pool = new ThreadPoolExecutor(maxparallelthreadcount, maxparallelthreadcount, keepAliveTime,
+		TimeUnit.MILLISECONDS, new LinkedBlockingQueue(),new ThreadFactoryBuilder().setNameFormat(poolname + "Pool-Thread-%d").build());
+		return pool;
+	}
+
+	/**
+	 * Gives the {@link #formatter}.
+	 * @return {@link SimpleDateFormat}
+	 */
+	public SimpleDateFormat getFormatter(){
+		return formatter;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalConstants.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SignalConstants.java
similarity index 80%
rename from org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalConstants.java
rename to org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SignalConstants.java
index 176744b..c9dce91 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalConstants.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/SignalConstants.java
@@ -15,23 +15,13 @@
  */
 package org.eclipse.osbp.xtext.signal.common;
 
-public abstract class OSBPSignalConstants {
+public abstract class SignalConstants {
 
-	public static final boolean SIGNAL_DELETE_TRIGGER_FILES_AFTERIMPORT = false;
-	public static final boolean SIGNAL_DELETE_INPUT_FILES_AFTERIMPORT = false;
-
-	/* The actual minimum size */
-	public static final int FILE_EXTENSION_MIN_SIZE = 4;
-
-	/* CSV file extension */
-	public static final String CSV_EXTENSION = ".csv";
-	public static final String XML_EXTENSION = ".xml";
-	public static final String EDI_EXTENSION = ".edi";
-
-	/* Scheduler and jobs */
+	/** Task execution types */
 	public static final String SEQUENTIAL = "sequential";
 	public static final String TASKSLIST = "taskslist";
 
+	/** Information notice on cron expression usage. */
 	public static final String CRONEXP_NOTICE = "\n\nFurther information about how to properly build the cron-expression can be found here: "
 	+ "\nhttp://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/tutorial-lesson-06.html"
 	+ "\n\nHere are some full examples: "
@@ -62,7 +52,8 @@
 	
 	/* Scheduler/Trigger constants for configuration file */
 	public static final String DIRECTORY = ".directory";
-	public static final String FILE_TRIGGER = ".forfilemask";
+	public static final String FILEMASK = ".filemask";
+	public static final String FILENAME = ".filename";
 	public static final String CRON_SCHEDULER = ".cronscheduler";
 	public static final String HOURLY_SCHEDULER = ".hourlyscheduler.minute";
 	public static final String DAILY_SCHEDULER_MIN = ".dailyscheduler.minute";
@@ -73,5 +64,22 @@
 	public static final String MONTHLY_SCHEDULER_HOUR = ".monthlyscheduler.hour";
 	public static final String MONTHLY_SCHEDULER_MIN = ".monthlyscheduler.minute";
 	public static final String MONTHLY_SCHEDULER_DAYOFMONTH = ".monthlyscheduler.dayofmonth";
+	/** maximum thread count property name for configuration files*/
+	public static final String MAXPARALLELTHREADCOUNT_NAME = "Max-Parallel-Threads-Count";
+	/** maximum thread count for parallel job execution*/
+	public static final int MAXPARALLELTHREADCOUNT = 15;
+	/** default thread count for parallel job execution*/
+	public static final int DEFAULT_PARALLEL_THREADCOUNT = 5;
+	/** time to wait for watcher to init*/
+	public static final long WAITINGTIME_FOR_WATCHER_INIT = 2000L;
+	/** time to wait for job completion*/
+	public static final long WAITINGTIME_FOR_WATCHER_CHECK = 2000L;
+	/** time to wait for job completion*/
+	public static final long WAITINGTIME_FOR_JOBCOMPLETION_CHECK = 2000L;
+	/** time to wait before checking if there are job to handle in the watcher queue*/
+	public static final long WAITINGTIME_FOR_NEWJOB_CHECK = 2000L;
 	
+	public static final String CSV_EXTENSION = ".csv";
+	public static final String XML_EXTENSION = ".xml";
+	public static final String EDI_EXTENSION = ".edi";
 }
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/WatcherImpl.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/WatcherImpl.java
new file mode 100644
index 0000000..6836220
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/WatcherImpl.java
@@ -0,0 +1,787 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.signal.common;
+
+import static java.nio.file.StandardWatchEventKinds.OVERFLOW;
+import static org.eclipse.osbp.xtext.signal.common.SignalConstants.CSV_EXTENSION;
+import static org.eclipse.osbp.xtext.signal.common.SignalConstants.EDI_EXTENSION;
+import static org.eclipse.osbp.xtext.signal.common.SignalConstants.XML_EXTENSION;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.StandardWatchEventKinds;
+import java.nio.file.WatchEvent;
+import java.nio.file.WatchEvent.Kind;
+import java.nio.file.WatchKey;
+import java.nio.file.WatchService;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.regex.PatternSyntaxException;
+
+public class WatcherImpl extends SignalCommonData {
+	/** the queue containing all watcher tasks to be executed */
+	public static ArrayDeque<WatcherJobImpl> watcherjobs = new ArrayDeque<WatcherJobImpl>();
+	public static ArrayList<WatcherJobImpl> temp = new ArrayList<>();
+	/** whether the queue is allowed to be handled or not */
+	private static AtomicBoolean activeJobshandler = new AtomicBoolean(false);
+	/** the job's handler thread */
+	private static Thread jobshandler;
+	/** the watcher service */
+	private WatchService watcher;
+	/** list of all created keys and paths */
+	private Map<WatchKey, Path> keys = null;
+	/** watcher name for log outputs */
+	private String identifier = null;
+	/** the executor services for the processing of all tasks */
+	private static ExecutorService executorService;
+
+	/** lastwatcherid */
+	private String lastwatcherid = null;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param identifier
+	 *            the watcher name
+	 * @throws IOException
+	 */
+	public WatcherImpl(String identifier) throws Exception {
+		signalcount++;
+		this.identifier = identifier;
+		initWatcher();
+	}
+
+	/**
+	 * Initializes the {@link #watcher}.
+	 * 
+	 * @throws IOException
+	 *             possible thrown exception
+	 */
+	public void initWatcher() throws IOException {
+		this.watcher = FileSystems.getDefault().newWatchService();
+		this.keys = new HashMap<>();
+	}
+
+	/**
+	 * Process all events for keys queued to the watcher.
+	 */
+	public void processEvents() {
+		for (;;) {
+			try {
+				Thread.sleep(2000);
+			} catch (InterruptedException e1) {
+				// NOSONAR
+			}
+			// wait for key to be signaled
+			WatchKey key;
+			try {
+				key = watcher.take();
+			} catch (InterruptedException x) {
+				return;
+			}
+
+			Path dir = keys.get(key);
+			if (dir == null) {
+				log.error(identifier + " - WatchKey not recognized!!");
+				continue;
+			}
+
+			for (WatchEvent<?> event : key.pollEvents()) {
+				Kind<?> kind = event.kind();
+
+				// handle the OVERFLOW event
+				if (kind == OVERFLOW) {
+					continue;
+				}
+
+				if (isHandlingAllowed(kind)) {
+					// Context for directory entry event is the file name of
+					// entry
+					WatchEvent<Path> ev = cast(event);
+					Path child = dir.resolve(ev.context());
+					
+					//only handle the creation of files and ignores directories
+					if(!child.toFile().isDirectory()){
+						log.debug(String.format("%s - %s: %s\n", identifier, event.kind().name(), child));
+						
+						// only allowed event can be handle
+						try {
+							handleEvent(child);
+						} catch (Exception e) {
+							log.error(identifier + " - WatcherService shortly interrupted ...", e);
+							log.info(identifier + " - WatcherService resumed.");
+						}
+					}
+
+				}
+				// reset key and remove from set if directory no longer
+				// accessible
+				boolean valid = key.reset();
+				if (!valid) {
+					keys.remove(key);
+
+					// all directories are inaccessible
+					if (keys.isEmpty()) {
+						break;
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Checks if an event type has to be handle or not. Only create event are
+	 * allowed for now on.
+	 * 
+	 * @param event
+	 *            {@link WatchEvent<Path>} the event
+	 * @return true if yes, false if not
+	 */
+	public boolean isHandlingAllowed(Kind<?> event) {
+		if (event.name().equals("ENTRY_CREATE")) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Identifies, if the with the given path corresponds to a valid trigger
+	 * file. If it does the combination containing the same trigger file and the
+	 * list of tasks to be executed is given back.
+	 * 
+	 * @param file
+	 *            the newly created file, to react on
+	 */
+	public void handleEvent(Path file) {
+	}
+
+	@SuppressWarnings("unchecked")
+	static <T> WatchEvent<T> cast(WatchEvent<?> event) {
+		return (WatchEvent<T>) event;
+	}
+
+	/**
+	 * Register the given directory, and all its sub-directories, with the
+	 * WatchService.
+	 * 
+	 * @param rootpath
+	 *            {@link Path} the root path.
+	 * @param signals
+	 * @throws IOException
+	 */
+	public void registerAll(Path rootpath) throws IOException {
+		// register directory and sub-directories
+		Files.walkFileTree(rootpath, new SimpleFileVisitor<Path>() {
+			@Override
+			public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
+				registerPathToWatch(dir);
+				return FileVisitResult.CONTINUE;
+			}
+		});
+	}
+
+	/**
+	 * Register the given directory with the WatchService
+	 * 
+	 * @param directory
+	 * @param combined
+	 *            true to create only one {@link WatchKey} for all event types,
+	 *            false to create separate key for each event type.
+	 * @throws IOException
+	 */
+	public void registerPathToWatch(Path directory) throws IOException {
+		getRegisteredKeysAndPaths().put(directory.register(getWatcher(), StandardWatchEventKinds.ENTRY_CREATE),
+				directory);
+		log.info(String.format("%s - Directory to watch: [%s] registered!", identifier, directory));
+	}
+
+	/**
+	 * Checks if the given {@link WatchKey} is valid.
+	 * 
+	 * @return true if yes, false if not
+	 */
+	public boolean isKeyValid(WatchKey key) {
+		return key != null ? key.isValid() : false;
+	}
+
+	/**
+	 * Closes the watcher service
+	 * 
+	 */
+	public void closeWatcher() {
+		try {
+			if (watcher != null) {
+				watcher.close();
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Get the list of registered directories.
+	 * 
+	 * @return {@link Collection<Path>} {@link #directories}
+	 */
+	public Collection<Path> getRegisteredDirectories() {
+		return keys.values();
+	}
+
+	/**
+	 * Gets the list of registered keys.
+	 * 
+	 * @return {@link Set<WatchKey>}
+	 */
+	public Set<WatchKey> getRegisteredKeys() {
+		return keys.keySet();
+	}
+
+	/**
+	 * Gets the list of registered keys and their paths.
+	 * 
+	 * @return {@link Map<WatchKey,Path>}
+	 */
+	public Map<WatchKey, Path> getRegisteredKeysAndPaths() {
+		return keys;
+	}
+
+	/**
+	 * Gets the watcher.
+	 * 
+	 * @return {@link WatchService}
+	 */
+	public WatchService getWatcher() {
+		return watcher;
+	}
+
+	/**
+	 * Checks if the given filename corresponds matches the given file masks.
+	 * 
+	 * @param filename
+	 *            the filename to be checked
+	 * @param filemask
+	 *            the filemask to be matched with
+	 * @return true if it's a match, false if not
+	 */
+	public boolean isFileNameValidToFileMask(String filename, String filemask) {
+		if (filename != null && !filename.isEmpty() && filemask != null && !filemask.isEmpty()) {
+			return FileSystems.getDefault().getPathMatcher("glob:" + filemask).matches(Paths.get(filename));
+		}
+		return false;
+	}
+
+	/**
+	 * Checks if the given file name equals the expected one.
+	 * 
+	 * @param filename
+	 *            the file name to be checked
+	 * @param filemask
+	 *            the base file name to be compared with
+	 * @return true if both are equals, false if not
+	 */
+	public boolean isFileNameValidToBaseFileName(String filename, String basename) {
+		if (filename != null && basename != null && basename.equals(filename)) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Checks if the given file mask is empty. Further validation can be
+	 * implemented here.
+	 * 
+	 * @param filemask
+	 *            the file mask
+	 * @return the file mask value, or null
+	 */
+	public String getFilemaskValue(String filemask) {
+		if (filemask != null && !filemask.isEmpty()) {
+			return filemask;
+		}
+		return null;
+	}
+
+	/**
+	 * Checks if the given file name is empty. Further validation can be
+	 * implemented here.
+	 * 
+	 * @param filename
+	 *            the file n
+	 * @return the file mask value, or null
+	 */
+	public String getFileNameValue(String filename) {
+		if (filename != null && !filename.isEmpty()) {
+			return filename;
+		}
+		return null;
+	}
+
+	/**
+	 * Convenience method to register watcher directories
+	 * 
+	 * @param url
+	 *            a file path url
+	 * @param modelurl
+	 *            a model path url
+	 */
+	public void registerUrl(String url, String modelurl) {
+		if (url != null && !url.isEmpty()) {
+			if (url.contains("\\")) {
+				url = url.substring(0, url.lastIndexOf("\\"));
+			} else if (url.contains("/")) {
+				url = url.substring(0, url.lastIndexOf("/"));
+			} else {
+				url = modelurl;
+			}
+		} else {
+			url = modelurl;
+		}
+		URL a = isDirectoryValidURL(url);
+		if (a != null && a.getProtocol().equals("file")) {
+			if (existsDirectory(url)) {
+				try {
+					registerPathToWatch(Paths.get(url));
+				} catch (IOException e) {
+					log.error(String.format("%s - Path [%s] could not be registered!", identifier, url), e);
+				}
+			} else {
+				log.error(String.format("%s - Path [%s] not existing! Directory not registered!", identifier, url));
+			}
+		}
+	}
+
+	/**
+	 * Checks if the given string a valid url.
+	 * 
+	 * @param url
+	 * @return true if yes, false if not.
+	 */
+	public URL isDirectoryValidURL(String url) {
+		try {
+			return new URL(url);
+		} catch (MalformedURLException e1) {
+			if (e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol")) {
+				try {
+					return Paths.get(url).toUri().toURL();
+				} catch (MalformedURLException e2) {
+					StringWriter sw = new StringWriter();
+					e2.printStackTrace(new PrintWriter(sw));
+					log.error(identifier + " - {}", sw.toString());
+				}
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Checks if the given path points to an existing directory.
+	 * 
+	 * @param path
+	 *            the path
+	 * @return true if yes, false if not
+	 */
+	public boolean existsDirectory(String path) {
+		try {
+			return Files.isDirectory(Paths.get(path));
+		} catch (Exception e) {
+			log.error(identifier + " - existsDirectory - error ", e);
+		}
+		return false;
+	}
+
+	/**
+	 * Add a watcher task to the queue.
+	 * 
+	 * @param task
+	 *            the watcher task
+	 */
+	public void addWatcherJob(WatcherJobImpl task) {
+		synchronized (watcherjobs) {
+			watcherjobs.add(task);
+			log.debug(identifier+" - WatcherJobsHandler - Execution of [" + task.getClass().getSimpleName() + "] of ["
+					+ task.getWatcherId() + "] for [" + task.getTriggerfile() + "] planed!");
+		}
+	}
+
+	/**
+	 * Starts the watcher jobs handler, which is responsible to handle each
+	 * queue tasks. in {@link #watcherjobs}.
+	 */
+	public void startWatcherJobsHandling() {
+		synchronized (activeJobshandler) {
+			if (!activeJobshandler.get()) {
+
+				int result = -1;
+				while (true) {
+					if (getMaxParallelThreadsCount() == -1) {
+						try {
+							Thread.sleep(SignalConstants.WAITINGTIME_FOR_WATCHER_INIT);
+						} catch (InterruptedException e) {
+							// NOSONAR
+						}
+					} else {
+						result = getMaxParallelThreadsCount();
+						break;
+					}
+				}
+
+				setExecutorService(createCustomExecutorService("WatcherJobHandler", result, 0L));
+				log.debug("WatcherJobsHandler - ExecutorService with maximum parallel threads count set to [" + result
+						+ "].");
+
+				// can be started only once
+				activeJobshandler.set(true);
+				// start the watcher job handler
+				jobshandler = new Thread("WatcherJobsHandler") {
+					@Override
+					public void run() {
+						// the queue execution
+						while (activeJobshandler.get()) {
+							try {
+								Thread.sleep(SignalConstants.WAITINGTIME_FOR_NEWJOB_CHECK);
+							} catch (InterruptedException e) {
+								// NOSONAR
+							}
+							checkAndHandleJobs();
+						}
+						log.info("WatcherJobsHandler - WatcherJobsHandling stopped ...");
+						log.info("WatcherJobsHandler - Remaining unhandled jobs count[" + watcherjobs.size() + "] !");
+					}
+
+					@Override
+					public void interrupt() {
+						log.info("WatcherJobsHandler - WatcherJobsHandling interrupted ...");
+						log.info("WatcherJobsHandler - Remaining unhandled jobs count[" + watcherjobs.size() + "] !");
+						super.interrupt();
+					}
+				};
+				jobshandler.start();
+				log.info("WatcherJobsHandler - WatcherJobsHandling started ...");
+			}
+		}
+	}
+
+	/**
+	 * Checks and executes any task in the queue.
+	 */
+	private void checkAndHandleJobs() {
+
+		if (!watcherjobs.isEmpty()) {
+
+			// remove the task from the queue
+			WatcherJobImpl job = watcherjobs.pop();
+
+			// here only watcher with file mask are considered
+			// since they only handle one task, thus one (import) file TODO
+			// Export case with file mask!!!!!
+			if (job.isParallelJobExecutionAllowed()) { // only allowed by
+														// watcher with file
+														// mask
+
+				if (lastwatcherid == null) {
+					// mark the task id
+					lastwatcherid = job.getWatcherId();
+					log.debug("WatcherJobHandler - START PROCESSING GROUP: " + lastwatcherid.toUpperCase());
+					// look for its completion
+					temp.add(job);
+					// allow it to be processed
+					job.executeListOfTasks();
+				}
+
+				// grouping task happens here: is the task from the same watcher
+				// as the last marked (or currently in use) watcher, then it is
+				// allowed to be processed
+				// if not then wait until all tasks from the current watcher are
+				// done.
+				else {
+					// check if the watcher is the same
+					if (job.getWatcherId().equals(lastwatcherid)) {
+						// look for its completion
+						temp.add(job);
+						// trigger the job execution
+						job.executeListOfTasks();
+					} else {
+						// is parallel but not from the same watcher
+						// the wait until completion of the all watcher task in
+						// temp
+						while (!areAllJobsInTempDone()) {
+							try {
+								Thread.sleep(SignalConstants.WAITINGTIME_FOR_JOBCOMPLETION_CHECK);
+							} catch (InterruptedException e) {
+								log.error("WatcherJobsHandler - ", e);
+							}
+						}
+						log.debug("WatcherJobHandler - END PROCESSING GROUP: " + lastwatcherid.toUpperCase());
+
+						// override the last watcher id (type)
+						lastwatcherid = job.getWatcherId();
+						log.debug("WatcherJobHandler - START PROCESSING GROUP: " + lastwatcherid.toUpperCase());
+						// reset the temp list
+						resetTemp();
+						// look for the new watcher task its completion
+						temp.add(job);
+						// trigger the job execution
+						job.executeListOfTasks();
+					}
+				}
+			} else {
+				// check if there is no watcher marked
+				if (lastwatcherid == null) {
+					// mark the current watcher id
+					lastwatcherid = job.getWatcherId();
+					log.debug("WatcherJobHandler - START PROCESSING GROUP: " + lastwatcherid.toUpperCase());
+					// look for the new watcher task its completion
+					temp.add(job);
+					// trigger the job execution
+					job.executeListOfTasks();
+				} else {
+					// there is a watcher already marked ???
+					// TODO check if from same watcher?
+					// yes then allow
+					// no then wait
+					// then new group
+					// wait until completion of all task of the current watcher
+					// in temp
+					while (!areAllJobsInTempDone()) {
+						try {
+							Thread.sleep(SignalConstants.WAITINGTIME_FOR_JOBCOMPLETION_CHECK);
+						} catch (InterruptedException e) {
+							log.error("WatcherJobsHandler - ", e);
+						}
+					}
+					log.debug("WatcherJobHandler - END PROCESSING GROUP: " + lastwatcherid.toUpperCase());
+
+					// ONLY WATCHER, WHOSE TASKS HAVE TO BE EXECUTED IN PARALLEL
+					// NEED TO BE MARKED
+					// FOR ALL OTHER WATCHERS ONLY ONE THREAD IS NEEDED,
+					// THEREFORE THOSE TASK SHOULD ALWAYS BE ALLOWED TO BE
+					// PROCESSED
+
+					// override the last watcher id (type)
+					lastwatcherid = job.getWatcherId();
+					log.debug("WatcherJobHandler - START PROCESSING GROUP: " + lastwatcherid.toUpperCase());
+					// reset the temp list
+					resetTemp();
+					// look for the new watcher job completion
+					temp.add(job);
+					// trigger the job execution
+					job.executeListOfTasks();
+				}
+			}
+		}
+	}
+
+	public void resetTemp() {
+		temp = new ArrayList<>();
+	}
+
+	public boolean areAllJobsInTempDone() {
+		for (WatcherJobImpl t : temp) {
+			if (!t.isDone()) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Stops the handling of all watcher jobs.
+	 * 
+	 * @throws InterruptedException
+	 */
+	public void stopWatcherJobsHandling() throws InterruptedException {
+		synchronized (activeJobshandler) {
+			if (activeJobshandler.get()) {
+				activeJobshandler.set(false);
+			} else {
+				log.info(identifier+" - WatcherJobsHandling already stopped.");
+			}
+		}
+	}
+
+	/**
+	 * Gives the {@link #executorService} back.
+	 * 
+	 * @return {@link ExecutorService} the executor service
+	 */
+	public static ExecutorService getExecutorService() {
+		return executorService;
+	}
+
+	/**
+	 * Sets the {@link #executorService}.
+	 * 
+	 * @param executorService
+	 *            the executor service
+	 */
+	public void setExecutorService(ExecutorService executorService) {
+		WatcherImpl.executorService = executorService;
+	}
+	
+	/**
+	 * Creats a url based on the given directory path.
+	 * @param directory directory path
+	 * @return {@link URL} the created url or null
+	 */
+	public URL getDirectoryURL(String directory) {
+		try {
+			return new URL(directory);
+		} 
+		catch (MalformedURLException e1) {
+			if(e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol")) {
+				try {
+					return Paths.get(directory).toUri().toURL();
+				} catch (MalformedURLException e2) {
+					return null;
+				}
+			}
+		 }
+		 return null;
+	 }
+	 
+	 /**
+	  * Checks if the given url is valid.
+	  * @param path the path to be checked 
+	  * @return true if yes, false if not
+	  */
+	 public boolean checkURLValidity(String path) {
+		 URL url = getDirectoryURL(path);
+		 if(url != null && !url.getProtocol().equals("file") ){
+			 log.error("The watched directory is not a file based url.");
+			 return false;
+		 }
+		 return true;
+	 }
+
+	/**
+	 * Checks if the given file mask is valid.
+	 * @param filemask the file mask
+	 * @return true if yes, false if not
+	 */
+	public boolean isFileMaskValid(String filemask) {
+		if (filemask != null && !filemask.isEmpty()) {
+			try {
+				FileSystems.getDefault().getPathMatcher("glob:" + filemask);
+				return true;
+			} catch (PatternSyntaxException exception) {
+				log.error(String.format("%s - The file mask pattern ["+filemask+"] from the configuration file is invalid. Error: ", identifier), exception);
+			} catch (UnsupportedOperationException exception) {
+				log.error(String.format("%s - The file mask pattern ["+filemask+"] from the configuration file is not recognized. Error: ", identifier), exception);
+			} catch (IllegalArgumentException exception) {
+				log.error(String.format("%s - The file mask pattern ["+filemask+"] from the configuration file is invalid. Error: ", identifier), exception);
+			}
+		}
+		return false;
+	}
+	
+	/**
+	 * Checks the given file name is valid.
+	 * @param filename the file name
+	 * @param validextension the valid extension
+	 * @return true if yes, false if not
+	 */
+	public boolean isFileNameValid(String filename, String validextension) {
+		if (filename != null && !filename.isEmpty() && validextension != null && !validextension.isEmpty()) {
+			if (validextension.equals(CSV_EXTENSION) && !isExtensionAllowedForInterchange(filename, validextension)) {
+				log.error(String.format("%s - The file name [%s] you have entered is not valid. Only file names ending with the extension %s are allowed for this watcher!", identifier, filename, validextension));
+				return false;
+			} 
+			else if (validextension.equals(EDI_EXTENSION)&& !isExtensionAllowedForInterchange(filename, validextension)) {
+				log.error(String.format("%s - The file name [%s] you have entered is not valid. Only file names ending with the extension %s are allowed for this watcher!", identifier, filename, validextension));
+				return false;
+			} 
+			else if (validextension.equals(XML_EXTENSION)&& !isExtensionAllowedForInterchange(filename, validextension)) {
+				log.error(String.format("%s - The file name [%s] you have entered is not valid. Only file names ending with the extension %s are allowed for this watcher!", identifier, filename, validextension));
+				return false;
+			}
+			else if (!isExtensionValid(validextension)) {
+				log.error(String.format("%s - The file name extension you have entered is not currently supported. Only file names ending with either one of following extension are allowed: '.csv' '.edi' or '.xml' .", identifier));
+				return false;
+			}
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Checks if the given file mask contains the given and expected valid extension.
+	 * @param filemask the file mask
+	 * @param validextension the expected valid extension
+	 * @return true if yes, false if not
+	 */
+	public boolean isFileMaskValidWithExpectedFileExtension(String filemask, String validextension) {
+		if (filemask != null && !filemask.isEmpty() && validextension != null
+				&& !validextension.isEmpty()) {
+			if (validextension.equals(CSV_EXTENSION) && !isExtensionAllowedForInterchange(filemask, validextension)) {
+				log.error(String.format("%s - The file mask [%s] from the configuration file is not valid. Only file masks ending with the extension %s are allowed for this watcher!", identifier, filemask, validextension));
+				return false;
+			} 
+			else if ( validextension.equals(EDI_EXTENSION) && !isExtensionAllowedForInterchange(filemask, validextension)) {
+				log.error(String.format("%s - The file mask [%s] from the configuration file is not valid. Only file masks ending with the extension %s are allowed for this watcher!", identifier, filemask, validextension));
+				return false;
+			}
+			else if ( validextension.equals(XML_EXTENSION) && !isExtensionAllowedForInterchange(filemask, validextension)) {
+				log.error(String.format("%s - The file mask [%s] from the configuration file is not valid. Only file masks ending with extension %s are allowed for this watcher!", identifier, filemask, validextension));
+				return false;
+			} 
+			else if (!isExtensionValid(validextension)) {
+				log.error(String.format("%s - The file mask extension from the configuration file is not currently supported. Only file masks ending with either one of following extension are allowed: '.csv' '.edi' or '.xml' .", identifier));
+				return false;
+			}
+			return true;
+		} 
+		return false;
+	}
+	
+	/**
+	 * Checks if the given file name contains the given allowed extension.
+	 * @param filename the file name
+	 * @param allowedextension the allowed extension
+	 * @return true if yes, false if not
+	 */
+	public boolean isExtensionAllowedForInterchange(String filename, String allowedextension) {
+		return (filename.endsWith(allowedextension) || filename.endsWith(allowedextension.toLowerCase()));
+	}
+
+	/**
+	 * Checks if the given file name contains the allowed extensions.
+	 * @param filename
+	 * @return
+	 */
+	public boolean isExtensionValid(String filename) {
+		return (filename.endsWith(CSV_EXTENSION) || filename.endsWith(CSV_EXTENSION.toLowerCase())
+				|| filename.endsWith(EDI_EXTENSION) || filename.endsWith(EDI_EXTENSION.toLowerCase())
+				|| filename.endsWith(XML_EXTENSION) || filename.endsWith(XML_EXTENSION.toLowerCase()));
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/WatcherJobImpl.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/WatcherJobImpl.java
new file mode 100644
index 0000000..27ee405
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/WatcherJobImpl.java
@@ -0,0 +1,150 @@
+package org.eclipse.osbp.xtext.signal.common;
+
+import java.nio.file.Path;
+import java.util.HashSet;
+
+import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
+
+public class WatcherJobImpl extends SignalCommonData {
+	/** the watcher full qualified name */
+	private String watcherid;
+	/** the trigger file*/
+	private Path triggerfile;
+	/** whether the job can be executed in parallel*/
+	private boolean seqjobexec;
+	/** the task status*/
+	private boolean done;
+	/** holds the completion status of each task in the parallel case*/
+	private HashSet<WorkerThreadRunnable> completionstatus;
+	
+	/**
+	 * Default constructor
+	 */
+	public WatcherJobImpl(){
+		completionstatus = new HashSet<>();
+	}
+	
+	/**
+	 * Triggers the execution of the list of task.
+	 * This operation has to be overridden by subclasses.
+	 */
+	public void executeListOfTasks(){}
+
+	/**
+	 * Returns the {@link #triggerfile}.
+	 * @return {@link Path} the trigger file.
+	 */
+	public Path getTriggerfile() {
+		return triggerfile;
+	}
+
+	/**
+	 * Sets the trigger file {@link #triggerfile}.
+	 * @param triggerfile the new value
+	 */
+	public void setTriggerfile(Path triggerfile) {
+		this.triggerfile = triggerfile;
+	}
+
+	/**
+	 * Returns the watcher full qualifier id.
+	 * @return {@link String} the value of {@link #watcherid}
+	 */
+	public String getWatcherId() {
+		return watcherid;
+	}
+
+	/**
+	 * Sets the watcher id value {@link #watcherid}.
+	 * @param watcherid the new value
+	 */
+	public void setWatcherId(String watcherid) {
+		this.watcherid = watcherid;
+	}
+	
+	/**
+	 * Returns the value of {@link #seqjobexec}, which determines
+	 * wether a watcher job can be executed in parallel fashion.
+	 * @return {@link Boolean} true if yes, false if not.
+	 */
+	public boolean isParallelJobExecutionAllowed() {
+		return seqjobexec;
+	}
+
+	/**
+	 * Sets the state of {@link #seqjobexec}.
+	 * @param noseq the {@link #seqjobexec} value
+	 */
+	public void setParallelJobExecutionAllowed(boolean noseq) {
+		this.seqjobexec = noseq;
+	}
+
+	/**
+	 * Indicates if the execution of the list of tasks is done or not.
+	 * @return true if yes, false if not.
+	 */
+	public boolean isDone() {
+		return done;
+	}
+
+	/**
+	 * Sets the state of watcher task: done or not.
+	 * @param done the state value
+	 */
+	public void setDone(boolean done) {
+		this.done = done;
+	}
+
+	/**
+	 * Adds an (interchange) task to the list of all tasks,
+	 * in order to monitor when it's done.
+	 * @param task the {@link WorkerThreadRunnable} task
+	 */
+	public void checkForCompletion(WorkerThreadRunnable task) {
+		completionstatus.add(task);
+	}
+	
+	/**
+	 * Updates the state of this watcher task.
+	 */
+	public void updateTaskCompletionState(){
+		boolean result = true;
+		for(WorkerThreadRunnable task : completionstatus){
+			if(!task.isExecutionDone()){
+				result = false;
+				break;
+			}
+		}
+		setDone(result);
+	}
+	
+	/**
+	 * Responsible to execute additional tasks as soon as the execution of the list 
+	 * of tasks in {@link #executeListOfTasks()} is effectively done. 
+	 * Currently it handles the deletion of the trigger file in the parallel case. 
+	 * @param callerid the id of the caller for log purposes.
+	 */
+	public void finalizeTaskExecution(String callerid){
+		Thread completionTask = new Thread("CompletionThreadFOR"+callerid){
+			public void run() {
+				while(true){
+					// Check the task state each 2 seconds
+					try {
+						Thread.sleep(2000);
+					} catch (InterruptedException e) {
+						log.error("finalizeTaskExecution from ["+ watcherid + "] ", e);
+					}
+					if(isDone()){
+						deleteFile(getTriggerfile(), callerid+" - Triggerfile");
+						break;
+					}else{
+						updateTaskCompletionState();
+					}
+				}
+				log.info("WatcherJobsHandler - END - Parallel execution of "+callerid);
+			}
+		};
+		completionTask.setDaemon(true);
+		completionTask.start();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend
index cc8151b..f5d47b5 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend
Binary files differ
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend
index a88377b..87a2830 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend
@@ -19,11 +19,14 @@
 
 package org.eclipse.osbp.xtext.signal.jvmmodel
 
+import com.google.common.util.concurrent.ThreadFactoryBuilder
 import java.io.File
 import java.io.FileInputStream
+import java.io.FileOutputStream
 import java.io.IOException
 import java.io.PrintWriter
 import java.io.StringWriter
+import java.net.URI
 import java.net.URL
 import java.nio.file.FileSystems
 import java.nio.file.Files
@@ -33,32 +36,51 @@
 import java.util.ArrayList
 import java.util.Date
 import java.util.HashMap
+import java.util.HashSet
 import java.util.Map
 import java.util.Properties
 import java.util.concurrent.Executors
 import javax.inject.Inject
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.ecore.util.EcoreUtil
 import org.eclipse.osbp.core.api.persistence.IPersistenceService
 import org.eclipse.osbp.datainterchange.api.IDataInterchange
 import org.eclipse.osbp.preferences.ProductConfiguration
+import org.eclipse.osbp.xtext.addons.EObjectHelper
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalCommonData
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher
+import org.eclipse.osbp.xtext.signal.CronScheduler
+import org.eclipse.osbp.xtext.signal.DailyScheduler
+import org.eclipse.osbp.xtext.signal.HourlyScheduler
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler
+import org.eclipse.osbp.xtext.signal.SignalPackage
+import org.eclipse.osbp.xtext.signal.SignalScheduler
+import org.eclipse.osbp.xtext.signal.SignalWatcher
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler
+import org.eclipse.osbp.xtext.signal.common.SignalConstants
+import org.eclipse.osbp.xtext.signal.common.WatcherImpl
 import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.naming.IQualifiedNameProvider
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig
 import org.eclipse.xtext.xbase.compiler.ImportManager
 import org.quartz.JobDetail
+import org.quartz.JobExecutionException
 import org.quartz.SchedulerException
 import org.quartz.Trigger
+import org.quartz.impl.StdSchedulerFactory
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
+import static org.eclipse.osbp.xtext.signal.common.SignalConstants.*
+
 class SignalModelGenerator extends I18NModelGenerator {
 	@Inject extension BasicDslGeneratorUtils
+	@Inject extension IQualifiedNameProvider
 
 	var public static String pckgName = null
 
@@ -69,15 +91,15 @@
 		addImportFor(
 			importManager,
 			_typeReferenceBuilder,
-			OSBPSignalWatcher,
-			OSBPSignalConstants,
+			WatcherImpl,
+			SignalConstants,
 			Paths,
 			WorkerThreadRunnable,
 			IPersistenceService,
 			IDataInterchange,
 			Files,
-			OSBPSignalCommonData,
 			FileSystems,
+			FileOutputStream,
 			Logger,
 			LoggerFactory,
 			HashMap,
@@ -97,14 +119,130 @@
 			IOException,
 			Date,
 			JobDetail,
-			Trigger
+			JobExecutionException,
+			Trigger,
+			URI,
+			ThreadFactoryBuilder,
+			StdSchedulerFactory
 		)
 		super.createAppendable(context, importManager, config)
 	}
 
-	override doGenerate(Resource resource, IFileSystemAccess fsa) {
-//		addTranslatables("startProcessText,answerYesText,answerNoText,designer,designmode,undo,redo,new,change,export,download")
-		super.doGenerate(resource, fsa)
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+		EcoreUtil.getAllContents(EObjectHelper.getSemanticElement(input), false).filter(typeof(SignalPackage)).forEach[
+			fsa.generatePathConfig(it)
+		]
+		super.doGenerate(input, fsa)
+	}
+	
+	def void generatePathConfig(IFileSystemAccess access, SignalPackage pck) {
+		var dir = new File('''«System.getProperty("user.home")»/.osbee''')
+        if(!dir.exists) {
+        	dir.mkdir
+        }
+        
+        val dataGroups = new HashSet<DataInterchangeGroup>
+        pck.signals.forEach[
+        	if(it instanceof SignalWatcher){
+	        	dataGroups.add(it.definition.interchangegroup)
+       		}
+       		else if(it instanceof SignalScheduler){
+	        	dataGroups.add(it.interchangegroup)
+       		}
+        ]
+        
+        // making sure that a configuration file is written only once
+        // with all corresponding watchers and schedulers config data
+        
+        for(group : dataGroups){	
+	        var file = new File('''«System.getProperty("user.home")»/.osbee/«group.name»Config.xml''');
+	        
+	        file.setWritable(true, false);
+	        if(file.exists) {
+		    	// first read the file content
+			    val properties = new Properties();
+		    	var fileInput = new FileInputStream(file);
+				properties.loadFromXML(fileInput);
+				fileInput.close();
+			    
+		        pck.signals.forEach[
+		        	
+		        	var tempgroup = null as DataInterchangeGroup 
+		       		if(it instanceof SignalWatcher){
+		       			tempgroup = it.definition.interchangegroup
+		       		}
+		       		else if(it instanceof SignalScheduler){
+		       			tempgroup = it.interchangegroup
+		       		}
+		        	
+		        	if(group === tempgroup){
+		        		
+		        		if(it instanceof SignalWatcher){
+		        			var watcher = it.definition
+			        		// maximum thread count for parallel job execution
+			        		if(!properties.containsKey(MAXPARALLELTHREADCOUNT_NAME)){
+								properties.put(MAXPARALLELTHREADCOUNT_NAME, DEFAULT_PARALLEL_THREADCOUNT.toString)
+			        		}
+							// watcher config filemask   
+							if(watcher instanceof WatcherWithFileMask ){
+								if(!properties.containsKey(it.fullyQualifiedName +"Watcher"+ FILEMASK)){									
+									properties.put(it.fullyQualifiedName +"Watcher"+FILEMASK, (watcher.filemask))
+								}
+							}
+							// watcher config filename
+							else if(watcher instanceof WatcherWithFileName){
+								if(!properties.containsKey(it.fullyQualifiedName +"Watcher"+ FILENAME)){
+									properties.put(it.fullyQualifiedName +"Watcher"+ FILENAME, watcher.filename)
+								}
+							}
+		        		}
+						else if (it instanceof SignalScheduler){
+							// cron scheduler
+							if(it.schedulertype instanceof CronScheduler && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ CRON_SCHEDULER) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ CRON_SCHEDULER,(it.schedulertype as CronScheduler).expression)
+							}
+							// hourly scheduler
+							else if(it.schedulertype instanceof HourlyScheduler && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ HOURLY_SCHEDULER) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ HOURLY_SCHEDULER,(it.schedulertype as HourlyScheduler).minute.toString)
+							}
+							// daily scheduler
+							else if(it.schedulertype instanceof DailyScheduler  && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ DAILY_SCHEDULER_HOUR) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ DAILY_SCHEDULER_HOUR, '''«(it.schedulertype as DailyScheduler).hour»'''.toString)
+							}
+							else if(it.schedulertype instanceof DailyScheduler  && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ DAILY_SCHEDULER_MIN) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ DAILY_SCHEDULER_MIN, '''«(it.schedulertype as DailyScheduler).minute»'''.toString)
+							}
+							// weekly scheduler
+							else if(it.schedulertype instanceof WeeklyScheduler && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ WEEKLY_SCHEDULER_DAYOFWEEK) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ WEEKLY_SCHEDULER_DAYOFWEEK, '''«(it.schedulertype as WeeklyScheduler).dayofweek»'''.toString)
+							}
+							else if(it.schedulertype instanceof WeeklyScheduler && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ WEEKLY_SCHEDULER_HOUR) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ WEEKLY_SCHEDULER_HOUR, '''«(it.schedulertype as WeeklyScheduler).hour»'''.toString)
+							}
+							else if(it.schedulertype instanceof WeeklyScheduler && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ WEEKLY_SCHEDULER_MIN) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ WEEKLY_SCHEDULER_MIN, '''«(it.schedulertype as WeeklyScheduler).minute»'''.toString)
+							}
+							// monthly scheduler
+							else if(it.schedulertype instanceof MonthlyScheduler  && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ MONTHLY_SCHEDULER_DAYOFMONTH) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ MONTHLY_SCHEDULER_DAYOFMONTH, '''«(it.schedulertype as MonthlyScheduler).dayofmonth»'''.toString)
+							}
+							else if(it.schedulertype instanceof MonthlyScheduler  && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ MONTHLY_SCHEDULER_HOUR) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ MONTHLY_SCHEDULER_HOUR, '''«(it.schedulertype as MonthlyScheduler).hour»'''.toString)
+							}
+							else if(it.schedulertype instanceof MonthlyScheduler  && !properties.containsKey(it.fullyQualifiedName +"Scheduler"+ MONTHLY_SCHEDULER_MIN) ) {
+								properties.put(it.fullyQualifiedName +"Scheduler"+ MONTHLY_SCHEDULER_MIN, '''«(it.schedulertype as MonthlyScheduler).minute»'''.toString)
+							}
+						}
+				    }			
+		        ]
+		        // write the all watcher and scheduler configurations to the file
+				var fileOutput = new FileOutputStream(file);
+				properties.storeToXML(fileOutput, "dataInterchange file URLs");
+				fileOutput.close
+        	}
+	        	
+        }
+        
 	}
 
 }
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend
index 4f0325b..3f85320 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend
@@ -13,11 +13,27 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  * generated by Xtext 2.11.0
- *
+ * 
  */
 
 package org.eclipse.osbp.xtext.signal.scoping
 
+import javax.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage
+import org.eclipse.osbp.xtext.signal.SignalScheduler
+import org.eclipse.osbp.xtext.signal.SignalWatcher
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName
+import org.eclipse.xtext.resource.EObjectDescription
+import org.eclipse.xtext.resource.IEObjectDescription
+import org.eclipse.xtext.scoping.IScope
+import org.eclipse.xtext.scoping.impl.MapBasedScope
+
 /**
  * This class contains custom scoping description.
  * 
@@ -25,5 +41,40 @@
  * on how and when to use it.
  */
 class SignalDSLScopeProvider extends AbstractSignalDSLScopeProvider {
+
+	@Inject extension ModelExtensions
 	
+	override getScope(EObject context, EReference reference) {
+		if (reference == SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__DATA_REF) {
+			return getScope_DataInterchanges(context, reference)
+		} 
+		else {
+			super.getScope(context, reference)
+		}
+	}
+	
+	def getScope_DataInterchanges(EObject context, EReference reference) {
+		var result = <IEObjectDescription>newArrayList
+		
+		if (context !== null) {
+			
+			var signal = context.eContainer
+			var group = null as DataInterchangeGroup
+			if(signal instanceof WatcherWithFileMask){
+				group = signal.interchangegroup
+			}
+			else if(signal instanceof WatcherWithFileName){
+				group = signal.interchangegroup
+			}
+			else if(signal instanceof SignalScheduler){
+				group = signal.interchangegroup
+			}
+			for(value : group.datInts){
+				result.add(EObjectDescription.create((value as DataInterchange).name, (value as DataInterchange)))
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+		
+	}
+
 }
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend
index 5468e0e..7ed5396 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend
@@ -18,185 +18,67 @@
 
 package org.eclipse.osbp.xtext.signal.validation
 
-import java.net.MalformedURLException
-import java.net.URL
-import java.nio.file.Files
-import java.nio.file.Paths
+import java.nio.file.FileSystems
+import java.nio.file.PathMatcher
 import java.text.ParseException
 import java.util.HashSet
-import org.eclipse.osbp.utils.common.SystemInformation
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFile
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileCSV
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML
+import java.util.regex.PatternSyntaxException
+import javax.inject.Inject
+import org.eclipse.emf.common.util.EList
+import org.eclipse.osbp.xtext.datainterchange.validation.DataDSLValidator
 import org.eclipse.osbp.xtext.signal.CronScheduler
 import org.eclipse.osbp.xtext.signal.DailyScheduler
 import org.eclipse.osbp.xtext.signal.HourlyScheduler
 import org.eclipse.osbp.xtext.signal.MonthlyScheduler
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage
-import org.eclipse.osbp.xtext.signal.SignalHandler
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange
+import org.eclipse.osbp.xtext.signal.SignalDefinition
 import org.eclipse.osbp.xtext.signal.SignalPackage
 import org.eclipse.osbp.xtext.signal.SignalScheduler
 import org.eclipse.osbp.xtext.signal.SignalWatcher
-import org.eclipse.osbp.xtext.signal.TriggerFile
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName
 import org.eclipse.osbp.xtext.signal.WeeklyScheduler
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants
+import org.eclipse.osbp.xtext.signal.common.SignalConstants
+import org.eclipse.osbp.xtext.signal.jvmmodel.SignalDSLJvmModelInferrer
 import org.eclipse.xtext.validation.Check
 import org.quartz.CronExpression
 
-import static org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants.*
-
 /**
  * This class contains custom validation rules. 
  * 
  * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
  */
 class SignalDSLValidator extends AbstractSignalDSLValidator {
+	
+	@Inject extension DataDSLValidator dv
+	@Inject extension SignalDSLJvmModelInferrer jvm
 
 	@Check
 	def checkDuplicateWatcherNames(SignalPackage pkg) {
-		var watchers = new HashSet<String>()
-		for (watcher : pkg.watchers) {
-			if (!watchers.contains(watcher.name)) {
-				watchers.add(watcher.name)
+		var signals = new HashSet<String>()
+		for (signal : pkg.signals) {
+			if (!signals.contains(signal.name)) {
+				signals.add(signal.name)
 			} else {
-				error("The watcher id has to be unique and [" + watcher.name + "] is already in use. Please change it.",
-					watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__NAME)
+				error("Watcher's and scheduler's ID have to be unique and [" + signal.name +
+					"] is already in use. Please change it.", signal, SignalDSLPackage.Literals.SIGNAL_DEFINITION__NAME)
 			}
 		}
 	}
 
 	@Check
-	def checkDuplicateHandlerNames(SignalWatcher watcher) {
-		var handlers = new HashSet<String>()
-		for (handler : watcher.handlers) {
-			if (!handlers.contains(handler.name)) {
-				handlers.add(handler.name)
-			} else {
-				error("The handler id has to be unique.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__NAME)
-			}
-		}
-	}
-
-	@Check
-	def boolean checkFileNameValidity(SignalHandler handler) {
-		for (interchange : handler.interchanges) {
-			if (interchange.dataRef !== null && interchange.fileName !== null &&
-				interchange.fileName.length > FILE_EXTENSION_MIN_SIZE) {
-				if (!isExtensionValid(interchange.fileName)) {
-					error(
-						"The filename extension you have entered is not currently supported. Only file with either following extension are allowed: .csv .edi or .xml",
-						interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME)
-				}
-				var allowed_extension = getValidExtensionToInterchange(interchange.dataRef.fileEndpoint)
-				if (allowed_extension !== null &&
-					!isExtensionAllowedToInterchange(interchange.fileName, allowed_extension)) {
-					error(
-						"The filename extension you have entered is not valid with [" + interchange.dataRef.name +
-							"] definition. Only filename with " + allowed_extension + " as extension are allowed!",
-						interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME)
-				}
-				val filename = interchange.fileName.substring(0,
-					interchange.fileName.length - (FILE_EXTENSION_MIN_SIZE))
-				if (!isFileNameWithoutExtensionValid(filename)) {
-					error(
-						"The filename contains one or more of the following non-allowed characters / \\ : * ? > < \" ' | please change it.",
-						interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME)
-				}
-			}
-		}
-	}
-
-	def boolean isExtensionValid(String filename) {
-		return (filename.endsWith(CSV_EXTENSION) || filename.endsWith(CSV_EXTENSION.toUpperCase) ||
-			filename.endsWith(EDI_EXTENSION) || filename.endsWith(EDI_EXTENSION.toUpperCase) ||
-			filename.endsWith(XML_EXTENSION) || filename.endsWith(XML_EXTENSION.toUpperCase)
-		)
-	}
-
-	def boolean isExtensionAllowedToInterchange(String filename, String allowedextension) {
-		return (filename.endsWith(allowedextension) || filename.endsWith(allowedextension.toUpperCase))
-	}
-
-	def String getValidExtensionToInterchange(DataInterchangeFile file) {
-		if (file instanceof DataInterchangeFileCSV) {
-			return CSV_EXTENSION
-		}
-		if (file instanceof DataInterchangeFileEDI) {
-			return EDI_EXTENSION
-		}
-		if (file instanceof DataInterchangeFileXML) {
-			return XML_EXTENSION
-		}
-		return null
-	}
-
-	def boolean isFileNameWithoutExtensionValid(String filename) {
-		if(SystemInformation.isWindowsOS()){
-			return !filename.contains('/') && !filename.contains('\\') && !filename.contains(':') && ( !filename.contains('*') && !filename.contains('?')
-			&& !filename.contains('>') && !filename.contains('<') && !filename.contains('"')  && !filename.contains('|'))
-			//based on win10 allowed characters on 12.04.2018 
-		}
-		else if(SystemInformation.isMacOS()){
-			return 
-			!filename.contains('/') && !filename.contains('\\') && !filename.contains('-') && ( !filename.contains('*') && !filename.contains('?')
-			&& !filename.contains('[') && !filename.contains(']') && !filename.contains('"')  && !filename.contains('\'') && !filename.contains('{') && !filename.contains('}'))	
-			// based on http://www.informit.com/articles/article.aspx?p=1144082&seqNum=5 accessed on 12.04.2018
-		}
-		else if(SystemInformation.isUnixOS()){
-			return 
-			!filename.contains('/') && !filename.contains('\\') && !filename.contains(':') && ( !filename.contains('*') && !filename.contains('?')
-			&& !filename.contains('>') && !filename.contains('<') && !filename.contains('"')  && !filename.contains('|')
-			)
-		}
-		return true
-	}
-
-	@Check
-	def checkDuplicateDirectoryNames(SignalPackage pkg) {
-		var watcherdir = new HashSet<String>()
-		for (watcher : pkg.watchers) {
-			if (!watcherdir.contains(watcher.directory)) {
-				watcherdir.add(watcher.directory)
-			} else {
-				error("The watcher directory '" + watcher.directory +
-					"' is already in use. Please choose another directory.", watcher,
-					SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY)
-			}
-		}
-	}
-
-	@Check
-	def boolean checkDuplicateFileMasks(SignalWatcher watcher) {
-		var filemasks = new HashSet<String>()
-		for (handler : watcher.handlers) {
-			if (handler.triggerpolicy !== null && handler.triggerpolicy instanceof TriggerFile) {
-				var temp = handler.triggerpolicy as TriggerFile
-				if (!filemasks.contains(temp.filemask)) {
-					filemasks.add(temp.filemask)
-				} else {
-					error(
-						"This file mask is already in use, please change it.",
-						temp, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK)
-					return true
-				}
-			}
-		}
-		return false
-	}
-
-	@Check
 	def void checkSignalSchedulerValidity(SignalScheduler signal) {
-		if (signal.scheduler !== null && signal.scheduler instanceof CronScheduler) {
-			checkCronExpressionValidity(signal.scheduler as CronScheduler)
-		} else if (signal.scheduler !== null && signal.scheduler instanceof HourlyScheduler) {
-			checkHourlySchedulerValidity(signal.scheduler as HourlyScheduler)
-		} else if (signal.scheduler !== null && signal.scheduler instanceof DailyScheduler) {
-			checkDailySchedulerValidity(signal.scheduler as DailyScheduler)
-		} else if (signal.scheduler !== null && signal.scheduler instanceof WeeklyScheduler) {
-			checkWeeklySchedulerValidity(signal.scheduler as WeeklyScheduler)
-		} else if (signal.scheduler !== null && signal.scheduler instanceof MonthlyScheduler) {
-			checkMonthlySchedulerValidity(signal.scheduler as MonthlyScheduler)
+		if (signal.getSchedulertype !== null && signal.getSchedulertype instanceof CronScheduler) {
+			checkCronExpressionValidity(signal.getSchedulertype as CronScheduler)
+		} else if (signal.getSchedulertype !== null && signal.getSchedulertype instanceof HourlyScheduler) {
+			checkHourlySchedulerValidity(signal.getSchedulertype as HourlyScheduler)
+		} else if (signal.getSchedulertype !== null && signal.getSchedulertype instanceof DailyScheduler) {
+			checkDailySchedulerValidity(signal.getSchedulertype as DailyScheduler)
+		} else if (signal.getSchedulertype !== null && signal.getSchedulertype instanceof WeeklyScheduler) {
+			checkWeeklySchedulerValidity(signal.getSchedulertype as WeeklyScheduler)
+		} else if (signal.getSchedulertype !== null && signal.getSchedulertype instanceof MonthlyScheduler) {
+			checkMonthlySchedulerValidity(signal.getSchedulertype as MonthlyScheduler)
 		}
 	}
 
@@ -207,8 +89,8 @@
 				CronExpression.validateExpression(expression)
 			}
 		} catch (ParseException exception) {
-			error("The cron expression you have entered is invalid.\n\n" + exception +
-				OSBPSignalConstants.CRONEXP_NOTICE, scheduler, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION)
+			error("The cron expression you have entered is invalid.\n\n" + exception + SignalConstants.CRONEXP_NOTICE,
+				scheduler, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION)
 		}
 	}
 
@@ -218,8 +100,8 @@
 				SignalDSLPackage.Literals.HOURLY_SCHEDULER__MINUTE)
 		}
 	}
-	
-	def void checkDailySchedulerValidity(DailyScheduler scheduler) { 
+
+	def void checkDailySchedulerValidity(DailyScheduler scheduler) {
 		if (!(scheduler.hour >= 0 && scheduler.hour <= 23)) {
 			error("The hour entry has to be between 0 and 23.", scheduler,
 				SignalDSLPackage.Literals.DAILY_SCHEDULER__HOUR)
@@ -229,7 +111,8 @@
 				SignalDSLPackage.Literals.DAILY_SCHEDULER__MINUTE)
 		}
 	}
-	def void checkWeeklySchedulerValidity(WeeklyScheduler scheduler) { 
+
+	def void checkWeeklySchedulerValidity(WeeklyScheduler scheduler) {
 		if (!(scheduler.hour >= 0 && scheduler.hour <= 23)) {
 			error("The hour entry has to be between 0 and 23.", scheduler,
 				SignalDSLPackage.Literals.WEEKLY_SCHEDULER__HOUR)
@@ -238,9 +121,10 @@
 			error("The minute entry has to be between 0 and 59.", scheduler,
 				SignalDSLPackage.Literals.WEEKLY_SCHEDULER__MINUTE)
 		}
-		
+
 	}
-	def void checkMonthlySchedulerValidity(MonthlyScheduler scheduler) { 
+
+	def void checkMonthlySchedulerValidity(MonthlyScheduler scheduler) {
 		if (!(scheduler.dayofmonth >= 1 && scheduler.dayofmonth <= 31)) {
 			error("The hour entry has to be between 1 and 31.", scheduler,
 				SignalDSLPackage.Literals.MONTHLY_SCHEDULER__DAYOFMONTH)
@@ -256,42 +140,237 @@
 	}
 
 	@Check
-	def checkURLValidity(SignalHandler handler) {
-		if(handler.eContainer instanceof SignalWatcher){
-			var url = getDirectoryURL(((handler.eContainer as SignalWatcher).directory))
-			if(url !== null && !url.protocol.equals("file") && (handler.triggerpolicy instanceof TriggerFile)){
-				error("Only scheduler based handlers are allowed, since the watcher directory is not a file url.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__TRIGGERPOLICY)
+	def void checkFilePolicy(SignalDefinition signal) {
+		if(signal instanceof SignalWatcher){
+			var watcher = signal.definition
+			if(watcher instanceof WatcherWithFileMask){
+				if (watcher.filemask !== null && !watcher.filemask.isEmpty && watcher.executiontype !== null) {
+					if (watcher.interchange === null) {
+						error("You must define the task, on which the file mask must be applied on.",
+							watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__INTERCHANGE)
+					}
+				}
+			}
+			else if(watcher instanceof WatcherWithFileName){
+				if (watcher.filename !== null && !watcher.filename.isEmpty && watcher.executiontype !== null) {
+					if (watcher.interchanges.basedInterchangeDefined == 0) {
+						error("The task on which the file name must be applied on, have to be marked with the keyword 'applyon'.",
+							watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__INTERCHANGES)
+					} else if (watcher.interchanges.basedInterchangeDefined > 1) {
+						error("Only one task may be marked with the keyword 'applyon'.", watcher,
+							SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__INTERCHANGES)
+					}
+				}
+			}
+		}
+		else if(signal instanceof SignalScheduler){
+			if (signal.interchanges.basedInterchangeDefined >= 1) {
+				error("No task may be marked here with the keyword 'applyon'.", signal,
+				SignalDSLPackage.Literals.SIGNAL_SCHEDULER__INTERCHANGES)
+			}
+		}
+	}
+
+	def int basedInterchangeDefined(EList<SignalDatainterchange> interchanges) {
+		var count = 0
+		for (unit : interchanges) {
+			if (unit.baseinterchange) {
+				count++
+			}
+		}
+		return count
+	}
+
+	@Check
+	def void checkDuplicateFileMaskOrFileName(SignalPackage pck) {
+		var filemasks = new HashSet<String>()
+		for (signal : pck.signals) {
+			if(signal instanceof SignalWatcher){
+				var watcher = signal.definition
+				if(watcher instanceof WatcherWithFileMask){
+					if (!filemasks.contains(watcher.filemask)) {
+						filemasks.add(watcher.filemask)
+					} else {
+						error("This file mask is already in use in another watcher. Please change it.", watcher,
+							SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)
+					}
+				}
+				else if(watcher instanceof WatcherWithFileName){
+					if (!filemasks.contains(watcher.filename)) {
+						filemasks.add(watcher.filename)
+					} else {
+						error("This file name is already in use in another watcher. Please change it.", watcher,
+							SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME)
+					}
+				}
+			}
+		}
+	}
+
+	@Check
+	def void checkFileMaskAndFileNameValidity(SignalDefinition signal) {
+		checkFileNameValidityCheck(signal);
+		
+		if(signal instanceof SignalWatcher){
+			var watcher = signal.definition
+			if(watcher instanceof WatcherWithFileMask){
+				if (watcher !== null && watcher.filemask !== null && !watcher.filemask.isEmpty) {
+					try {
+						FileSystems.^default.getPathMatcher("glob:" + watcher.filemask)
+					} catch (PatternSyntaxException exception) {
+						error("The pattern of this file mask is invalid, please change it. Error: " + exception.message,
+							watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)
+					} catch (UnsupportedOperationException exception) {
+						error("The pattern of this file mask is not recognized, please change it. Error: " + exception.message,
+							watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)
+					} catch (IllegalArgumentException exception) {
+						error("The pattern of this file mask is invalid, please change it. Error: " + exception.message,
+							watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)
+					}
+				}
 			}
 		}
 	}
 	
-	def getDirectoryURL(String directory) {
-	    try {
-			return new URL(directory);
-		} catch (MalformedURLException e1) {
-			if(e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol")) {
-				try {
-					return Paths.get(directory).toUri().toURL();
-				} catch (MalformedURLException e2) {
-					return null					
+	def void checkFileNameValidityCheck(SignalDefinition signal){
+		if(signal instanceof SignalWatcher){
+			var watcher = signal.definition
+			if(watcher instanceof WatcherWithFileMask){
+				if (watcher !== null && watcher.filemask !== null && !watcher.filemask.isEmpty 
+					&& watcher.interchange !== null && watcher.interchange.dataRef !== null) {
+					var baseinterchange = watcher.interchange.dataRef
+					
+					if (baseinterchange !== null && baseinterchange.fileEndpoint !== null){
+						var allowed_extension = getValidExtensionToInterchange(baseinterchange.fileEndpoint)
+						
+						if (allowed_extension !== null) {
+							if(allowed_extension.equals(CSV_EXTENSION) && !isExtensionAllowedForInterchange(watcher.filemask, allowed_extension)){
+								error("The file mask ["+watcher.filemask+"] you have entered is not valid. Only file masks ending with the extension "+allowed_extension+" are allowed for this watcher!",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)						
+									
+							}
+							else if (allowed_extension.equals(EDI_EXTENSION) && !isExtensionAllowedForInterchange(watcher.filemask, allowed_extension)){
+								error("The file mask ["+watcher.filemask+"] you have entered is not valid. Only file masks ending with the extension "+allowed_extension+" are allowed for this watcher!",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)	
+							}
+							else if (allowed_extension.equals(XML_EXTENSION) && !isExtensionAllowedForInterchange(watcher.filemask, allowed_extension)){
+								error("The file mask ["+watcher.filemask+"] you have entered is not valid. Only file masks ending with the extension "+allowed_extension+" are allowed for this watcher!",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)			
+							}
+						}
+						if (!isExtensionValid(watcher.filemask)) {
+							error("The file mask extension you have entered is not currently supported. Only file masks ending with either one of following extension are allowed: '.csv' '.edi' or '.xml' .",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)	
+						}
+					}
 				}
 			}
+			else if(watcher instanceof WatcherWithFileName){
+				if (watcher !== null && watcher.filename !== null && !watcher.filename.isEmpty && watcher.interchanges !== null
+					&& !watcher.interchanges.empty && signal.getBaseInterchange !== null) {
+					
+					var baseinterchange = signal.getBaseInterchange.dataRef
+					
+					if (baseinterchange !== null && baseinterchange.fileEndpoint !== null){
+						var allowed_extension = getValidExtensionToInterchange(baseinterchange.fileEndpoint)
+						
+						if (allowed_extension !== null) {
+							if(allowed_extension.equals(CSV_EXTENSION) && !isExtensionAllowedForInterchange(watcher.filename, allowed_extension)){
+								error("The file name ["+watcher.filename+"] you have entered is not valid. Only file names ending with the extension "+allowed_extension+" are allowed for this watcher!",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME)						
+									
+							}
+							else if (allowed_extension.equals(EDI_EXTENSION) && !isExtensionAllowedForInterchange(watcher.filename, allowed_extension)){
+								error("The file name ["+watcher.filename+"] you have entered is not valid. Only file names ending with the extension "+allowed_extension+" are allowed for this watcher!",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME)	
+							}
+							else if (allowed_extension.equals(XML_EXTENSION) && !isExtensionAllowedForInterchange(watcher.filename, allowed_extension)){
+								error("The file name ["+watcher.filename+"] you have entered is not valid. Only file names ending with the extension "+allowed_extension+" are allowed for this watcher!",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME)				
+							}
+						}
+						else{
+							error("The file name extension you have entered is not currently supported. Only file names ending with either one of following extension are allowed: '.csv' '.edi' or '.xml' .",
+								watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME)	
+						}
+					}
+				}
+			}
+		}
+	}
+	
+//		// TODO need to be tested and completed
+//	@Check
+//	def void arePatternMatching(SignalPackage pck) {
+//		for (signal : pck.signals) {
+//			if (signal instanceof SignalWatcher) {
+//				var watcher = signal.definition
+//				if (watcher instanceof WatcherWithFileMask) {
+//					if (watcher.filemask.isFileMaskValid !== null) {
+//						var temp = escapeCharacters(watcher.filemask)
+//						for (signal2 : pck.signals) {
+//							
+//							if (signal2 instanceof SignalWatcher) {
+//								var watcher2 = signal2.definition
+//							
+//								if (watcher2 instanceof WatcherWithFileMask) {
+//									if (watcher2 !== watcher && watcher2.filemask.isFileMaskValid !== null) {
+//										try{
+//											// check if they are the same
+//											if (watcher.filemask.equals(watcher2.filemask)) {
+//												error("This file mask is already in use, please change it.", watcher,
+//													SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)
+//											} else if (watcher2.filemask.isFileMaskValid.matches(Paths.get(temp))) {
+//												warning(
+//													"This file mask is matched by the one [" + signal2.filemask +
+//														"] defined in the watcher named [" + signal2.name +
+//														"]. This may cause unintended effects, if the monitored directories are the same. We recommend you to change it, and define a unique file mask for this watcher instead.",
+//														watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)
+//											}
+//										}
+//										catch(InvalidPathException e){
+//											warning("One of those two file masks is not valid! File mask #1 [" + watcher.filemask +"] from watcher [" + watcher.name +"] and file mask #2 [" + watcher2.filemask +"] from watcher [" + watcher2.name 
+//												+"] This may cause unintended effects. We recommend you to review both file masks, and define a unique file mask for this watcher instead.",
+//												watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK)
+//										}
+//										
+//									}
+//								}
+//							}
+//						}
+//					}
+//				}
+//			}			
+//		}
+//	}
+
+	def PathMatcher isFileMaskValid(String filemask) {
+		if (filemask !== null && !filemask.isEmpty) {
+			try {
+				return FileSystems.^default.getPathMatcher("glob:" + filemask)
+			} catch (Exception exception) {
+				return null
+			}
 		}
 		return null
 	}
-	
-	@Check
-	def checkDirectoryValidity(SignalWatcher watcher) {
-		var url = getDirectoryURL(watcher.directory)
-		if(url !== null && url.protocol.equals("file") && !existsDirectory(watcher.directory)){
-			error("This directory doesn't exist. Please correct the path you have entered.", watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY)
+
+	def String escapeCharacters(String pattern) {
+		if (pattern !== null && !pattern.isEmpty) {
+			var result = pattern
+			if (result.indexOf('*') !== -1) {
+				result = result.replaceAll("\\*", "")
+			}
+			if (result.contains("\\")) {
+				result = result.replaceAll("\\", "")
+			}
+			if (result.contains("?")) {
+				result = result.replaceAll("\\?", "")
+			}
+			return result
 		}
+		return null
 	}
-	
-	def boolean existsDirectory(String path) {
-		try {
-			return Files.isDirectory(Paths.get(path));
-		} catch (Exception e) {	}
-		return false;
-	}
+
 }
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java
index 73961bb..d3e643b 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java
index f86f5dd..939326c 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
@@ -18,43 +18,43 @@
 import com.google.common.base.Objects;
 import java.nio.file.Path;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.HashSet;
-import java.util.concurrent.ExecutorService;
 import javax.inject.Inject;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
 import org.eclipse.osbp.datainterchange.api.IDataInterchange;
 import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension;
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
 import org.eclipse.osbp.ui.api.customfields.IBlobService;
-import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFile;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileCSV;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML;
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
+import org.eclipse.osbp.xtext.datainterchange.jvmmodel.DataDSLJvmModelInferrer;
+import org.eclipse.osbp.xtext.datainterchange.validation.DataDSLValidator;
 import org.eclipse.osbp.xtext.signal.CronScheduler;
 import org.eclipse.osbp.xtext.signal.DailyScheduler;
-import org.eclipse.osbp.xtext.signal.DayOfWeekEnum;
 import org.eclipse.osbp.xtext.signal.HourlyScheduler;
 import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
-import org.eclipse.osbp.xtext.signal.Scheduler;
+import org.eclipse.osbp.xtext.signal.SchedulerType;
 import org.eclipse.osbp.xtext.signal.SignalActionEnum;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
+import org.eclipse.osbp.xtext.signal.SignalDefinition;
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
-import org.eclipse.osbp.xtext.signal.SignalHandler;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
 import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
-import org.eclipse.osbp.xtext.signal.TriggerFile;
-import org.eclipse.osbp.xtext.signal.TriggerPolicy;
+import org.eclipse.osbp.xtext.signal.WatcherDefinition;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
 import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants;
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher;
-import org.eclipse.osbp.xtext.signal.jvmmodel.SignalModelGenerator;
+import org.eclipse.osbp.xtext.signal.common.SchedulerImpl;
+import org.eclipse.osbp.xtext.signal.common.SchedulerJobImpl;
+import org.eclipse.osbp.xtext.signal.common.WatcherImpl;
+import org.eclipse.osbp.xtext.signal.common.WatcherJobImpl;
 import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtend2.lib.StringConcatenationClient;
 import org.eclipse.xtext.common.types.JvmAnnotationReference;
 import org.eclipse.xtext.common.types.JvmConstructor;
 import org.eclipse.xtext.common.types.JvmField;
@@ -79,6 +79,14 @@
 import org.osgi.service.component.annotations.Reference;
 import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.osgi.service.component.annotations.ReferencePolicy;
+import org.quartz.Job;
+import org.quartz.JobDetail;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.Trigger;
+import org.slf4j.Logger;
 
 /**
  * <p>Infers a JVM model from the source model.</p>
@@ -101,11 +109,15 @@
   
   @Inject
   @Extension
-  private SignalModelGenerator sg;
+  private AnnotationExtension _annotationExtension;
   
   @Inject
   @Extension
-  private AnnotationExtension _annotationExtension;
+  private DataDSLJvmModelInferrer df;
+  
+  @Inject
+  @Extension
+  private DataDSLValidator dv;
   
   private HashSet<String> operationlist;
   
@@ -121,282 +133,295 @@
    */
   protected void _infer(final SignalPackage signalPackage, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
     final String pckgName = signalPackage.getName();
-    EList<SignalWatcher> _watchers = signalPackage.getWatchers();
-    for (final SignalWatcher watcher : _watchers) {
+    EList<SignalDefinition> _signals = signalPackage.getSignals();
+    for (final SignalDefinition signal : _signals) {
       {
-        JvmGenericType watcherClass = this._jvmTypesBuilder.toClass(watcher, this._iQualifiedNameProvider.getFullyQualifiedName(watcher));
-        String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
-        String _plus = (_firstUpper + "Watcher");
-        watcherClass.setSimpleName(_plus);
-        watcherClass.setPackageName(pckgName);
-        final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
-          EList<JvmTypeReference> _superTypes = it.getSuperTypes();
-          JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(OSBPSignalWatcher.class);
-          this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+        JvmGenericType signalClass = this._jvmTypesBuilder.toClass(signal, this._iQualifiedNameProvider.getFullyQualifiedName(signal));
+        if ((signal instanceof SignalWatcher)) {
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          String _plus = (_firstUpper + "Watcher");
+          signalClass.setSimpleName(_plus);
+          JvmGenericType signalWatcherJobClass = this._jvmTypesBuilder.toClass(signal, this._iQualifiedNameProvider.getFullyQualifiedName(signal));
+          String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          String _plus_1 = (_firstUpper_1 + "WatcherJob");
+          signalWatcherJobClass.setSimpleName(_plus_1);
+          signalWatcherJobClass.setPackageName(pckgName);
+          final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
+            EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+            JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(WatcherJobImpl.class);
+            this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+            String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+            String _plus_2 = ("Implements the list of tasks of " + _firstUpper_2);
+            String _plus_3 = (_plus_2 + "Watcher to be executed.");
+            this._jvmTypesBuilder.setDocumentation(it, _plus_3);
+            this.toWatcherJobFields(it, ((SignalWatcher)signal));
+            this.toWatcherJobOperations(it, ((SignalWatcher)signal));
+          };
+          acceptor.<JvmGenericType>accept(signalWatcherJobClass, _function);
+        } else {
+          if ((signal instanceof SignalScheduler)) {
+            String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            String _plus_2 = (_firstUpper_2 + "Scheduler");
+            signalClass.setSimpleName(_plus_2);
+            JvmGenericType signalSchedulerJobClass = this._jvmTypesBuilder.toClass(signal, this._iQualifiedNameProvider.getFullyQualifiedName(signal));
+            String _firstUpper_3 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            String _plus_3 = (_firstUpper_3 + "SchedulerJob");
+            signalSchedulerJobClass.setSimpleName(_plus_3);
+            signalSchedulerJobClass.setPackageName(pckgName);
+            final Procedure1<JvmGenericType> _function_1 = (JvmGenericType it) -> {
+              EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+              JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerJobImpl.class);
+              this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+              String _firstUpper_4 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+              String _plus_4 = ("Implements the list of tasks of " + _firstUpper_4);
+              String _plus_5 = (_plus_4 + "Scheduler to be executed.");
+              this._jvmTypesBuilder.setDocumentation(it, _plus_5);
+              this.toSchedulerJobFields(it, ((SignalScheduler)signal));
+              this.toSchedulerJobOperations(it, ((SignalScheduler)signal));
+            };
+            acceptor.<JvmGenericType>accept(signalSchedulerJobClass, _function_1);
+          }
+        }
+        signalClass.setPackageName(pckgName);
+        final Procedure1<JvmGenericType> _function_2 = (JvmGenericType it) -> {
+          if ((signal instanceof SignalWatcher)) {
+            EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+            JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(WatcherImpl.class);
+            this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+          } else {
+            if ((signal instanceof SignalScheduler)) {
+              EList<JvmTypeReference> _superTypes_1 = it.getSuperTypes();
+              JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(SchedulerImpl.class);
+              this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_1, _typeRef_1);
+              EList<JvmTypeReference> _superTypes_2 = it.getSuperTypes();
+              JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(Job.class);
+              this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_2, _typeRef_2);
+            }
+          }
           JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Component.class);
           this._annotationExtension.addAnnAttr(annotationRef, signalPackage, "immediate", Boolean.TRUE);
           EList<JvmAnnotationReference> _annotations = it.getAnnotations();
           this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
           this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(signalPackage));
-          this.toWatcherFields(it, watcher);
-          this.toWatcherConstructor(it, watcher);
-          this.toWatcherOperations(it, watcher);
-          this.toBinderOperations(it, watcher);
+          this.toFields(it, signal);
+          this.toConstructor(it, signal);
+          this.toOperations(it, signal);
+          this.toBinderOperations(it, signal);
         };
-        acceptor.<JvmGenericType>accept(watcherClass, _function);
+        acceptor.<JvmGenericType>accept(signalClass, _function_2);
       }
     }
-    JvmGenericType watcherConfiguration = this._jvmTypesBuilder.toClass(signalPackage, this._iQualifiedNameProvider.getFullyQualifiedName(signalPackage));
-    watcherConfiguration.setSimpleName("WatcherConfigurations");
-    watcherConfiguration.setPackageName(pckgName);
-    watcherConfiguration.setAbstract(true);
-    final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
-      this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(signalPackage));
-      this.toConfigOperations(it, signalPackage);
-    };
-    acceptor.<JvmGenericType>accept(watcherConfiguration, _function);
   }
   
-  public void toConfigOperations(final JvmGenericType type, final SignalPackage pck) {
+  public void toSchedulerJobOperations(final JvmGenericType type, final SignalScheduler signal) {
     EList<JvmMember> _members = type.getMembers();
-    final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
-      it.setVisibility(JvmVisibility.PUBLIC);
-      this._jvmTypesBuilder.setDocumentation(it, "Initializes all watcher configurations of this package.");
-      it.setStatic(true);
+    final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+      JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+      EList<JvmFormalParameter> _parameters_3 = it.getParameters();
+      JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
+      EList<JvmFormalParameter> _parameters_4 = it.getParameters();
+      JvmFormalParameter _parameter_4 = this._jvmTypesBuilder.toParameter(signal, "schedulerid", this._typeReferenceBuilder.typeRef(String.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_4, _parameter_4);
       final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        String _initConfigurations = this.initConfigurations(pck);
-        _builder.append(_initConfigurations);
+        _builder.append("this.persistenceService = persistenceService;");
+        _builder.newLine();
+        _builder.append("this.dataInterchange = dataInterchange;");
+        _builder.newLine();
+        _builder.append("this.blobService = blobService;");
+        _builder.newLine();
+        _builder.append("this.eventDispatcher = eventDispatcher;");
+        _builder.newLine();
+        _builder.append("setSchedulerId(schedulerid);");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_1);
     };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(pck, "init", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(signal, _function);
+    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
+    EList<JvmMember> _members_1 = type.getMembers();
+    final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _executeSchedulerTasksList = this.executeSchedulerTasksList(signal);
+        _builder.append(_executeSchedulerTasksList);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_2);
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, "executeListOfTasks", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method);
+    HashSet<String> _hashSet = new HashSet<String>();
+    this.operationlist = _hashSet;
+    EList<SignalDatainterchange> _interchanges = signal.getInterchanges();
+    for (final SignalDatainterchange interchange : _interchanges) {
+      this.createSchedulerInterchangeOperations(type, signal, interchange);
+    }
   }
   
-  public String initConfigurations(final SignalPackage pck) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("OSBPSignalCommonData.initWatcherconfigurations();");
-    _builder.newLine();
-    String result = _builder.toString();
-    EList<SignalWatcher> _watchers = pck.getWatchers();
-    for (final SignalWatcher watcher : _watchers) {
-      {
-        StringConcatenation _builder_1 = new StringConcatenation();
-        String _name = pck.getName();
-        _builder_1.append(_name);
-        _builder_1.append(".");
-        String _name_1 = watcher.getName();
-        _builder_1.append(_name_1);
-        final String watchername = _builder_1.toString();
-        StringConcatenation _builder_2 = new StringConcatenation();
-        _builder_2.append("OSBPSignalCommonData.addWatcherConfig(\"");
-        _builder_2.append((watchername + OSBPSignalConstants.DIRECTORY));
-        _builder_2.append("\",\"");
-        String _directory = watcher.getDirectory();
-        _builder_2.append(_directory);
-        _builder_2.append("\");");
-        _builder_2.newLineIfNotEmpty();
-        result = result.concat(_builder_2.toString());
-        EList<SignalHandler> _handlers = watcher.getHandlers();
-        for (final SignalHandler handler : _handlers) {
-          TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-          if ((_triggerpolicy instanceof TriggerFile)) {
-            StringConcatenation _builder_3 = new StringConcatenation();
-            _builder_3.append("OSBPSignalCommonData.addWatcherConfig(\"");
-            _builder_3.append(watchername);
-            _builder_3.append(".handler.");
-            String _string = handler.getName().toString();
-            String _plus = (_string + OSBPSignalConstants.FILE_TRIGGER);
-            _builder_3.append(_plus);
-            _builder_3.append("\", \"");
-            TriggerPolicy _triggerpolicy_1 = handler.getTriggerpolicy();
-            String _filemask = ((TriggerFile) _triggerpolicy_1).getFilemask();
-            _builder_3.append(_filemask);
-            _builder_3.append("\");");
-            _builder_3.newLineIfNotEmpty();
-            result = result.concat(_builder_3.toString());
-          } else {
-            TriggerPolicy _triggerpolicy_2 = handler.getTriggerpolicy();
-            final SignalScheduler signal = ((SignalScheduler) _triggerpolicy_2);
-            Scheduler _scheduler = signal.getScheduler();
-            if ((_scheduler instanceof CronScheduler)) {
-              StringConcatenation _builder_4 = new StringConcatenation();
-              _builder_4.append("OSBPSignalCommonData.addWatcherConfig(\"");
-              _builder_4.append(watchername);
-              _builder_4.append(".handler.");
-              String _string_1 = handler.getName().toString();
-              String _plus_1 = (_string_1 + OSBPSignalConstants.CRON_SCHEDULER);
-              _builder_4.append(_plus_1);
-              _builder_4.append("\", \"");
-              Scheduler _scheduler_1 = signal.getScheduler();
-              String _expression = ((CronScheduler) _scheduler_1).getExpression();
-              _builder_4.append(_expression);
-              _builder_4.append("\");");
-              _builder_4.newLineIfNotEmpty();
-              result = result.concat(_builder_4.toString());
-            } else {
-              Scheduler _scheduler_2 = signal.getScheduler();
-              if ((_scheduler_2 instanceof HourlyScheduler)) {
-                StringConcatenation _builder_5 = new StringConcatenation();
-                _builder_5.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                _builder_5.append(watchername);
-                _builder_5.append(".handler.");
-                String _string_2 = handler.getName().toString();
-                String _plus_2 = (_string_2 + OSBPSignalConstants.HOURLY_SCHEDULER);
-                _builder_5.append(_plus_2);
-                _builder_5.append("\",\"");
-                Scheduler _scheduler_3 = signal.getScheduler();
-                int _minute = ((HourlyScheduler) _scheduler_3).getMinute();
-                _builder_5.append(_minute);
-                _builder_5.append("\");");
-                _builder_5.newLineIfNotEmpty();
-                result = result.concat(_builder_5.toString());
-              } else {
-                Scheduler _scheduler_4 = signal.getScheduler();
-                if ((_scheduler_4 instanceof DailyScheduler)) {
-                  Scheduler _scheduler_5 = signal.getScheduler();
-                  DailyScheduler daily = ((DailyScheduler) _scheduler_5);
-                  StringConcatenation _builder_6 = new StringConcatenation();
-                  _builder_6.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                  _builder_6.append(watchername);
-                  _builder_6.append(".handler.");
-                  String _string_3 = handler.getName().toString();
-                  String _plus_3 = (_string_3 + OSBPSignalConstants.DAILY_SCHEDULER_HOUR);
-                  _builder_6.append(_plus_3);
-                  _builder_6.append("\", \"");
-                  String _string_4 = Integer.valueOf(daily.getHour()).toString();
-                  _builder_6.append(_string_4);
-                  _builder_6.append("\");");
-                  _builder_6.newLineIfNotEmpty();
-                  result = result.concat(_builder_6.toString());
-                  StringConcatenation _builder_7 = new StringConcatenation();
-                  _builder_7.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                  _builder_7.append(watchername);
-                  _builder_7.append(".handler.");
-                  String _string_5 = handler.getName().toString();
-                  String _plus_4 = (_string_5 + OSBPSignalConstants.DAILY_SCHEDULER_MIN);
-                  _builder_7.append(_plus_4);
-                  _builder_7.append("\", \"");
-                  String _string_6 = Integer.valueOf(daily.getMinute()).toString();
-                  _builder_7.append(_string_6);
-                  _builder_7.append("\");");
-                  _builder_7.newLineIfNotEmpty();
-                  result = result.concat(_builder_7.toString());
-                } else {
-                  Scheduler _scheduler_6 = signal.getScheduler();
-                  if ((_scheduler_6 instanceof WeeklyScheduler)) {
-                    Scheduler _scheduler_7 = signal.getScheduler();
-                    WeeklyScheduler weekly = ((WeeklyScheduler) _scheduler_7);
-                    StringConcatenation _builder_8 = new StringConcatenation();
-                    _builder_8.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                    _builder_8.append(watchername);
-                    _builder_8.append(".handler.");
-                    String _string_7 = handler.getName().toString();
-                    String _plus_5 = (_string_7 + OSBPSignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK);
-                    _builder_8.append(_plus_5);
-                    _builder_8.append("\", \"");
-                    DayOfWeekEnum _dayofweek = weekly.getDayofweek();
-                    _builder_8.append(_dayofweek);
-                    _builder_8.append("\");");
-                    _builder_8.newLineIfNotEmpty();
-                    result = result.concat(_builder_8.toString());
-                    StringConcatenation _builder_9 = new StringConcatenation();
-                    _builder_9.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                    _builder_9.append(watchername);
-                    _builder_9.append(".handler.");
-                    String _string_8 = handler.getName().toString();
-                    String _plus_6 = (_string_8 + OSBPSignalConstants.WEEKLY_SCHEDULER_HOUR);
-                    _builder_9.append(_plus_6);
-                    _builder_9.append("\", \"");
-                    String _string_9 = Integer.valueOf(weekly.getHour()).toString();
-                    _builder_9.append(_string_9);
-                    _builder_9.append("\");");
-                    _builder_9.newLineIfNotEmpty();
-                    result = result.concat(_builder_9.toString());
-                    StringConcatenation _builder_10 = new StringConcatenation();
-                    _builder_10.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                    _builder_10.append(watchername);
-                    _builder_10.append(".handler.");
-                    String _string_10 = handler.getName().toString();
-                    String _plus_7 = (_string_10 + OSBPSignalConstants.WEEKLY_SCHEDULER_MIN);
-                    _builder_10.append(_plus_7);
-                    _builder_10.append("\", \"");
-                    String _string_11 = Integer.valueOf(weekly.getMinute()).toString();
-                    _builder_10.append(_string_11);
-                    _builder_10.append("\");");
-                    _builder_10.newLineIfNotEmpty();
-                    result = result.concat(_builder_10.toString());
-                  } else {
-                    Scheduler _scheduler_8 = signal.getScheduler();
-                    if ((_scheduler_8 instanceof MonthlyScheduler)) {
-                      Scheduler _scheduler_9 = signal.getScheduler();
-                      MonthlyScheduler monthly = ((MonthlyScheduler) _scheduler_9);
-                      StringConcatenation _builder_11 = new StringConcatenation();
-                      _builder_11.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                      _builder_11.append(watchername);
-                      _builder_11.append(".handler.");
-                      String _string_12 = handler.getName().toString();
-                      String _plus_8 = (_string_12 + OSBPSignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH);
-                      _builder_11.append(_plus_8);
-                      _builder_11.append("\", \"");
-                      String _string_13 = Integer.valueOf(monthly.getDayofmonth()).toString();
-                      _builder_11.append(_string_13);
-                      _builder_11.append("\");");
-                      _builder_11.newLineIfNotEmpty();
-                      result = result.concat(_builder_11.toString());
-                      StringConcatenation _builder_12 = new StringConcatenation();
-                      _builder_12.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                      _builder_12.append(watchername);
-                      _builder_12.append(".handler.");
-                      String _string_14 = handler.getName().toString();
-                      String _plus_9 = (_string_14 + OSBPSignalConstants.MONTHLY_SCHEDULER_HOUR);
-                      _builder_12.append(_plus_9);
-                      _builder_12.append("\", \"");
-                      String _string_15 = Integer.valueOf(monthly.getHour()).toString();
-                      _builder_12.append(_string_15);
-                      _builder_12.append("\");");
-                      _builder_12.newLineIfNotEmpty();
-                      result = result.concat(_builder_12.toString());
-                      StringConcatenation _builder_13 = new StringConcatenation();
-                      _builder_13.append("OSBPSignalCommonData.addWatcherConfig(\"");
-                      _builder_13.append(watchername);
-                      _builder_13.append(".handler.");
-                      String _string_16 = handler.getName().toString();
-                      String _plus_10 = (_string_16 + OSBPSignalConstants.MONTHLY_SCHEDULER_MIN);
-                      _builder_13.append(_plus_10);
-                      _builder_13.append("\", \"");
-                      String _string_17 = Integer.valueOf(monthly.getMinute()).toString();
-                      _builder_13.append(_string_17);
-                      _builder_13.append("\");");
-                      _builder_13.newLineIfNotEmpty();
-                      result = result.concat(_builder_13.toString());
-                    }
-                  }
-                }
-              }
-            }
-          }
+  public void toSchedulerJobFields(final JvmGenericType type, final SignalScheduler signal) {
+    JvmField field = null;
+    field = this._jvmTypesBuilder.toField(signal, "log", this._typeReferenceBuilder.typeRef(Logger.class));
+    field.setVisibility(JvmVisibility.PRIVATE);
+    this._jvmTypesBuilder.setDocumentation(field, "the log");
+    StringConcatenationClient _client = new StringConcatenationClient() {
+      @Override
+      protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) {
+        _builder.append("LoggerFactory.getLogger(\"signal\")");
+      }
+    };
+    this._jvmTypesBuilder.setInitializer(field, _client);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+    field = this._jvmTypesBuilder.toField(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+    field = this._jvmTypesBuilder.toField(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_2 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
+    field = this._jvmTypesBuilder.toField(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_3 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
+    field = this._jvmTypesBuilder.toField(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_4 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
+  }
+  
+  public void toWatcherJobOperations(final JvmGenericType type, final SignalWatcher signal) {
+    EList<JvmMember> _members = type.getMembers();
+    final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+      JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+      EList<JvmFormalParameter> _parameters_3 = it.getParameters();
+      JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
+      EList<JvmFormalParameter> _parameters_4 = it.getParameters();
+      JvmFormalParameter _parameter_4 = this._jvmTypesBuilder.toParameter(signal, "file", this._typeReferenceBuilder.typeRef(Path.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_4, _parameter_4);
+      EList<JvmFormalParameter> _parameters_5 = it.getParameters();
+      JvmFormalParameter _parameter_5 = this._jvmTypesBuilder.toParameter(signal, "watcherid", this._typeReferenceBuilder.typeRef(String.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_5, _parameter_5);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("this.persistenceService = persistenceService;");
+        _builder.newLine();
+        _builder.append("this.dataInterchange = dataInterchange;");
+        _builder.newLine();
+        _builder.append("this.blobService = blobService;");
+        _builder.newLine();
+        _builder.append("this.eventDispatcher = eventDispatcher;");
+        _builder.newLine();
+        CharSequence _xifexpression = null;
+        WatcherDefinition _definition = signal.getDefinition();
+        if ((_definition instanceof WatcherWithFileMask)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("setParallelJobExecutionAllowed(true);");
+          _xifexpression = _builder_1;
         }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
+        _builder.append("setTriggerfile(file);");
+        _builder.newLine();
+        _builder.append("setWatcherId(watcherid);");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
+    };
+    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(signal, _function);
+    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
+    EList<JvmMember> _members_1 = type.getMembers();
+    final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _executeWatcherTasksList = this.executeWatcherTasksList(((SignalWatcher) signal));
+        _builder.append(_executeWatcherTasksList);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_2);
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, "executeListOfTasks", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method);
+    HashSet<String> _hashSet = new HashSet<String>();
+    this.operationlist = _hashSet;
+    WatcherDefinition watcher = signal.getDefinition();
+    if ((watcher instanceof WatcherWithFileMask)) {
+      this.createWatcherInterchangeOperations(type, signal, ((WatcherWithFileMask)watcher).getInterchange());
+    }
+    if ((watcher instanceof WatcherWithFileName)) {
+      EList<SignalDatainterchange> _interchanges = ((WatcherWithFileName)watcher).getInterchanges();
+      for (final SignalDatainterchange interchange : _interchanges) {
+        this.createWatcherInterchangeOperations(type, signal, interchange);
       }
     }
-    StringConcatenation _builder_1 = new StringConcatenation();
-    _builder_1.append("if(OSBPSignalCommonData.createOrUpdateConfigurationFile()){");
-    _builder_1.newLine();
-    _builder_1.append("    ");
-    _builder_1.append("OSBPSignalCommonData.setConfigReady(\"");
-    QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pck);
-    _builder_1.append(_fullyQualifiedName, "    ");
-    _builder_1.append("\", true);");
-    _builder_1.newLineIfNotEmpty();
-    _builder_1.append("}");
-    _builder_1.newLine();
-    result = result.concat(_builder_1.toString());
-    return result;
   }
   
-  public void toBinderOperations(final JvmGenericType type, final SignalWatcher watcher) {
+  public void toWatcherJobFields(final JvmGenericType type, final SignalWatcher signal) {
+    JvmField field = null;
+    field = this._jvmTypesBuilder.toField(signal, "log", this._typeReferenceBuilder.typeRef(Logger.class));
+    field.setVisibility(JvmVisibility.PRIVATE);
+    this._jvmTypesBuilder.setDocumentation(field, "the log");
+    StringConcatenationClient _client = new StringConcatenationClient() {
+      @Override
+      protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) {
+        _builder.append("LoggerFactory.getLogger(\"signal\")");
+      }
+    };
+    this._jvmTypesBuilder.setInitializer(field, _client);
+    EList<JvmMember> _members = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
+    field = this._jvmTypesBuilder.toField(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_1 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
+    field = this._jvmTypesBuilder.toField(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_2 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
+    field = this._jvmTypesBuilder.toField(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_3 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
+    field = this._jvmTypesBuilder.toField(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
+    EList<JvmMember> _members_4 = type.getMembers();
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
+  }
+  
+  public void toBinderOperations(final JvmGenericType type, final SignalDefinition signal) {
     EList<JvmMember> _members = type.getMembers();
     final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
@@ -408,7 +433,7 @@
       };
       this._jvmTypesBuilder.setBody(it, _function_1);
     };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "getDataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class), _function);
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, "getDataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class), _function);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
     EList<JvmMember> _members_1 = type.getMembers();
     final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
@@ -421,7 +446,7 @@
       };
       this._jvmTypesBuilder.setBody(it, _function_2);
     };
-    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "getBlobService", this._typeReferenceBuilder.typeRef(IBlobService.class), _function_1);
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(signal, "getBlobService", this._typeReferenceBuilder.typeRef(IBlobService.class), _function_1);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
     EList<JvmMember> _members_2 = type.getMembers();
     final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
@@ -429,12 +454,12 @@
       it.setStatic(true);
       final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("return persistenceService;");
+        _builder.append("return eventDispatcher;");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_3);
     };
-    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "getPersistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class), _function_2);
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(signal, "getEventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class), _function_2);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
     EList<JvmMember> _members_3 = type.getMembers();
     final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
@@ -442,573 +467,984 @@
       it.setStatic(true);
       final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("return userAccessService;");
+        _builder.append("return persistenceService;");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_4);
     };
-    JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "getUserAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class), _function_3);
+    JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(signal, "getPersistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class), _function_3);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
     EList<JvmMember> _members_4 = type.getMembers();
     final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
       JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "cardinality", ReferenceCardinality.MANDATORY);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "policy", ReferencePolicy.STATIC);
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         _builder.append("this.dataInterchange = dataInterchange;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal DataInterchange bound\");");
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - DataInterchange bound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - DataInterchange bound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_5);
     };
-    JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "bindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4);
+    JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(signal, "bindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
     EList<JvmMember> _members_5 = type.getMembers();
     final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         _builder.append("this.dataInterchange = null;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal DataInterchange unbound\");");
-        _builder.newLine();
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - DataInterchange unbound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - DataInterchange unbound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_6);
     };
-    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "unbindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
+    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(signal, "unbindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
     EList<JvmMember> _members_6 = type.getMembers();
     final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
       JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "cardinality", ReferenceCardinality.MANDATORY);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "policy", ReferencePolicy.STATIC);
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         _builder.append("this.blobService = blobService;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal BlobService bound\");");
-        _builder.newLine();
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - BlobService bound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - BlobService bound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_7);
     };
-    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(watcher, "bindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
+    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(signal, "bindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
     EList<JvmMember> _members_7 = type.getMembers();
     final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         _builder.append("this.blobService = null;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal BlobService unbound\");");
-        _builder.newLine();
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - BlobService unbound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - BlobService unbound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_8);
     };
-    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(watcher, "unbindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
+    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(signal, "unbindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
     EList<JvmMember> _members_8 = type.getMembers();
     final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
       JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "cardinality", ReferenceCardinality.MANDATORY);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "policy", ReferencePolicy.STATIC);
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.persistenceService = persistenceService;");
+        _builder.append("this.eventDispatcher = eventDispatcher;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal PersistenceService bound\");");
-        _builder.newLine();
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - EventDispatcher bound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - EventDispatcher bound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_9);
     };
-    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(watcher, "bindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
+    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(signal, "bindEventDispatcher", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
     EList<JvmMember> _members_9 = type.getMembers();
     final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.persistenceService = null;");
+        _builder.append("this.eventDispatcher = null;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal PersistenceService unbound\");");
-        _builder.newLine();
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - EventDispatcher unbound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - EventDispatcher unbound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_10);
     };
-    JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(watcher, "unbindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
+    JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(signal, "unbindEventDispatcher", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
     EList<JvmMember> _members_10 = type.getMembers();
     final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
       JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "cardinality", ReferenceCardinality.MANDATORY);
+      this._annotationExtension.addAnnAttr(annotationRef, signal, "policy", ReferencePolicy.STATIC);
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.userAccessService = userAccessService;");
+        _builder.append("this.persistenceService = persistenceService;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal UserAccessService bound\");");
-        _builder.newLine();
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - PersistenceService bound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - PersistenceService bound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_11);
     };
-    JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(watcher, "bindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
+    JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(signal, "bindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
     EList<JvmMember> _members_11 = type.getMembers();
     final Procedure1<JvmOperation> _function_11 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_12 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.userAccessService = null;");
+        _builder.append("this.persistenceService = null;");
         _builder.newLine();
-        _builder.append("log.info(\"Signal UserAccessService unbound\");");
+        CharSequence _xifexpression = null;
+        if ((signal instanceof SignalWatcher)) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("log.info(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_1.append(_firstUpper);
+          _builder_1.append("Watcher - PersistenceService unbound\");");
+          _xifexpression = _builder_1;
+        } else {
+          CharSequence _xifexpression_1 = null;
+          if ((signal instanceof SignalScheduler)) {
+            StringConcatenation _builder_2 = new StringConcatenation();
+            _builder_2.append("log.info(\"");
+            String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+            _builder_2.append(_firstUpper_1);
+            _builder_2.append("Scheduler - PersistenceService unbound\");");
+            _xifexpression_1 = _builder_2;
+          }
+          _xifexpression = _xifexpression_1;
+        }
+        _builder.append(_xifexpression);
+        _builder.newLineIfNotEmpty();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_12);
     };
-    JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(watcher, "unbindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_11);
+    JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(signal, "unbindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_11);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, _method_11);
   }
   
-  public String getFileURL(final DataInterchange dataInterchange) {
-    DataInterchangeFile _fileEndpoint = dataInterchange.getFileEndpoint();
-    boolean _matched = false;
-    if (_fileEndpoint instanceof DataInterchangeFileXML) {
-      _matched=true;
-      DataInterchangeFile _fileEndpoint_1 = dataInterchange.getFileEndpoint();
-      return ((DataInterchangeFileXML) _fileEndpoint_1).getFileURL();
-    }
-    if (!_matched) {
-      if (_fileEndpoint instanceof DataInterchangeFileCSV) {
-        _matched=true;
-        DataInterchangeFile _fileEndpoint_1 = dataInterchange.getFileEndpoint();
-        return ((DataInterchangeFileCSV) _fileEndpoint_1).getFileURL();
-      }
-    }
-    if (!_matched) {
-      if (_fileEndpoint instanceof DataInterchangeFileEDI) {
-        _matched=true;
-        DataInterchangeFile _fileEndpoint_1 = dataInterchange.getFileEndpoint();
-        return ((DataInterchangeFileEDI) _fileEndpoint_1).getFileURL();
-      }
-    }
-    return "";
-  }
-  
-  public String getDefaultVariableName(final DataInterchange dataInterchange) {
-    return StringExtensions.toFirstLower(dataInterchange.getName());
-  }
-  
-  public String getBasicRunConfiguration(final String watcherfullQName, final DataInterchange dataInterchange, final boolean fqClass, final WorkerThreadRunnable.Direction direction, final boolean asynch) {
-    String className = "";
-    if (fqClass) {
-      className = this._iQualifiedNameProvider.getFullyQualifiedName(dataInterchange).toString();
-    } else {
-      className = dataInterchange.getName();
-    }
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append(className);
-    _builder.append(" ");
-    String _defaultVariableName = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName);
-    _builder.append(" = new ");
-    _builder.append(className);
-    _builder.append("();");
-    _builder.newLineIfNotEmpty();
-    _builder.append("String url = getHandlerPropertyFromConfigurationFile(directorykey);");
-    _builder.newLine();
-    String _defaultVariableName_1 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_1);
-    _builder.append(".setFileURL(checkPath(url != null ? url : getWatcherConfig(directorykey)) + filename);");
-    _builder.newLineIfNotEmpty();
-    String _defaultVariableName_2 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_2);
-    _builder.append(".setPersistenceService(persistenceService);");
-    _builder.newLineIfNotEmpty();
-    String _defaultVariableName_3 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_3);
-    _builder.append(".setDataInterchange(dataInterchange);");
-    _builder.newLineIfNotEmpty();
-    String _defaultVariableName_4 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_4);
-    _builder.append(".setBlobService(blobService);");
-    _builder.newLineIfNotEmpty();
-    CharSequence _xifexpression = null;
-    boolean _equals = direction.equals(WorkerThreadRunnable.Direction.IMPORT);
-    if (_equals) {
-      StringConcatenation _builder_1 = new StringConcatenation();
-      String _defaultVariableName_5 = this.getDefaultVariableName(dataInterchange);
-      _builder_1.append(_defaultVariableName_5);
-      _builder_1.append(".setDeleteFileAfterImport(");
-      boolean _isDeleteFileAfterImport = dataInterchange.isDeleteFileAfterImport();
-      _builder_1.append(_isDeleteFileAfterImport);
-      _builder_1.append(");");
-      _xifexpression = _builder_1;
-    }
-    _builder.append(_xifexpression);
-    _builder.newLineIfNotEmpty();
-    String _defaultVariableName_6 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_6);
-    _builder.append(".setDirection(WorkerThreadRunnable.Direction.");
-    String _upperCase = direction.name().toUpperCase();
-    _builder.append(_upperCase);
-    _builder.append(");");
-    _builder.newLineIfNotEmpty();
-    _builder.append("return ");
-    String _defaultVariableName_7 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_7);
-    _builder.append(";");
-    _builder.newLineIfNotEmpty();
-    return _builder.toString();
-  }
-  
-  public void toWatcherOperations(final JvmGenericType type, final SignalWatcher watcher) {
-    EList<JvmMember> _members = type.getMembers();
-    final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
-      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
-        StringConcatenation _builder = new StringConcatenation();
-        String _executeWatcherService = this.getExecuteWatcherService(watcher);
-        _builder.append(_executeWatcherService);
-        it_1.append(_builder);
-      };
-      this._jvmTypesBuilder.setBody(it, _function_1);
-    };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "executeWatcherService", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
-    EList<JvmMember> _members_1 = type.getMembers();
-    final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
-      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
-        StringConcatenation _builder = new StringConcatenation();
-        String _initTasksLists = this.initTasksLists(watcher);
-        _builder.append(_initTasksLists);
-        it_1.append(_builder);
-      };
-      this._jvmTypesBuilder.setBody(it, _function_2);
-    };
-    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "initTasksLists", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
-    boolean _hasHandlers = this.hasHandlers(watcher);
-    if (_hasHandlers) {
-      EList<JvmMember> _members_2 = type.getMembers();
-      final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
-        this._jvmTypesBuilder.setDocumentation(it, "Sets or updates the list of file masks of all file mask based handlers, if an external configuration file exists and has been changed on runtime.");
-        final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
-          StringConcatenation _builder = new StringConcatenation();
-          String _updateOrSetHandlerConfiguration = this.updateOrSetHandlerConfiguration(watcher);
-          _builder.append(_updateOrSetHandlerConfiguration);
-          it_1.append(_builder);
-        };
-        this._jvmTypesBuilder.setBody(it, _function_3);
-      };
-      JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "updateOrSetHandlerConfiguration", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
-      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
-      EList<JvmMember> _members_3 = type.getMembers();
-      final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
+  public void toOperations(final JvmGenericType type, final SignalDefinition signal) {
+    if ((signal instanceof SignalWatcher)) {
+      EList<JvmMember> _members = type.getMembers();
+      final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
         EList<JvmAnnotationReference> _annotations = it.getAnnotations();
         JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
         this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
         EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "file", this._typeReferenceBuilder.typeRef(Path.class));
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "file", this._typeReferenceBuilder.typeRef(Path.class));
         this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
+        final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
           StringConcatenation _builder = new StringConcatenation();
-          String _handleEvent = this.handleEvent(watcher);
+          String _handleEvent = this.handleEvent(signal);
           _builder.append(_handleEvent);
           it_1.append(_builder);
         };
+        this._jvmTypesBuilder.setBody(it, _function_1);
+      };
+      JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, "handleEvent", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+      EList<JvmMember> _members_1 = type.getMembers();
+      final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+        final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          String _executeService = this.getExecuteService(signal);
+          _builder.append(_executeService);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_2);
+      };
+      JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(signal, "executeWatcherService", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+    }
+    if ((signal instanceof SignalScheduler)) {
+      EList<JvmMember> _members_2 = type.getMembers();
+      final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("Starts the {@link #scheduler}.");
+        this._jvmTypesBuilder.setDocumentation(it, _builder.toString());
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          String _startScheduler = this.startScheduler(((SignalScheduler)signal));
+          _builder_1.append(_startScheduler);
+          it_1.append(_builder_1);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_3);
+      };
+      JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(signal, "startScheduler", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
+      EList<JvmMember> _members_3 = type.getMembers();
+      final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("Halts the Scheduler\'s firing of Triggers, and cleans up all resources associated with the Scheduler.");
+        _builder.newLine();
+        _builder.append("@param waitForJobsToComplete whether or not the scheduler shuts down immediately or wait for jobs to finish.");
+        _builder.newLine();
+        _builder.append("@throws SchedulerException");
+        this._jvmTypesBuilder.setDocumentation(it, _builder.toString());
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "waitForJobsToComplete", this._typeReferenceBuilder.typeRef(boolean.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          String _shutdownScheduler = this.shutdownScheduler(((SignalScheduler)signal));
+          _builder_1.append(_shutdownScheduler);
+          it_1.append(_builder_1);
+        };
         this._jvmTypesBuilder.setBody(it, _function_4);
       };
-      JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "handleEvent", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3);
+      JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(signal, "shutdownScheduler", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3);
       this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
-    }
-    HashSet<String> _hashSet = new HashSet<String>();
-    this.operationlist = _hashSet;
-    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
-      EList<SignalHandler> _handlers = watcher.getHandlers();
-      for (final SignalHandler handler : _handlers) {
-        EList<SignalDatainterchange> _interchanges = handler.getInterchanges();
-        for (final SignalDatainterchange interchange : _interchanges) {
-          this.createAppropriateInterchangeOperations(type, watcher, interchange);
-        }
-      }
-    }
-    boolean _hasSchedulers = this.hasSchedulers(watcher);
-    if (_hasSchedulers) {
       EList<JvmMember> _members_4 = type.getMembers();
       final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("Schedules a given job based on a given trigger.");
+        _builder.newLine();
+        _builder.append("@param job the {@link JobDetail} to be scheduled");
+        _builder.newLine();
+        _builder.append("@param trigger the corresponding trigger");
+        _builder.newLine();
+        _builder.append("@return");
+        this._jvmTypesBuilder.setDocumentation(it, _builder.toString());
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "job", this._typeReferenceBuilder.typeRef(JobDetail.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+        JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(signal, "trigger", this._typeReferenceBuilder.typeRef(Trigger.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
         final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
-          StringConcatenation _builder = new StringConcatenation();
-          String _scheduleAllJobs = this.scheduleAllJobs(watcher);
-          _builder.append(_scheduleAllJobs);
-          it_1.append(_builder);
+          StringConcatenation _builder_1 = new StringConcatenation();
+          String _scheduleJob = this.scheduleJob(((SignalScheduler)signal));
+          _builder_1.append(_scheduleJob);
+          it_1.append(_builder_1);
         };
         this._jvmTypesBuilder.setBody(it, _function_5);
       };
-      JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "scheduleAllJobs", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4);
+      JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(signal, "scheduleJob", this._typeReferenceBuilder.typeRef(Date.class), _function_4);
       this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
+      EList<JvmMember> _members_5 = type.getMembers();
+      final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SchedulerException.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          String _scheduleAllJobs = this.scheduleAllJobs(((SignalScheduler)signal));
+          _builder.append(_scheduleAllJobs);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_6);
+      };
+      JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(signal, "scheduleAllJobs", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
+      EList<JvmMember> _members_6 = type.getMembers();
+      final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
+        final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          String _executeService = this.getExecuteService(signal);
+          _builder.append(_executeService);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_7);
+      };
+      JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(signal, "executeSchedulerService", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
+      EList<JvmMember> _members_7 = type.getMembers();
+      final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(JobExecutionException.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "context", this._typeReferenceBuilder.typeRef(JobExecutionContext.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        this._jvmTypesBuilder.setDocumentation(it, "Executes the list of tasks as job\'s logic.");
+        final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("new ");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+          _builder.append(_firstUpper);
+          _builder.append("SchedulerJob(persistenceService, dataInterchange, blobService, eventDispatcher, ");
+          _builder.newLineIfNotEmpty();
+          _builder.append("\"");
+          QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(signal);
+          _builder.append(_fullyQualifiedName);
+          _builder.append("Scheduler\").executeListOfTasks();");
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_8);
+      };
+      JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(signal, "execute", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
     }
-    EList<JvmMember> _members_5 = type.getMembers();
-    final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
-      final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
+    EList<JvmMember> _members_8 = type.getMembers();
+    final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
+      this._jvmTypesBuilder.setDocumentation(it, "Gives the property value of the given property name if existing.");
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(signal, "propertyname", this._typeReferenceBuilder.typeRef(String.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("active = false;");
+        String _handlerPropertyFromConfigurationFile = this.handlerPropertyFromConfigurationFile(signal);
+        _builder.append(_handlerPropertyFromConfigurationFile);
         it_1.append(_builder);
       };
-      this._jvmTypesBuilder.setBody(it, _function_6);
+      this._jvmTypesBuilder.setBody(it, _function_9);
     };
-    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "stopThread", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
-    EList<JvmMember> _members_6 = type.getMembers();
-    final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
+    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(signal, "getHandlerPropertyFromConfigurationFile", this._typeReferenceBuilder.typeRef(String.class), _function_8);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
+    EList<JvmMember> _members_9 = type.getMembers();
+    final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Activate.class);
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
+      final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        String _activate = this.getActivate(watcher);
+        String _activate = this.getActivate(signal);
         _builder.append(_activate);
         it_1.append(_builder);
       };
-      this._jvmTypesBuilder.setBody(it, _function_7);
+      this._jvmTypesBuilder.setBody(it, _function_10);
     };
-    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(watcher, "activate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
-    EList<JvmMember> _members_7 = type.getMembers();
-    final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
+    JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(signal, "activate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
+    EList<JvmMember> _members_10 = type.getMembers();
+    final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Deactivate.class);
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
+      final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        String _deactivate = this.getDeactivate(watcher);
+        String _deactivate = this.getDeactivate(signal);
         _builder.append(_deactivate);
         it_1.append(_builder);
       };
-      this._jvmTypesBuilder.setBody(it, _function_8);
+      this._jvmTypesBuilder.setBody(it, _function_11);
     };
-    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(watcher, "deactivate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
+    JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(signal, "deactivate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
   }
   
-  public String handleEvent(final SignalWatcher watcher) {
+  public String scheduleJob(final SignalScheduler scheduler) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("updateOrSetHandlerConfiguration();");
-    _builder.newLine();
-    _builder.append("String handlername = isFileNameValid(file.getFileName().toString());");
-    _builder.newLine();
-    _builder.append("if(handlername != null){");
+    _builder.append("try {");
     _builder.newLine();
     _builder.append("\t");
-    _builder.append("switch (handlername) {");
+    _builder.append("return scheduler.scheduleJob(job, trigger);");
     _builder.newLine();
-    String result = _builder.toString();
-    EList<SignalHandler> _handlers = watcher.getHandlers();
-    for (final SignalHandler handler : _handlers) {
-      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-      if ((_triggerpolicy instanceof TriggerFile)) {
-        StringConcatenation _builder_1 = new StringConcatenation();
-        CharSequence _xifexpression = null;
-        boolean _equals = handler.getExecutiontype().equals(SignalExecutionTypeEnum.NOSEQ);
-        if (_equals) {
-          StringConcatenation _builder_2 = new StringConcatenation();
-          _builder_2.append("\t\t");
-          _builder_2.append("case \"");
-          String _name = handler.getName();
-          _builder_2.append(_name, "\t\t");
-          _builder_2.append("\": super.executeTasksParallel(\"");
-          String _name_1 = handler.getName();
-          _builder_2.append(_name_1, "\t\t");
-          _builder_2.append("\", file); break;");
-          _xifexpression = _builder_2;
-        } else {
-          StringConcatenation _builder_3 = new StringConcatenation();
-          _builder_3.append("\t\t");
-          _builder_3.append("case \"");
-          String _name_2 = handler.getName();
-          _builder_3.append(_name_2, "\t\t");
-          _builder_3.append("\": super.executeTasksSequentially(\"");
-          String _name_3 = handler.getName();
-          _builder_3.append(_name_3, "\t\t");
-          _builder_3.append("\", file); break;");
-          _xifexpression = _builder_3;
-        }
-        _builder_1.append(_xifexpression);
-        _builder_1.newLineIfNotEmpty();
-        result = result.concat(_builder_1.toString());
-      }
-    }
-    StringConcatenation _builder_4 = new StringConcatenation();
-    _builder_4.append("\t\t");
-    _builder_4.append("default: break;");
-    _builder_4.newLine();
-    _builder_4.append("\t");
-    _builder_4.append("}");
-    _builder_4.newLine();
-    _builder_4.append("}");
-    _builder_4.newLine();
-    _builder_4.append("else{ log.info(\"");
-    String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
-    _builder_4.append(_firstUpper);
-    _builder_4.append(" - No action executed for file [\"+file+\"].\");}");
-    result = result.concat(_builder_4.toString());
-    return result;
+    _builder.append("} catch (SchedulerException e) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("e.printStackTrace();");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("return null;");
+    return _builder.toString();
   }
   
-  public void toWatcherConstructor(final JvmGenericType type, final SignalWatcher watcher) {
+  public String shutdownScheduler(final SignalScheduler scheduler) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("log.info(\"Shutdowns \"+scheduler.getSchedulerName()+\" ...\");");
+    _builder.newLine();
+    _builder.append("scheduler.shutdown(waitForJobsToComplete);");
+    return _builder.toString();
+  }
+  
+  public String startScheduler(final SignalScheduler scheduler) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("scheduler.start();");
+    _builder.newLine();
+    _builder.append("log.info(scheduler.getSchedulerName() + \" service successfully started!\");");
+    return _builder.toString();
+  }
+  
+  public String handleEvent(final SignalDefinition signal) {
+    if ((signal instanceof SignalWatcher)) {
+      WatcherDefinition watcher = ((SignalWatcher)signal).getDefinition();
+      StringConcatenation _builder = new StringConcatenation();
+      CharSequence _xifexpression = null;
+      if ((watcher instanceof WatcherWithFileMask)) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append("String maskcfg = getFilemaskValue(getHandlerPropertyFromConfigurationFile(\"");
+        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(signal);
+        _builder_1.append(_fullyQualifiedName);
+        _builder_1.append("Watcher\" + SignalConstants.FILEMASK));");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("String modelfilemask = \"");
+        String _filemask = ((WatcherWithFileMask)watcher).getFilemask();
+        _builder_1.append(_filemask);
+        _builder_1.append("\";");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("if(isFileMaskValid(maskcfg) && isFileMaskValidWithExpectedFileExtension(maskcfg, \"");
+        String _validExtensionToInterchange = this.dv.getValidExtensionToInterchange(((WatcherWithFileMask)watcher).getInterchange().getDataRef().getFileEndpoint());
+        _builder_1.append(_validExtensionToInterchange);
+        _builder_1.append("\")){");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("\t");
+        _builder_1.append("modelfilemask = maskcfg;");
+        _builder_1.newLine();
+        _builder_1.append("   \t");
+        _builder_1.append("log.info(\"");
+        String _name = ((SignalWatcher)signal).getName();
+        _builder_1.append(_name, "   \t");
+        _builder_1.append("Watcher - The file mask used for file identification is [\"+maskcfg+\"].\");");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("}else{");
+        _builder_1.newLine();
+        _builder_1.append("   \t");
+        _builder_1.append("log.info(\"");
+        String _name_1 = ((SignalWatcher)signal).getName();
+        _builder_1.append(_name_1, "   \t");
+        _builder_1.append("Watcher - The default file mask [");
+        String _filemask_1 = ((WatcherWithFileMask)watcher).getFilemask();
+        _builder_1.append(_filemask_1, "   \t");
+        _builder_1.append("] is used for file identification.\");");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("}");
+        _builder_1.newLine();
+        _builder_1.append("if(isFileNameValidToFileMask(file.getFileName().toString(), modelfilemask)){");
+        _builder_1.newLine();
+        _builder_1.append("\t");
+        _builder_1.append("addWatcherJob(new ");
+        String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+        _builder_1.append(_firstUpper, "\t");
+        _builder_1.append("WatcherJob(persistenceService, dataInterchange, blobService, eventDispatcher, file, \"");
+        QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(signal);
+        _builder_1.append(_fullyQualifiedName_1, "\t");
+        _builder_1.append("Watcher\"));");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("}");
+        _xifexpression = _builder_1;
+      } else {
+        CharSequence _xifexpression_1 = null;
+        if ((watcher instanceof WatcherWithFileName)) {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("String namecfg = getFilemaskValue(getHandlerPropertyFromConfigurationFile(\"");
+          QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(signal);
+          _builder_2.append(_fullyQualifiedName_2);
+          _builder_2.append("Watcher\" + SignalConstants.FILENAME));");
+          _builder_2.newLineIfNotEmpty();
+          _builder_2.append("String filemask = namecfg != null ? namecfg : \"");
+          String _filename = ((WatcherWithFileName)watcher).getFilename();
+          _builder_2.append(_filename);
+          _builder_2.append("\";");
+          _builder_2.newLineIfNotEmpty();
+          _builder_2.append("if(isFileNameValidToBaseFileName(file.getFileName().toString(), filemask)){");
+          _builder_2.newLine();
+          _builder_2.append("\t");
+          _builder_2.append("addWatcherJob(new ");
+          String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder_2.append(_firstUpper_1, "\t");
+          _builder_2.append("WatcherJob(persistenceService, dataInterchange, blobService, eventDispatcher, file, \"");
+          QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(signal);
+          _builder_2.append(_fullyQualifiedName_3, "\t");
+          _builder_2.append("Watcher\"));");
+          _builder_2.newLineIfNotEmpty();
+          _builder_2.append("}");
+          _xifexpression_1 = _builder_2;
+        }
+        _xifexpression = _xifexpression_1;
+      }
+      _builder.append(_xifexpression);
+      _builder.newLineIfNotEmpty();
+      _builder.append("else{");
+      _builder.newLine();
+      _builder.append("\t");
+      _builder.append("log.info(\"");
+      String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+      _builder.append(_firstUpper_2, "\t");
+      _builder.append("Watcher - No action planed for file [\"+file+\"].\");");
+      _builder.newLineIfNotEmpty();
+      _builder.append("}");
+      return _builder.toString();
+    }
+    return "";
+  }
+  
+  public void toConstructor(final JvmGenericType type, final SignalDefinition signal) {
     EList<JvmMember> _members = type.getMembers();
     final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
-      EList<JvmTypeReference> _exceptions = it.getExceptions();
-      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
-      this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
-      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
-        StringConcatenation _builder = new StringConcatenation();
-        _builder.append("super();");
-        _builder.newLine();
-        _builder.append("executorService = Executors.newCachedThreadPool();");
-        it_1.append(_builder);
-      };
-      this._jvmTypesBuilder.setBody(it, _function_1);
+      if ((signal instanceof SignalWatcher)) {
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("super(\"");
+          String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+          _builder.append(_firstUpper);
+          _builder.append("Watcher\");");
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_1);
+      }
     };
-    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(watcher, _function);
+    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(signal, _function);
     this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
   }
   
-  public String updateOrSetHandlerConfiguration(final SignalWatcher watcher) {
+  public String executeWatcherTasksList(final SignalWatcher signal) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("String key, maskcfg;");
-    _builder.newLine();
     String result = _builder.toString();
-    EList<SignalHandler> _handlers = watcher.getHandlers();
-    for (final SignalHandler handler : _handlers) {
-      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-      if ((_triggerpolicy instanceof TriggerFile)) {
+    WatcherDefinition watcher = signal.getDefinition();
+    if ((watcher instanceof WatcherWithFileMask)) {
+      boolean _equals = ((WatcherWithFileMask)watcher).getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+      if (_equals) {
         StringConcatenation _builder_1 = new StringConcatenation();
-        _builder_1.append("key = watcherid + \".handler.");
-        String _name = handler.getName();
-        _builder_1.append(_name);
-        _builder_1.append("\" + OSBPSignalConstants.FILE_TRIGGER;");
+        _builder_1.append("log.info(\"WatcherJobsHandler - START - Sequential execution of ");
+        String _firstUpper = StringExtensions.toFirstUpper(signal.getName());
+        _builder_1.append(_firstUpper);
+        _builder_1.append("WatcherJob ...\");");
         _builder_1.newLineIfNotEmpty();
-        _builder_1.append("maskcfg = getFilemaskValue(getHandlerPropertyFromConfigurationFile(key));");
+        _builder_1.append("try {");
         _builder_1.newLine();
-        _builder_1.append("addFileMasks(\"");
-        String _name_1 = handler.getName();
-        _builder_1.append(_name_1);
-        _builder_1.append("\", maskcfg != null ? maskcfg : getWatcherConfig(key));");
+        _builder_1.append("\t");
+        String _appropriateInterchangeOperationName = this.getAppropriateInterchangeOperationName(((WatcherWithFileMask)watcher).getInterchange());
+        _builder_1.append(_appropriateInterchangeOperationName, "\t");
+        _builder_1.append("();");
         _builder_1.newLineIfNotEmpty();
+        _builder_1.append("\t");
+        _builder_1.append("deleteFile(getTriggerfile(), \"");
+        String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
+        _builder_1.append(_firstUpper_1, "\t");
+        _builder_1.append("WatcherJob - Triggerfile\");");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("}catch(Exception e){");
+        _builder_1.newLine();
+        _builder_1.append("\t");
+        _builder_1.append("log.error(\"WatcherJobsHandler - ERROR during sequential execution of ");
+        String _firstUpper_2 = StringExtensions.toFirstUpper(signal.getName());
+        _builder_1.append(_firstUpper_2, "\t");
+        _builder_1.append("WatcherJob!\", e);");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("}");
+        _builder_1.newLine();
+        _builder_1.append("setDone(true);  // for The WatcherhandlerJob to continue ");
+        _builder_1.newLine();
+        _builder_1.append("log.info(\"WatcherJobsHandler - END - Sequential execution of ");
+        String _firstUpper_3 = StringExtensions.toFirstUpper(signal.getName());
+        _builder_1.append(_firstUpper_3);
+        _builder_1.append("WatcherJob ...\");");
         result = result.concat(_builder_1.toString());
+      } else {
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append("log.info(\"WatcherJobsHandler - START - Parallel execution of ");
+        String _firstUpper_4 = StringExtensions.toFirstUpper(signal.getName());
+        _builder_2.append(_firstUpper_4);
+        _builder_2.append("WatcherJob ...\");");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("try {");
+        _builder_2.newLine();
+        _builder_2.append("\t");
+        String _appropriateInterchangeOperationName_1 = this.getAppropriateInterchangeOperationName(((WatcherWithFileMask)watcher).getInterchange());
+        _builder_2.append(_appropriateInterchangeOperationName_1, "\t");
+        _builder_2.append("();");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("\t");
+        _builder_2.append("finalizeTaskExecution(\"");
+        String _firstUpper_5 = StringExtensions.toFirstUpper(signal.getName());
+        _builder_2.append(_firstUpper_5, "\t");
+        _builder_2.append("WatcherJob\");");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("} catch(Exception e){");
+        _builder_2.newLine();
+        _builder_2.append("\t");
+        _builder_2.append("log.error(\"WatcherJobsHandler - ERROR during parallel execution of ");
+        String _firstUpper_6 = StringExtensions.toFirstUpper(signal.getName());
+        _builder_2.append(_firstUpper_6, "\t");
+        _builder_2.append("WatcherJob!\", e);");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("\t");
+        _builder_2.append("setDone(true); // for The WatcherhandlerJob to continue");
+        _builder_2.newLine();
+        _builder_2.append("\t");
+        _builder_2.append("log.info(\"WatcherJobsHandler - END - Parallel execution of ");
+        String _firstUpper_7 = StringExtensions.toFirstUpper(signal.getName());
+        _builder_2.append(_firstUpper_7, "\t");
+        _builder_2.append("WatcherJob ...\");");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("}");
+        result = result.concat(_builder_2.toString());
+      }
+    } else {
+      if ((watcher instanceof WatcherWithFileName)) {
+        boolean _equals_1 = ((WatcherWithFileName)watcher).getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+        if (_equals_1) {
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append("log.info(\"WatcherJobsHandler - START - Sequential execution of ");
+          String _firstUpper_8 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_3.append(_firstUpper_8);
+          _builder_3.append("WatcherJob ...\");");
+          _builder_3.newLineIfNotEmpty();
+          _builder_3.append("try {");
+          _builder_3.newLine();
+          result = result.concat(_builder_3.toString());
+          EList<SignalDatainterchange> _interchanges = ((WatcherWithFileName)watcher).getInterchanges();
+          for (final SignalDatainterchange interchange : _interchanges) {
+            StringConcatenation _builder_4 = new StringConcatenation();
+            _builder_4.append("\t");
+            String _appropriateInterchangeOperationName_2 = this.getAppropriateInterchangeOperationName(interchange);
+            _builder_4.append(_appropriateInterchangeOperationName_2, "\t");
+            _builder_4.append("();");
+            _builder_4.newLineIfNotEmpty();
+            result = result.concat(_builder_4.toString());
+          }
+          StringConcatenation _builder_5 = new StringConcatenation();
+          _builder_5.newLine();
+          _builder_5.append("\t");
+          _builder_5.append("deleteFile(getTriggerfile(), \"");
+          String _firstUpper_9 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_5.append(_firstUpper_9, "\t");
+          _builder_5.append("WatcherJob - Triggerfile\");");
+          _builder_5.newLineIfNotEmpty();
+          _builder_5.append("} catch(Exception e){");
+          _builder_5.newLine();
+          _builder_5.append("\t");
+          _builder_5.append("log.error(\"WatcherJobsHandler - ERROR during sequential execution of ");
+          String _firstUpper_10 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_5.append(_firstUpper_10, "\t");
+          _builder_5.append("WatcherJob!\", e);");
+          _builder_5.newLineIfNotEmpty();
+          _builder_5.append("}");
+          _builder_5.newLine();
+          _builder_5.append("setDone(true);  // for the WatcherhandlerJob to continue ");
+          _builder_5.newLine();
+          _builder_5.append("log.info(\"WatcherJobsHandler - END - Sequential execution of ");
+          String _firstUpper_11 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_5.append(_firstUpper_11);
+          _builder_5.append("WatcherJob ...\");");
+          result = result.concat(_builder_5.toString());
+        } else {
+          StringConcatenation _builder_6 = new StringConcatenation();
+          _builder_6.append("log.info(\"WatcherJobsHandler - START - Parallel execution of ");
+          String _firstUpper_12 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_6.append(_firstUpper_12);
+          _builder_6.append("WatcherJob ...\");");
+          _builder_6.newLineIfNotEmpty();
+          _builder_6.append("try {");
+          _builder_6.newLine();
+          result = result.concat(_builder_6.toString());
+          EList<SignalDatainterchange> _interchanges_1 = ((WatcherWithFileName)watcher).getInterchanges();
+          for (final SignalDatainterchange interchange_1 : _interchanges_1) {
+            StringConcatenation _builder_7 = new StringConcatenation();
+            _builder_7.append("\t");
+            String _appropriateInterchangeOperationName_3 = this.getAppropriateInterchangeOperationName(interchange_1);
+            _builder_7.append(_appropriateInterchangeOperationName_3, "\t");
+            _builder_7.append("();");
+            _builder_7.newLineIfNotEmpty();
+            result = result.concat(_builder_7.toString());
+          }
+          StringConcatenation _builder_8 = new StringConcatenation();
+          _builder_8.newLine();
+          _builder_8.append("\t");
+          _builder_8.append("finalizeTaskExecution(\"");
+          String _firstUpper_13 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_8.append(_firstUpper_13, "\t");
+          _builder_8.append("WatcherJob\");");
+          _builder_8.newLineIfNotEmpty();
+          _builder_8.append("} catch(Exception e){");
+          _builder_8.newLine();
+          _builder_8.append("\t");
+          _builder_8.append("log.error(\"WatcherJobsHandler - ERROR during parallel execution of ");
+          String _firstUpper_14 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_8.append(_firstUpper_14, "\t");
+          _builder_8.append("WatcherJob!\", e);");
+          _builder_8.newLineIfNotEmpty();
+          _builder_8.append("\t");
+          _builder_8.append("setDone(true); // for the WatcherhandlerJob to continue");
+          _builder_8.newLine();
+          _builder_8.append("\t");
+          _builder_8.append("log.info(\"WatcherJobsHandler - END - Parallel execution of ");
+          String _firstUpper_15 = StringExtensions.toFirstUpper(signal.getName());
+          _builder_8.append(_firstUpper_15, "\t");
+          _builder_8.append("WatcherJob ...\");");
+          _builder_8.newLineIfNotEmpty();
+          _builder_8.append("}");
+          result = result.concat(_builder_8.toString());
+        }
       }
     }
     return result;
   }
   
-  public String initTasksLists(final SignalWatcher watcher) {
+  public String executeSchedulerTasksList(final SignalDefinition signal) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("initListOfTasks(); ArrayList<WorkerThreadRunnable> data = null;");
-    _builder.newLine();
     String result = _builder.toString();
-    EList<SignalHandler> _handlers = watcher.getHandlers();
-    for (final SignalHandler handler : _handlers) {
-      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-      if ((_triggerpolicy instanceof TriggerFile)) {
+    if ((signal instanceof SignalScheduler)) {
+      boolean _equals = ((SignalScheduler)signal).getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+      if (_equals) {
         StringConcatenation _builder_1 = new StringConcatenation();
-        _builder_1.append("data = new ArrayList<WorkerThreadRunnable>();");
+        _builder_1.append("log.info(\"START - Sequential execution of ");
+        String _firstUpper = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_1.append(_firstUpper);
+        _builder_1.append("SchedulerJob ...\");");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("try {");
         _builder_1.newLine();
         result = result.concat(_builder_1.toString());
-        EList<SignalDatainterchange> _interchanges = handler.getInterchanges();
+        EList<SignalDatainterchange> _interchanges = ((SignalScheduler)signal).getInterchanges();
         for (final SignalDatainterchange interchange : _interchanges) {
           StringConcatenation _builder_2 = new StringConcatenation();
-          _builder_2.append("data.add(");
+          _builder_2.append("\t");
           String _appropriateInterchangeOperationName = this.getAppropriateInterchangeOperationName(interchange);
-          _builder_2.append(_appropriateInterchangeOperationName);
-          _builder_2.append("(\"");
-          String _fileName = interchange.getFileName();
-          _builder_2.append(_fileName);
-          _builder_2.append("\"));");
+          _builder_2.append(_appropriateInterchangeOperationName, "\t");
+          _builder_2.append("();");
           _builder_2.newLineIfNotEmpty();
           result = result.concat(_builder_2.toString());
         }
         StringConcatenation _builder_3 = new StringConcatenation();
-        _builder_3.append("getListOfTasks().put(\"");
-        String _name = handler.getName();
-        _builder_3.append(_name);
-        _builder_3.append("\", data);");
+        _builder_3.append("} catch(Exception e){");
+        _builder_3.newLine();
+        _builder_3.append("\t");
+        _builder_3.append("log.error(\"ERROR during sequential execution of ");
+        String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_3.append(_firstUpper_1, "\t");
+        _builder_3.append("SchedulerJob!\", e);");
         _builder_3.newLineIfNotEmpty();
+        _builder_3.append("}");
+        _builder_3.newLine();
+        _builder_3.append("log.info(\"END - Sequential execution of ");
+        String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_3.append(_firstUpper_2);
+        _builder_3.append("SchedulerJob.\");");
         result = result.concat(_builder_3.toString());
       } else {
         StringConcatenation _builder_4 = new StringConcatenation();
-        _builder_4.append("data = new ArrayList<WorkerThreadRunnable>();");
+        _builder_4.append("log.info(\"START - Parallel execution of ");
+        String _firstUpper_3 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_4.append(_firstUpper_3);
+        _builder_4.append("SchedulerJob ...\");");
+        _builder_4.newLineIfNotEmpty();
+        _builder_4.append("try {");
         _builder_4.newLine();
         result = result.concat(_builder_4.toString());
-        EList<SignalDatainterchange> _interchanges_1 = handler.getInterchanges();
+        EList<SignalDatainterchange> _interchanges_1 = ((SignalScheduler)signal).getInterchanges();
         for (final SignalDatainterchange interchange_1 : _interchanges_1) {
           StringConcatenation _builder_5 = new StringConcatenation();
-          _builder_5.append("data.add(");
+          _builder_5.append("\t");
           String _appropriateInterchangeOperationName_1 = this.getAppropriateInterchangeOperationName(interchange_1);
-          _builder_5.append(_appropriateInterchangeOperationName_1);
-          _builder_5.append("(\"");
-          String _fileName_1 = interchange_1.getFileName();
-          _builder_5.append(_fileName_1);
-          _builder_5.append("\"));");
+          _builder_5.append(_appropriateInterchangeOperationName_1, "\t");
+          _builder_5.append("();");
           _builder_5.newLineIfNotEmpty();
           result = result.concat(_builder_5.toString());
         }
         StringConcatenation _builder_6 = new StringConcatenation();
-        _builder_6.append("getListOfTasks().put(\"");
-        String _name_1 = handler.getName();
-        _builder_6.append(_name_1);
-        _builder_6.append("\", data);");
+        _builder_6.newLine();
+        _builder_6.append("\t");
+        _builder_6.append("finalizeTaskExecution(\"");
+        String _firstUpper_4 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_6.append(_firstUpper_4, "\t");
+        _builder_6.append("SchedulerJob\");");
         _builder_6.newLineIfNotEmpty();
+        _builder_6.append("} catch(Exception e){");
+        _builder_6.newLine();
+        _builder_6.append("\t");
+        _builder_6.append("log.error(\"ERROR during parallel execution of ");
+        String _firstUpper_5 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_6.append(_firstUpper_5, "\t");
+        _builder_6.append("SchedulerJob!\", e);");
+        _builder_6.newLineIfNotEmpty();
+        _builder_6.append("log.info(\"END - Parallel execution of ");
+        String _firstUpper_6 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_6.append(_firstUpper_6);
+        _builder_6.append("SchedulerJob.\");");
+        _builder_6.newLineIfNotEmpty();
+        _builder_6.append("}");
         result = result.concat(_builder_6.toString());
       }
     }
@@ -1033,7 +1469,10 @@
     return operation_name;
   }
   
-  public boolean createAppropriateInterchangeOperations(final JvmGenericType type, final SignalWatcher watcher, final SignalDatainterchange interchange) {
+  /**
+   * Creates the content of each imports and export operations.
+   */
+  public boolean createSchedulerInterchangeOperations(final JvmGenericType type, final SignalDefinition signal, final SignalDatainterchange interchange) {
     boolean _xblockexpression = false;
     {
       String operationname = this.getAppropriateInterchangeOperationName(interchange);
@@ -1048,34 +1487,148 @@
           if (_equals) {
             EList<JvmMember> _members = type.getMembers();
             final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
-              EList<JvmFormalParameter> _parameters = it.getParameters();
-              JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "filename", this._typeReferenceBuilder.typeRef(String.class));
-              this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+              EList<JvmTypeReference> _exceptions = it.getExceptions();
+              JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
+              this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
               final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
                 StringConcatenation _builder = new StringConcatenation();
-                String _basicRunConfiguration = this.getBasicRunConfiguration(this._iQualifiedNameProvider.getFullyQualifiedName(watcher).toString(), interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT, false);
+                String _configFileURL = this.df.getConfigFileURL(interchange.getDataRef());
+                _builder.append(_configFileURL);
+                _builder.newLineIfNotEmpty();
+                String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT.name(), null);
                 _builder.append(_basicRunConfiguration);
+                _builder.newLineIfNotEmpty();
+                String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName);
+                _builder.append(".setDirection(WorkerThreadRunnable.Direction.IMPORT);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("try {");
+                _builder.newLine();
+                _builder.append("\t");
+                CharSequence _xifexpression_1 = null;
+                boolean _equals_1 = ((SignalScheduler) signal).getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+                if (_equals_1) {
+                  StringConcatenation _builder_1 = new StringConcatenation();
+                  String _firstUpper = StringExtensions.toFirstUpper(signal.getName());
+                  _builder_1.append(_firstUpper);
+                  _builder_1.append("Scheduler.getExecutorService().submit(");
+                  String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_1.append(_defaultVariableName_1);
+                  _builder_1.append(").get();");
+                  _xifexpression_1 = _builder_1;
+                } else {
+                  StringConcatenation _builder_2 = new StringConcatenation();
+                  String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
+                  _builder_2.append(_firstUpper_1);
+                  _builder_2.append("Scheduler.getExecutorService().execute(");
+                  String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_2.append(_defaultVariableName_2);
+                  _builder_2.append(");");
+                  _xifexpression_1 = _builder_2;
+                }
+                _builder.append(_xifexpression_1, "\t");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}catch (Exception e) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("log.error(\"Execution - \" + ");
+                String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_3, "\t");
+                _builder.append(".getDirection() + \" for \" + ");
+                String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_4, "\t");
+                _builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                CharSequence _xifexpression_2 = null;
+                SignalActionEnum _dataAction_1 = interchange.getDataAction();
+                boolean _equals_2 = Objects.equal(_dataAction_1, SignalActionEnum.DATAIMPORT);
+                if (_equals_2) {
+                  StringConcatenation _builder_3 = new StringConcatenation();
+                  {
+                    boolean _isDeleteFileAfterImport = interchange.getDataRef().isDeleteFileAfterImport();
+                    if (_isDeleteFileAfterImport) {
+                      _builder_3.append("renameFile(Paths.get(");
+                      String _defaultVariableName_5 = this.df.getDefaultVariableName(interchange.getDataRef());
+                      _builder_3.append(_defaultVariableName_5);
+                      _builder_3.append(".getFileURL().toString()), \"");
+                      String _firstUpper_2 = StringExtensions.toFirstUpper(signal.getName());
+                      _builder_3.append(_firstUpper_2);
+                      _builder_3.append("SchedulerJob\");");
+                      _builder_3.newLineIfNotEmpty();
+                    }
+                  }
+                  _xifexpression_2 = _builder_3;
+                }
+                _builder.append(_xifexpression_2, "\t");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}");
+                _builder.newLine();
                 it_1.append(_builder);
               };
               this._jvmTypesBuilder.setBody(it, _function_1);
             };
-            JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef(WorkerThreadRunnable.class), _function);
+            JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, operationname, this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
             this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
           } else {
             EList<JvmMember> _members_1 = type.getMembers();
             final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
-              EList<JvmFormalParameter> _parameters = it.getParameters();
-              JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "filename", this._typeReferenceBuilder.typeRef(String.class));
-              this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
               final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
                 StringConcatenation _builder = new StringConcatenation();
-                String _basicRunConfiguration = this.getBasicRunConfiguration(this._iQualifiedNameProvider.getFullyQualifiedName(watcher).toString(), interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT, false);
+                String _configFileURL = this.df.getConfigFileURL(interchange.getDataRef());
+                _builder.append(_configFileURL);
+                _builder.newLineIfNotEmpty();
+                String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT.name(), null);
                 _builder.append(_basicRunConfiguration);
+                _builder.newLineIfNotEmpty();
+                String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName);
+                _builder.append(".setDirection(WorkerThreadRunnable.Direction.EXPORT);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("try {");
+                _builder.newLine();
+                _builder.append("\t");
+                CharSequence _xifexpression_1 = null;
+                boolean _equals_1 = ((SignalScheduler) signal).getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+                if (_equals_1) {
+                  StringConcatenation _builder_1 = new StringConcatenation();
+                  String _firstUpper = StringExtensions.toFirstUpper(signal.getName());
+                  _builder_1.append(_firstUpper);
+                  _builder_1.append("Scheduler.getExecutorService().submit(");
+                  String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_1.append(_defaultVariableName_1);
+                  _builder_1.append(").get();");
+                  _xifexpression_1 = _builder_1;
+                } else {
+                  StringConcatenation _builder_2 = new StringConcatenation();
+                  String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
+                  _builder_2.append(_firstUpper_1);
+                  _builder_2.append("Scheduler.getExecutorService().execute(");
+                  String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_2.append(_defaultVariableName_2);
+                  _builder_2.append(");");
+                  _xifexpression_1 = _builder_2;
+                }
+                _builder.append(_xifexpression_1, "\t");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}catch (Exception e) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("log.error(\"Execution - \" + ");
+                String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_3, "\t");
+                _builder.append(".getDirection() + \" for \" + ");
+                String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_4, "\t");
+                _builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}");
+                _builder.newLine();
                 it_1.append(_builder);
               };
               this._jvmTypesBuilder.setBody(it, _function_2);
             };
-            JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef("WorkerThreadRunnable"), _function_1);
+            JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(signal, operationname, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
             this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
           }
           _xblockexpression_1 = this.operationlist.add(operationname);
@@ -1087,133 +1640,392 @@
     return _xblockexpression;
   }
   
-  public void toWatcherFields(final JvmGenericType type, final SignalWatcher watcher) {
+  /**
+   * Creates the content of each imports and export operations for each watcher task files.
+   */
+  public boolean createWatcherInterchangeOperations(final JvmGenericType type, final SignalWatcher signal, final SignalDatainterchange interchange) {
+    boolean _xblockexpression = false;
+    {
+      final WatcherDefinition watcher = signal.getDefinition();
+      String operationname = this.getAppropriateInterchangeOperationName(interchange);
+      boolean _xifexpression = false;
+      boolean _contains = this.operationlist.contains(operationname);
+      boolean _not = (!_contains);
+      if (_not) {
+        boolean _xblockexpression_1 = false;
+        {
+          boolean _equals = watcher.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+          if (_equals) {
+            EList<JvmMember> _members = type.getMembers();
+            final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
+              EList<JvmTypeReference> _exceptions = it.getExceptions();
+              JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
+              this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+              final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+                StringConcatenation _builder = new StringConcatenation();
+                CharSequence _xifexpression_1 = null;
+                SignalActionEnum _dataAction = interchange.getDataAction();
+                boolean _equals_1 = Objects.equal(_dataAction, SignalActionEnum.DATAIMPORT);
+                if (_equals_1) {
+                  StringConcatenation _builder_1 = new StringConcatenation();
+                  String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT.name(), this.getBaseInterchange(signal).getDataRef());
+                  _builder_1.append(_basicRunConfiguration);
+                  _builder_1.newLineIfNotEmpty();
+                  String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_1.append(_defaultVariableName);
+                  _builder_1.append(".setDirection(WorkerThreadRunnable.Direction.IMPORT);");
+                  _builder_1.newLineIfNotEmpty();
+                  _xifexpression_1 = _builder_1;
+                } else {
+                  StringConcatenation _builder_2 = new StringConcatenation();
+                  String _configFileURL = this.df.getConfigFileURL(interchange.getDataRef());
+                  _builder_2.append(_configFileURL);
+                  _builder_2.newLineIfNotEmpty();
+                  String _basicRunConfiguration_1 = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT.name(), this.getBaseInterchange(signal).getDataRef());
+                  _builder_2.append(_basicRunConfiguration_1);
+                  _builder_2.newLineIfNotEmpty();
+                  String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_2.append(_defaultVariableName_1);
+                  _builder_2.append(".setDirection(WorkerThreadRunnable.Direction.EXPORT);");
+                  _builder_2.newLineIfNotEmpty();
+                  _xifexpression_1 = _builder_2;
+                }
+                _builder.append(_xifexpression_1);
+                _builder.newLineIfNotEmpty();
+                CharSequence _xifexpression_2 = null;
+                SignalDatainterchange _baseInterchange = this.getBaseInterchange(signal);
+                boolean _equals_2 = Objects.equal(interchange, _baseInterchange);
+                if (_equals_2) {
+                  StringConcatenation _builder_3 = new StringConcatenation();
+                  _builder_3.append("URI uri = getTriggerfile().toUri();");
+                  _builder_3.newLine();
+                  String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_3.append(_defaultVariableName_2);
+                  _builder_3.append(".setFileURL(uri.toString());");
+                  _builder_3.newLineIfNotEmpty();
+                  _xifexpression_2 = _builder_3;
+                } else {
+                  StringConcatenation _builder_4 = new StringConcatenation();
+                  String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_4.append(_defaultVariableName_3);
+                  _builder_4.append(".setFileURL(getTriggerfile().getParent().toString() + \"\\\\");
+                  String _dataInterchangeFileName = this.df.getDataInterchangeFileName(interchange.getDataRef());
+                  _builder_4.append(_dataInterchangeFileName);
+                  _builder_4.append("\");");
+                  _xifexpression_2 = _builder_4;
+                }
+                _builder.append(_xifexpression_2);
+                _builder.newLineIfNotEmpty();
+                _builder.append("try{");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("WatcherImpl.getExecutorService().submit(");
+                String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_4, "\t");
+                _builder.append(").get();");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}catch (Exception e) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("log.error(\"Execution - \" + ");
+                String _defaultVariableName_5 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_5, "\t");
+                _builder.append(".getDirection() + \" for \" + ");
+                String _defaultVariableName_6 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_6, "\t");
+                _builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                String _defaultVariableName_7 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_7, "\t");
+                _builder.append(".setExecutionDone(true);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                CharSequence _xifexpression_3 = null;
+                SignalActionEnum _dataAction_1 = interchange.getDataAction();
+                boolean _equals_3 = Objects.equal(_dataAction_1, SignalActionEnum.DATAIMPORT);
+                if (_equals_3) {
+                  CharSequence _xifexpression_4 = null;
+                  if ((Objects.equal(interchange, this.getBaseInterchange(signal)) && interchange.getDataRef().isDeleteFileAfterImport())) {
+                    StringConcatenation _builder_5 = new StringConcatenation();
+                    _builder_5.append("renameFile(getTriggerfile(), \"");
+                    String _firstUpper = StringExtensions.toFirstUpper(signal.getName());
+                    _builder_5.append(_firstUpper);
+                    _builder_5.append("WatcherJob\");");
+                    _xifexpression_4 = _builder_5;
+                  } else {
+                    CharSequence _xifexpression_5 = null;
+                    boolean _isDeleteFileAfterImport = interchange.getDataRef().isDeleteFileAfterImport();
+                    if (_isDeleteFileAfterImport) {
+                      StringConcatenation _builder_6 = new StringConcatenation();
+                      _builder_6.append("renameFile(Paths.get(");
+                      String _defaultVariableName_8 = this.df.getDefaultVariableName(interchange.getDataRef());
+                      _builder_6.append(_defaultVariableName_8);
+                      _builder_6.append(".getFileURL().toString()), \"");
+                      String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
+                      _builder_6.append(_firstUpper_1);
+                      _builder_6.append("WatcherJob\");");
+                      _xifexpression_5 = _builder_6;
+                    }
+                    _xifexpression_4 = _xifexpression_5;
+                  }
+                  _xifexpression_3 = _xifexpression_4;
+                }
+                _builder.append(_xifexpression_3, "\t");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}");
+                _builder.newLine();
+                it_1.append(_builder);
+              };
+              this._jvmTypesBuilder.setBody(it, _function_1);
+            };
+            JvmOperation _method = this._jvmTypesBuilder.toMethod(signal, operationname, this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
+            this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+          } else {
+            EList<JvmMember> _members_1 = type.getMembers();
+            final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+              EList<JvmTypeReference> _exceptions = it.getExceptions();
+              JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
+              this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+              final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+                StringConcatenation _builder = new StringConcatenation();
+                CharSequence _xifexpression_1 = null;
+                SignalActionEnum _dataAction = interchange.getDataAction();
+                boolean _equals_1 = Objects.equal(_dataAction, SignalActionEnum.DATAIMPORT);
+                if (_equals_1) {
+                  StringConcatenation _builder_1 = new StringConcatenation();
+                  String _basicRunConfiguration = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT.name(), this.getBaseInterchange(signal).getDataRef());
+                  _builder_1.append(_basicRunConfiguration);
+                  _builder_1.newLineIfNotEmpty();
+                  String _defaultVariableName = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_1.append(_defaultVariableName);
+                  _builder_1.append(".setDirection(WorkerThreadRunnable.Direction.IMPORT);");
+                  _builder_1.newLineIfNotEmpty();
+                  _xifexpression_1 = _builder_1;
+                } else {
+                  StringConcatenation _builder_2 = new StringConcatenation();
+                  String _configFileURL = this.df.getConfigFileURL(interchange.getDataRef());
+                  _builder_2.append(_configFileURL);
+                  _builder_2.newLineIfNotEmpty();
+                  String _basicRunConfiguration_1 = this.df.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT.name(), this.getBaseInterchange(signal).getDataRef());
+                  _builder_2.append(_basicRunConfiguration_1);
+                  _builder_2.newLineIfNotEmpty();
+                  String _defaultVariableName_1 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_2.append(_defaultVariableName_1);
+                  _builder_2.append(".setDirection(WorkerThreadRunnable.Direction.EXPORT);");
+                  _builder_2.newLineIfNotEmpty();
+                  _xifexpression_1 = _builder_2;
+                }
+                _builder.append(_xifexpression_1);
+                _builder.newLineIfNotEmpty();
+                CharSequence _xifexpression_2 = null;
+                SignalDatainterchange _baseInterchange = this.getBaseInterchange(signal);
+                boolean _equals_2 = Objects.equal(interchange, _baseInterchange);
+                if (_equals_2) {
+                  StringConcatenation _builder_3 = new StringConcatenation();
+                  _builder_3.append("URI uri = getTriggerfile().toUri();");
+                  _builder_3.newLine();
+                  String _defaultVariableName_2 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_3.append(_defaultVariableName_2);
+                  _builder_3.append(".setFileURL(uri.toString());");
+                  _xifexpression_2 = _builder_3;
+                } else {
+                  StringConcatenation _builder_4 = new StringConcatenation();
+                  String _defaultVariableName_3 = this.df.getDefaultVariableName(interchange.getDataRef());
+                  _builder_4.append(_defaultVariableName_3);
+                  _builder_4.append(".setFileURL(getTriggerfile().getParent().toString() + \"\\\\");
+                  String _dataInterchangeFileName = this.df.getDataInterchangeFileName(interchange.getDataRef());
+                  _builder_4.append(_dataInterchangeFileName);
+                  _builder_4.append("\");");
+                  _xifexpression_2 = _builder_4;
+                }
+                _builder.append(_xifexpression_2);
+                _builder.newLineIfNotEmpty();
+                _builder.append("checkForCompletion(");
+                String _defaultVariableName_4 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_4);
+                _builder.append(");");
+                _builder.newLineIfNotEmpty();
+                _builder.append("try{");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("WatcherImpl.getExecutorService().execute(");
+                String _defaultVariableName_5 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_5, "\t");
+                _builder.append(");");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}catch (Exception e) {");
+                _builder.newLine();
+                _builder.append("\t");
+                _builder.append("log.error(\"Execution - \" + ");
+                String _defaultVariableName_6 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_6, "\t");
+                _builder.append(".getDirection() + \" for \" + ");
+                String _defaultVariableName_7 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_7, "\t");
+                _builder.append(".getName() + \" interupted!\\n\" + e.getMessage());");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                String _defaultVariableName_8 = this.df.getDefaultVariableName(interchange.getDataRef());
+                _builder.append(_defaultVariableName_8, "\t");
+                _builder.append(".setExecutionDone(true);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                CharSequence _xifexpression_3 = null;
+                SignalActionEnum _dataAction_1 = interchange.getDataAction();
+                boolean _equals_3 = Objects.equal(_dataAction_1, SignalActionEnum.DATAIMPORT);
+                if (_equals_3) {
+                  CharSequence _xifexpression_4 = null;
+                  if ((Objects.equal(interchange, this.getBaseInterchange(signal)) && interchange.getDataRef().isDeleteFileAfterImport())) {
+                    StringConcatenation _builder_5 = new StringConcatenation();
+                    _builder_5.append("renameFile(getTriggerfile(), \"");
+                    String _firstUpper = StringExtensions.toFirstUpper(signal.getName());
+                    _builder_5.append(_firstUpper);
+                    _builder_5.append("WatcherJob\");");
+                    _xifexpression_4 = _builder_5;
+                  } else {
+                    CharSequence _xifexpression_5 = null;
+                    boolean _isDeleteFileAfterImport = interchange.getDataRef().isDeleteFileAfterImport();
+                    if (_isDeleteFileAfterImport) {
+                      StringConcatenation _builder_6 = new StringConcatenation();
+                      _builder_6.append("renameFile(Paths.get(");
+                      String _defaultVariableName_9 = this.df.getDefaultVariableName(interchange.getDataRef());
+                      _builder_6.append(_defaultVariableName_9);
+                      _builder_6.append(".getFileURL().toString()), \"");
+                      String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
+                      _builder_6.append(_firstUpper_1);
+                      _builder_6.append("WatcherJob\");");
+                      _xifexpression_5 = _builder_6;
+                    }
+                    _xifexpression_4 = _xifexpression_5;
+                  }
+                  _xifexpression_3 = _xifexpression_4;
+                }
+                _builder.append(_xifexpression_3, "\t");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}");
+                _builder.newLine();
+                it_1.append(_builder);
+              };
+              this._jvmTypesBuilder.setBody(it, _function_2);
+            };
+            JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(signal, operationname, this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
+            this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+          }
+          _xblockexpression_1 = this.operationlist.add(operationname);
+        }
+        _xifexpression = _xblockexpression_1;
+      }
+      _xblockexpression = _xifexpression;
+    }
+    return _xblockexpression;
+  }
+  
+  /**
+   * Creates the fields for all watcher and scheduler files.
+   */
+  public void toFields(final JvmGenericType type, final SignalDefinition signal) {
     JvmField field = null;
     final Procedure1<JvmField> _function = (JvmField it) -> {
       it.setVisibility(JvmVisibility.PRIVATE);
-      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
-        StringConcatenation _builder = new StringConcatenation();
-        _builder.append("\"");
-        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-        _builder.append(_fullyQualifiedName);
-        _builder.append("\"");
-        it_1.append(_builder);
-      };
-      this._jvmTypesBuilder.setInitializer(it, _function_1);
     };
-    field = this._jvmTypesBuilder.toField(watcher, "watcherid", this._typeReferenceBuilder.typeRef(String.class), _function);
+    field = this._jvmTypesBuilder.toField(signal, "thread", this._typeReferenceBuilder.typeRef(Thread.class), _function);
     EList<JvmMember> _members = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
-    final Procedure1<JvmField> _function_1 = (JvmField it) -> {
-      it.setVisibility(JvmVisibility.PRIVATE);
-      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
-        StringConcatenation _builder = new StringConcatenation();
-        _builder.append("watcherid + OSBPSignalConstants.DIRECTORY");
-        it_1.append(_builder);
-      };
-      this._jvmTypesBuilder.setInitializer(it, _function_2);
-    };
-    field = this._jvmTypesBuilder.toField(watcher, "directorykey", this._typeReferenceBuilder.typeRef(String.class), _function_1);
+    field = this._jvmTypesBuilder.toField(signal, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_1 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
-    final Procedure1<JvmField> _function_2 = (JvmField it) -> {
-      it.setVisibility(JvmVisibility.PRIVATE);
-    };
-    field = this._jvmTypesBuilder.toField(watcher, "thread", this._typeReferenceBuilder.typeRef(Thread.class), _function_2);
+    field = this._jvmTypesBuilder.toField(signal, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_2 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
-    final Procedure1<JvmField> _function_3 = (JvmField it) -> {
-      final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
-        StringConcatenation _builder = new StringConcatenation();
-        _builder.append("true");
-        it_1.append(_builder);
-      };
-      this._jvmTypesBuilder.setInitializer(it, _function_4);
-      it.setVisibility(JvmVisibility.PRIVATE);
-    };
-    field = this._jvmTypesBuilder.toField(watcher, "active", this._typeReferenceBuilder.typeRef(boolean.class), _function_3);
+    field = this._jvmTypesBuilder.toField(signal, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_3 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
-    final Procedure1<JvmField> _function_4 = (JvmField it) -> {
-      it.setVisibility(JvmVisibility.PRIVATE);
-      it.setStatic(true);
-    };
-    field = this._jvmTypesBuilder.toField(watcher, "executorService", this._typeReferenceBuilder.typeRef(ExecutorService.class), _function_4);
+    field = this._jvmTypesBuilder.toField(signal, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_4 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
-    field = this._jvmTypesBuilder.toField(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
-    field.setStatic(true);
-    field.setVisibility(JvmVisibility.PRIVATE);
-    EList<JvmMember> _members_5 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
-    field = this._jvmTypesBuilder.toField(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
-    field.setStatic(true);
-    field.setVisibility(JvmVisibility.PRIVATE);
-    EList<JvmMember> _members_6 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_6, field);
-    field = this._jvmTypesBuilder.toField(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
-    field.setStatic(true);
-    field.setVisibility(JvmVisibility.PRIVATE);
-    EList<JvmMember> _members_7 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_7, field);
-    field = this._jvmTypesBuilder.toField(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
-    field.setStatic(true);
-    field.setVisibility(JvmVisibility.PRIVATE);
-    EList<JvmMember> _members_8 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_8, field);
+    if ((signal instanceof SignalScheduler)) {
+      field = this._jvmTypesBuilder.toField(signal, "scheduler", this._typeReferenceBuilder.typeRef(Scheduler.class));
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("the scheduler instance");
+      this._jvmTypesBuilder.setDocumentation(field, _builder.toString());
+      field.setStatic(true);
+      field.setVisibility(JvmVisibility.PRIVATE);
+      EList<JvmMember> _members_5 = type.getMembers();
+      this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
+    }
   }
   
-  public String getActivate(final SignalWatcher watcher) {
+  public String getActivate(final SignalDefinition signal) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("thread = new Thread(\"");
-    String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
-    _builder.append(_firstUpper);
-    _builder.append("Watcher\") {");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("@Override");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("public void run() {");
-    _builder.newLine();
     CharSequence _xifexpression = null;
-    EObject _eContainer = watcher.eContainer();
-    if ((_eContainer instanceof SignalPackage)) {
-      CharSequence _xblockexpression = null;
-      {
-        EObject _eContainer_1 = watcher.eContainer();
-        String firstwatcher = ((SignalPackage) _eContainer_1).getWatchers().get(0).getName();
-        CharSequence _xifexpression_1 = null;
-        String _name = watcher.getName();
-        boolean _equals = Objects.equal(_name, firstwatcher);
-        if (_equals) {
-          StringConcatenation _builder_1 = new StringConcatenation();
-          _builder_1.append("WatcherConfigurations.init();");
-          _builder_1.newLine();
-          _xifexpression_1 = _builder_1;
-        } else {
-          StringConcatenation _builder_2 = new StringConcatenation();
-          _builder_2.append("log.info(\"- ");
-          String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
-          _builder_2.append(_firstUpper_1);
-          _builder_2.append("Watcher waiting for watcher configurations to be initialized\");");
-          _builder_2.newLineIfNotEmpty();
-          _builder_2.append("while(!isConfigReady(\"");
-          QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(watcher.eContainer());
-          _builder_2.append(_fullyQualifiedName);
-          _builder_2.append("\")){}");
-          _builder_2.newLineIfNotEmpty();
-          _xifexpression_1 = _builder_2;
-        }
-        _xblockexpression = _xifexpression_1;
+    if ((signal instanceof SignalWatcher)) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append("thread = new Thread(\"");
+      String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+      _builder_1.append(_firstUpper);
+      _builder_1.append("Watcher\") {");
+      _xifexpression = _builder_1;
+    } else {
+      CharSequence _xifexpression_1 = null;
+      if ((signal instanceof SignalScheduler)) {
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append("thread = new Thread(\"");
+        String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_2.append(_firstUpper_1);
+        _builder_2.append("Scheduler\") {");
+        _xifexpression_1 = _builder_2;
       }
-      _xifexpression = _xblockexpression;
+      _xifexpression = _xifexpression_1;
     }
     _builder.append(_xifexpression);
     _builder.newLineIfNotEmpty();
-    _builder.append("\t\t");
-    _builder.append("executeWatcherService();");
+    _builder.append("@Override");
     _builder.newLine();
+    _builder.append("public void run() {");
+    _builder.newLine();
+    _builder.append("\t");
+    CharSequence _xifexpression_2 = null;
+    if ((signal instanceof SignalWatcher)) {
+      StringConcatenation _builder_3 = new StringConcatenation();
+      _builder_3.append("setMaxParallelThreadsCount(getHandlerPropertyFromConfigurationFile(SignalConstants.MAXPARALLELTHREADCOUNT_NAME));");
+      _builder_3.newLine();
+      _builder_3.append("initMaxThreadCount();");
+      _builder_3.newLine();
+      _builder_3.append("startWatcherJobsHandling();");
+      _builder_3.newLine();
+      _builder_3.append("executeWatcherService();");
+      _builder_3.newLine();
+      _xifexpression_2 = _builder_3;
+    } else {
+      CharSequence _xifexpression_3 = null;
+      if ((signal instanceof SignalScheduler)) {
+        StringConcatenation _builder_4 = new StringConcatenation();
+        _builder_4.append("setMaxParallelThreadsCount(getHandlerPropertyFromConfigurationFile(SignalConstants.MAXPARALLELTHREADCOUNT_NAME));");
+        _builder_4.newLine();
+        _builder_4.append("initMaxThreadCount();");
+        _builder_4.newLine();
+        _builder_4.append("setExecutorService(\"");
+        String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_4.append(_firstUpper_2);
+        _builder_4.append("Scheduler\");");
+        _builder_4.newLineIfNotEmpty();
+        _builder_4.append("executeSchedulerService();");
+        _builder_4.newLine();
+        _xifexpression_3 = _builder_4;
+      }
+      _xifexpression_2 = _xifexpression_3;
+    }
+    _builder.append(_xifexpression_2, "\t");
+    _builder.newLineIfNotEmpty();
     _builder.append("\t");
     _builder.append("}");
     _builder.newLine();
@@ -1223,451 +2035,677 @@
     return _builder.toString();
   }
   
-  public String getExecuteWatcherService(final SignalWatcher watcher) {
+  public String getExecuteService(final SignalDefinition signal) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("try {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("if (!isPathregistered()) {");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("String url = getHandlerPropertyFromConfigurationFile(directorykey);");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("url = url != null ? url : getWatcherConfig(directorykey);");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("URL a = isDirectoryValidURL(url);");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("if(a != null && a.getProtocol().equals(\"file\")){");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("if(existsDirectory(url)){    \t\t\t\t");
-    _builder.newLine();
-    _builder.append("\t\t\t\t");
-    _builder.append("registerPathToWatcher(Paths.get(url));");
-    _builder.newLine();
-    _builder.append("\t\t\t\t");
-    _builder.append("setPathregistered(true);");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("}else{");
-    _builder.newLine();
-    _builder.append("\t\t\t\t");
-    _builder.append("log.error(\"Path [\" + url + \"] not existing! Directory not registered!\");");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("initTasksLists();");
-    _builder.newLine();
-    _builder.append("\t");
     CharSequence _xifexpression = null;
-    boolean _hasHandlers = this.hasHandlers(watcher);
-    if (_hasHandlers) {
+    if ((signal instanceof SignalWatcher)) {
       StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append("updateOrSetHandlerConfiguration();");
-      _builder_1.newLine();
-      _xifexpression = _builder_1;
-    }
-    _builder.append(_xifexpression, "\t");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    CharSequence _xifexpression_1 = null;
-    boolean _hasSchedulers = this.hasSchedulers(watcher);
-    if (_hasSchedulers) {
-      StringConcatenation _builder_2 = new StringConcatenation();
-      _builder_2.append("initScheduler(\"");
-      String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
-      _builder_2.append(_firstUpper);
-      _builder_2.append("Scheduler\", \"");
-      int _schedulerCount = this.getSchedulerCount(watcher);
-      _builder_2.append(_schedulerCount);
-      _builder_2.append("\");");
-      _builder_2.newLineIfNotEmpty();
-      _builder_2.append("scheduleAllJobs();");
-      _builder_2.newLine();
-      _builder_2.append("startScheduler();");
-      _builder_2.newLine();
-      _xifexpression_1 = _builder_2;
-    }
-    _builder.append(_xifexpression_1, "\t");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    CharSequence _xifexpression_2 = null;
-    boolean _hasHandlers_1 = this.hasHandlers(watcher);
-    if (_hasHandlers_1) {
-      StringConcatenation _builder_3 = new StringConcatenation();
-      _builder_3.append("while (active) {");
-      _builder_3.newLine();
-      _builder_3.append("\t");
-      _builder_3.append("log.info(\"");
-      String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
-      _builder_3.append(_firstUpper_1, "\t");
-      _builder_3.append(" Service started!\");");
-      _builder_3.newLineIfNotEmpty();
-      _builder_3.append("\t");
-      _builder_3.append("processEvents();");
-      _builder_3.newLine();
-      _builder_3.append("}");
-      _builder_3.newLine();
-      _xifexpression_2 = _builder_3;
-    }
-    _builder.append(_xifexpression_2, "\t");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("log.info(\"WatcherService ");
-    String _firstUpper_2 = StringExtensions.toFirstUpper(watcher.getName());
-    _builder.append(_firstUpper_2, "\t");
-    _builder.append(" successfully started.\");");
-    _builder.newLineIfNotEmpty();
-    _builder.append("} catch (Exception e) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("log.error(\"WatcherService ");
-    String _firstUpper_3 = StringExtensions.toFirstUpper(watcher.getName());
-    _builder.append(_firstUpper_3, "\t");
-    _builder.append(" interrupted due to: \", e);");
-    _builder.newLineIfNotEmpty();
-    _builder.append("}");
-    return _builder.toString();
-  }
-  
-  public String getDeactivate(final SignalWatcher watcher) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("try {");
-    _builder.newLine();
-    _builder.append("\t");
-    CharSequence _xifexpression = null;
-    boolean _hasSchedulers = this.hasSchedulers(watcher);
-    if (_hasSchedulers) {
-      StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append("if(getScheduler() != null){");
+      _builder_1.append("try {");
       _builder_1.newLine();
       _builder_1.append("\t");
-      _builder_1.append("shutdownScheduler();");
+      String _registerHandlerPathToWatch = this.registerHandlerPathToWatch(signal);
+      _builder_1.append(_registerHandlerPathToWatch, "\t");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("log.info(\"");
+      String _firstUpper = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+      _builder_1.append(_firstUpper, "\t");
+      _builder_1.append("Watcher service successfully started.\");");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("processEvents();");
       _builder_1.newLine();
+      _builder_1.append("} catch (Exception e) {");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("log.error(\"");
+      String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalWatcher)signal).getName());
+      _builder_1.append(_firstUpper_1, "\t");
+      _builder_1.append("Watcher service interrupted due to: \", e);");
+      _builder_1.newLineIfNotEmpty();
       _builder_1.append("}");
-      _builder_1.newLine();
       _xifexpression = _builder_1;
+    } else {
+      CharSequence _xifexpression_1 = null;
+      if ((signal instanceof SignalScheduler)) {
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append("try {");
+        _builder_2.newLine();
+        _builder_2.append("\t");
+        _builder_2.append("scheduler = createScheduler(\"");
+        String _firstUpper_2 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_2.append(_firstUpper_2, "\t");
+        _builder_2.append("Scheduler\");");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("\t");
+        _builder_2.append("scheduleAllJobs();");
+        _builder_2.newLine();
+        _builder_2.append("\t");
+        _builder_2.append("startScheduler();");
+        _builder_2.newLine();
+        _builder_2.append("} catch (Exception e) {");
+        _builder_2.newLine();
+        _builder_2.append("\t");
+        _builder_2.append("log.error(\"");
+        String _firstUpper_3 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+        _builder_2.append(_firstUpper_3, "\t");
+        _builder_2.append("Scheduler service interrupted due to: \", e);");
+        _builder_2.newLineIfNotEmpty();
+        _builder_2.append("}");
+        _xifexpression_1 = _builder_2;
+      }
+      _xifexpression = _xifexpression_1;
     }
-    _builder.append(_xifexpression, "\t");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t");
-    _builder.append("stopThread();");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("thread.join();");
-    _builder.newLine();
-    _builder.append("} catch (Exception e) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("e.printStackTrace();");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("log.info(\"Watcher shutted down...\");");
-    _builder.newLine();
+    _builder.append(_xifexpression);
     return _builder.toString();
   }
   
-  public String scheduleAllJobs(final SignalWatcher watcher) {
+  public String getDeactivate(final SignalDefinition signal) {
+    StringConcatenation _builder = new StringConcatenation();
+    CharSequence _xifexpression = null;
+    if ((signal instanceof SignalScheduler)) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append("try {");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("if(scheduler != null){");
+      _builder_1.newLine();
+      _builder_1.append("\t\t");
+      _builder_1.append("shutdownScheduler(false);");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("}");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("thread.join();");
+      _builder_1.newLine();
+      _builder_1.append("} catch (Exception e) {");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("log.error(\"");
+      String _firstUpper = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+      _builder_1.append(_firstUpper, "\t");
+      _builder_1.append("Scheduler service shortly interrupted ...\", e);");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("}");
+      _builder_1.newLine();
+      _builder_1.append("log.info(\"");
+      String _firstUpper_1 = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+      _builder_1.append(_firstUpper_1);
+      _builder_1.append("Scheduler service shutted down...\");");
+      _builder_1.newLineIfNotEmpty();
+      _xifexpression = _builder_1;
+    } else {
+      StringConcatenation _builder_2 = new StringConcatenation();
+      _builder_2.append("try {");
+      _builder_2.newLine();
+      _builder_2.append("\t");
+      _builder_2.append("closeWatcher();");
+      _builder_2.newLine();
+      _builder_2.append("\t");
+      _builder_2.append("stopWatcherJobsHandling();");
+      _builder_2.newLine();
+      _builder_2.append("\t");
+      _builder_2.append("thread.join();");
+      _builder_2.newLine();
+      _builder_2.append("} catch (Exception e) {");
+      _builder_2.newLine();
+      _builder_2.append("\t");
+      _builder_2.append("log.error(\"");
+      String _firstUpper_2 = StringExtensions.toFirstUpper(signal.getName());
+      _builder_2.append(_firstUpper_2, "\t");
+      _builder_2.append("Watcher service shortly interrupted ...\", e);");
+      _builder_2.newLineIfNotEmpty();
+      _builder_2.append("}");
+      _builder_2.newLine();
+      _builder_2.append("log.info(\"");
+      String _firstUpper_3 = StringExtensions.toFirstUpper(signal.getName());
+      _builder_2.append(_firstUpper_3);
+      _builder_2.append("Watcher service shutted down...\");");
+      _builder_2.newLineIfNotEmpty();
+      _xifexpression = _builder_2;
+    }
+    _builder.append(_xifexpression);
+    _builder.newLineIfNotEmpty();
+    return _builder.toString();
+  }
+  
+  public String scheduleAllJobs(final SignalScheduler scheduler) {
     int index = 1;
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("log.info(\"Starting scheduling all jobs ...\");");
-    _builder.newLine();
+    _builder.append("log.info(\"");
+    String _firstUpper = StringExtensions.toFirstUpper(scheduler.getName());
+    _builder.append(_firstUpper);
+    _builder.append("Scheduler - Starting scheduling all jobs ...\");");
+    _builder.newLineIfNotEmpty();
     _builder.append("Trigger trigger; JobDetail job; Date ft; String expr; int hour; int min; int dOw; int dOm; String key;String keyOne;String keyTwo;");
     _builder.newLine();
     String result = _builder.toString();
-    EList<SignalHandler> _handlers = watcher.getHandlers();
-    for (final SignalHandler handler : _handlers) {
-      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-      if ((_triggerpolicy instanceof SignalScheduler)) {
-        TriggerPolicy _triggerpolicy_1 = handler.getTriggerpolicy();
-        SignalScheduler signal = ((SignalScheduler) _triggerpolicy_1);
-        Scheduler _scheduler = signal.getScheduler();
-        if ((_scheduler instanceof CronScheduler)) {
-          Scheduler _scheduler_1 = signal.getScheduler();
-          CronScheduler scheduler = ((CronScheduler) _scheduler_1);
-          if ((((scheduler != null) && (scheduler.getExpression() != null)) && (!scheduler.getExpression().isEmpty()))) {
-            StringConcatenation _builder_1 = new StringConcatenation();
-            _builder_1.append("job = createDataTransferJob(\"");
-            QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-            _builder_1.append(_fullyQualifiedName);
-            _builder_1.append("job");
-            _builder_1.append(index);
-            _builder_1.append("\", \"jobs\", \"-\", ");
-            boolean _equals = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
-            _builder_1.append(_equals);
-            _builder_1.append(", \"");
-            String _name = handler.getName();
-            _builder_1.append(_name);
-            _builder_1.append("\");");
-            _builder_1.newLineIfNotEmpty();
-            _builder_1.append("key = watcherid + \".handler.");
-            String _name_1 = handler.getName();
-            _builder_1.append(_name_1);
-            _builder_1.append("\" + OSBPSignalConstants.CRON_SCHEDULER;");
-            _builder_1.newLineIfNotEmpty();
-            _builder_1.append("expr = getCronExpressionValue(getHandlerPropertyFromConfigurationFile(key));");
-            _builder_1.newLine();
-            _builder_1.append("trigger = createCronTrigger(\"");
-            QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-            _builder_1.append(_fullyQualifiedName_1);
-            _builder_1.append("trigger");
-            _builder_1.append(index);
-            _builder_1.append("\", \"triggers\", expr != null ? expr : getWatcherConfig(key));");
-            _builder_1.newLineIfNotEmpty();
-            _builder_1.append("ft = scheduleJob(job, trigger);");
-            _builder_1.newLine();
-            _builder_1.append("log.info(\"Job");
-            _builder_1.append(index);
-            _builder_1.append(" has been scheduled to run at: \" + ft);");
-            _builder_1.newLineIfNotEmpty();
-            result = result.concat(_builder_1.toString());
+    SchedulerType _schedulertype = scheduler.getSchedulertype();
+    if ((_schedulertype instanceof CronScheduler)) {
+      SchedulerType _schedulertype_1 = scheduler.getSchedulertype();
+      CronScheduler type = ((CronScheduler) _schedulertype_1);
+      if ((((type != null) && (type.getExpression() != null)) && (!type.getExpression().isEmpty()))) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append("job = createDataTransferJob(\"");
+        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+        _builder_1.append(_fullyQualifiedName);
+        _builder_1.append("SchedulerJob");
+        _builder_1.append(index);
+        _builder_1.append("\", \"jobs\", \"-\", ");
+        boolean _equals = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+        _builder_1.append(_equals);
+        _builder_1.append(", \"");
+        QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+        _builder_1.append(_fullyQualifiedName_1);
+        _builder_1.append("\", ");
+        String _firstUpper_1 = StringExtensions.toFirstUpper(scheduler.getName());
+        String _plus = (_firstUpper_1 + "Scheduler");
+        _builder_1.append(_plus);
+        _builder_1.append(".class);");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("key = \"");
+        QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+        _builder_1.append(_fullyQualifiedName_2);
+        _builder_1.append("Scheduler\" + SignalConstants.CRON_SCHEDULER;");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("expr = getCronExpressionValue(getHandlerPropertyFromConfigurationFile(key));");
+        _builder_1.newLine();
+        _builder_1.append("trigger = createCronTrigger(\"");
+        QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+        _builder_1.append(_fullyQualifiedName_3);
+        _builder_1.append("SchedulerTrigger");
+        _builder_1.append(index);
+        _builder_1.append("\", \"triggers\", expr != null ? expr : \"");
+        String _expression = type.getExpression();
+        _builder_1.append(_expression);
+        _builder_1.append("\");");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("ft = scheduleJob(job, trigger);");
+        _builder_1.newLine();
+        _builder_1.append("log.info(\"");
+        String _firstUpper_2 = StringExtensions.toFirstUpper(scheduler.getName());
+        _builder_1.append(_firstUpper_2);
+        _builder_1.append("SchedulerJob");
+        _builder_1.append(index);
+        _builder_1.append(" has been scheduled to run at: \" + ft);");
+        _builder_1.newLineIfNotEmpty();
+        result = result.concat(_builder_1.toString());
+      }
+    } else {
+      SchedulerType _schedulertype_2 = scheduler.getSchedulertype();
+      if ((_schedulertype_2 instanceof HourlyScheduler)) {
+        SchedulerType _schedulertype_3 = scheduler.getSchedulertype();
+        HourlyScheduler type_1 = ((HourlyScheduler) _schedulertype_3);
+        if (((type_1 != null) && (type_1.getMinute() > (-1)))) {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("job = createDataTransferJob(\"");
+          QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+          _builder_2.append(_fullyQualifiedName_4);
+          _builder_2.append("SchedulerJob");
+          _builder_2.append(index);
+          _builder_2.append("\", \"jobs\", \"-\", ");
+          boolean _equals_1 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+          _builder_2.append(_equals_1);
+          _builder_2.append(", \"");
+          QualifiedName _fullyQualifiedName_5 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+          _builder_2.append(_fullyQualifiedName_5);
+          _builder_2.append("\", ");
+          String _firstUpper_3 = StringExtensions.toFirstUpper(scheduler.getName());
+          String _plus_1 = (_firstUpper_3 + "Scheduler");
+          _builder_2.append(_plus_1);
+          _builder_2.append(".class);");
+          _builder_2.newLineIfNotEmpty();
+          _builder_2.append("key = \"");
+          QualifiedName _fullyQualifiedName_6 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+          _builder_2.append(_fullyQualifiedName_6);
+          _builder_2.append("Scheduler\" + SignalConstants.HOURLY_SCHEDULER;");
+          _builder_2.newLineIfNotEmpty();
+          _builder_2.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(key));");
+          _builder_2.newLine();
+          _builder_2.append("trigger = createHourlyTrigger(\"");
+          QualifiedName _fullyQualifiedName_7 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+          _builder_2.append(_fullyQualifiedName_7);
+          _builder_2.append("SchedulerTrigger");
+          _builder_2.append(index);
+          _builder_2.append("\", \"triggers\", min>=0? min : ");
+          int _minute = type_1.getMinute();
+          _builder_2.append(_minute);
+          _builder_2.append(");");
+          _builder_2.newLineIfNotEmpty();
+          _builder_2.append("ft = scheduleJob(job, trigger);");
+          _builder_2.newLine();
+          _builder_2.append("log.info(\"");
+          String _firstUpper_4 = StringExtensions.toFirstUpper(scheduler.getName());
+          _builder_2.append(_firstUpper_4);
+          _builder_2.append("SchedulerJob");
+          _builder_2.append(index);
+          _builder_2.append(" has been scheduled to run at: \" + ft);");
+          _builder_2.newLineIfNotEmpty();
+          result = result.concat(_builder_2.toString());
+        }
+      } else {
+        SchedulerType _schedulertype_4 = scheduler.getSchedulertype();
+        if ((_schedulertype_4 instanceof DailyScheduler)) {
+          SchedulerType _schedulertype_5 = scheduler.getSchedulertype();
+          DailyScheduler type_2 = ((DailyScheduler) _schedulertype_5);
+          if ((((type_2 != null) && (type_2.getHour() > (-1))) && (type_2.getMinute() > (-1)))) {
+            StringConcatenation _builder_3 = new StringConcatenation();
+            _builder_3.append("job = createDataTransferJob(\"");
+            QualifiedName _fullyQualifiedName_8 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+            _builder_3.append(_fullyQualifiedName_8);
+            _builder_3.append("SchedulerJob");
+            _builder_3.append(index);
+            _builder_3.append("\", \"jobs\", \"-\", ");
+            boolean _equals_2 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+            _builder_3.append(_equals_2);
+            _builder_3.append(", \"");
+            QualifiedName _fullyQualifiedName_9 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+            _builder_3.append(_fullyQualifiedName_9);
+            _builder_3.append("\", ");
+            String _firstUpper_5 = StringExtensions.toFirstUpper(scheduler.getName());
+            String _plus_2 = (_firstUpper_5 + "Scheduler");
+            _builder_3.append(_plus_2);
+            _builder_3.append(".class);");
+            _builder_3.newLineIfNotEmpty();
+            _builder_3.append("key = \"");
+            QualifiedName _fullyQualifiedName_10 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+            _builder_3.append(_fullyQualifiedName_10);
+            _builder_3.append("Scheduler\" + SignalConstants.DAILY_SCHEDULER_HOUR;");
+            _builder_3.newLineIfNotEmpty();
+            _builder_3.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(key));");
+            _builder_3.newLine();
+            _builder_3.append("keyOne = \"");
+            QualifiedName _fullyQualifiedName_11 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+            _builder_3.append(_fullyQualifiedName_11);
+            _builder_3.append("Scheduler\" + SignalConstants.DAILY_SCHEDULER_MIN;");
+            _builder_3.newLineIfNotEmpty();
+            _builder_3.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyOne));");
+            _builder_3.newLine();
+            _builder_3.append("trigger = createDailyTriggerAtHourandMins(\"");
+            QualifiedName _fullyQualifiedName_12 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+            _builder_3.append(_fullyQualifiedName_12);
+            _builder_3.append("SchedulerTrigger");
+            _builder_3.append(index);
+            _builder_3.append("\", \"triggers\", hour>=0 ? hour : ");
+            int _hour = type_2.getHour();
+            _builder_3.append(_hour);
+            _builder_3.append(", min>=0 ? min : ");
+            int _minute_1 = type_2.getMinute();
+            _builder_3.append(_minute_1);
+            _builder_3.append(");");
+            _builder_3.newLineIfNotEmpty();
+            _builder_3.append("ft = scheduleJob(job, trigger);");
+            _builder_3.newLine();
+            _builder_3.append("log.info(\"");
+            String _firstUpper_6 = StringExtensions.toFirstUpper(scheduler.getName());
+            _builder_3.append(_firstUpper_6);
+            _builder_3.append("SchedulerJob");
+            _builder_3.append(index);
+            _builder_3.append(" has been scheduled to run at: \" + ft);");
+            _builder_3.newLineIfNotEmpty();
+            result = result.concat(_builder_3.toString());
           }
         } else {
-          Scheduler _scheduler_2 = signal.getScheduler();
-          if ((_scheduler_2 instanceof HourlyScheduler)) {
-            Scheduler _scheduler_3 = signal.getScheduler();
-            HourlyScheduler scheduler_1 = ((HourlyScheduler) _scheduler_3);
-            if (((scheduler_1 != null) && (scheduler_1.getMinute() > (-1)))) {
-              StringConcatenation _builder_2 = new StringConcatenation();
-              _builder_2.append("job = createDataTransferJob(\"");
-              QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-              _builder_2.append(_fullyQualifiedName_2);
-              _builder_2.append("job");
-              _builder_2.append(index);
-              _builder_2.append("\", \"jobs\", \"-\", ");
-              boolean _equals_1 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
-              _builder_2.append(_equals_1);
-              _builder_2.append(", \"");
-              String _name_2 = handler.getName();
-              _builder_2.append(_name_2);
-              _builder_2.append("\");");
-              _builder_2.newLineIfNotEmpty();
-              _builder_2.append("key = watcherid + \".handler.");
-              String _name_3 = handler.getName();
-              _builder_2.append(_name_3);
-              _builder_2.append("\" + OSBPSignalConstants.HOURLY_SCHEDULER;");
-              _builder_2.newLineIfNotEmpty();
-              _builder_2.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(key));");
-              _builder_2.newLine();
-              _builder_2.append("trigger = createHourlyTrigger(\"");
-              QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-              _builder_2.append(_fullyQualifiedName_3);
-              _builder_2.append("trigger");
-              _builder_2.append(index);
-              _builder_2.append("\", \"triggers\", min>0? min : getMinutesValue(getWatcherConfig(key)));");
-              _builder_2.newLineIfNotEmpty();
-              _builder_2.append("ft = scheduleJob(job, trigger);");
-              _builder_2.newLine();
-              _builder_2.append("log.info(\"Job");
-              _builder_2.append(index);
-              _builder_2.append(" has been scheduled to run at: \" + ft);");
-              _builder_2.newLineIfNotEmpty();
-              result = result.concat(_builder_2.toString());
+          SchedulerType _schedulertype_6 = scheduler.getSchedulertype();
+          if ((_schedulertype_6 instanceof WeeklyScheduler)) {
+            SchedulerType _schedulertype_7 = scheduler.getSchedulertype();
+            WeeklyScheduler type_3 = ((WeeklyScheduler) _schedulertype_7);
+            if (((((type_3 != null) && (type_3.getDayofweek() != null)) && (type_3.getHour() > (-1))) && 
+              (type_3.getMinute() > (-1)))) {
+              StringConcatenation _builder_4 = new StringConcatenation();
+              _builder_4.append("job = createDataTransferJob(\"");
+              QualifiedName _fullyQualifiedName_13 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+              _builder_4.append(_fullyQualifiedName_13);
+              _builder_4.append("SchedulerJob");
+              _builder_4.append(index);
+              _builder_4.append("\", \"jobs\", \"-\", ");
+              boolean _equals_3 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+              _builder_4.append(_equals_3);
+              _builder_4.append(", \"");
+              QualifiedName _fullyQualifiedName_14 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+              _builder_4.append(_fullyQualifiedName_14);
+              _builder_4.append("\", ");
+              String _firstUpper_7 = StringExtensions.toFirstUpper(scheduler.getName());
+              String _plus_3 = (_firstUpper_7 + "Scheduler");
+              _builder_4.append(_plus_3);
+              _builder_4.append(".class);");
+              _builder_4.newLineIfNotEmpty();
+              _builder_4.append("key = \"");
+              QualifiedName _fullyQualifiedName_15 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+              _builder_4.append(_fullyQualifiedName_15);
+              _builder_4.append("Scheduler\" + SignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK;");
+              _builder_4.newLineIfNotEmpty();
+              _builder_4.append("dOw = getDayOfWeekValue(getHandlerPropertyFromConfigurationFile(key));");
+              _builder_4.newLine();
+              _builder_4.append("keyOne = \"");
+              QualifiedName _fullyQualifiedName_16 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+              _builder_4.append(_fullyQualifiedName_16);
+              _builder_4.append("Scheduler\" + SignalConstants.WEEKLY_SCHEDULER_HOUR;");
+              _builder_4.newLineIfNotEmpty();
+              _builder_4.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
+              _builder_4.newLine();
+              _builder_4.append("keyTwo = \"");
+              QualifiedName _fullyQualifiedName_17 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+              _builder_4.append(_fullyQualifiedName_17);
+              _builder_4.append("Scheduler\" + SignalConstants.WEEKLY_SCHEDULER_MIN;");
+              _builder_4.newLineIfNotEmpty();
+              _builder_4.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
+              _builder_4.newLine();
+              _builder_4.append("trigger = createWeeklyTriggerOnDayAndHourAndMinute(\"");
+              QualifiedName _fullyQualifiedName_18 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+              _builder_4.append(_fullyQualifiedName_18);
+              _builder_4.append("SchedulerTrigger");
+              _builder_4.append(index);
+              _builder_4.append("\", \"triggers\", dOw>0? dOw : ");
+              int _ordinal = type_3.getDayofweek().ordinal();
+              _builder_4.append(_ordinal);
+              _builder_4.append(", hour>=0 ? hour : ");
+              int _hour_1 = type_3.getHour();
+              _builder_4.append(_hour_1);
+              _builder_4.append(", min>=0 ? min : ");
+              int _minute_2 = type_3.getMinute();
+              _builder_4.append(_minute_2);
+              _builder_4.append(");");
+              _builder_4.newLineIfNotEmpty();
+              _builder_4.append("ft = scheduleJob(job, trigger);");
+              _builder_4.newLine();
+              _builder_4.append("log.info(\"");
+              String _firstUpper_8 = StringExtensions.toFirstUpper(scheduler.getName());
+              _builder_4.append(_firstUpper_8);
+              _builder_4.append("SchedulerJob");
+              _builder_4.append(index);
+              _builder_4.append(" has been scheduled to run at: \" + ft);");
+              _builder_4.newLineIfNotEmpty();
+              result = result.concat(_builder_4.toString());
             }
           } else {
-            Scheduler _scheduler_4 = signal.getScheduler();
-            if ((_scheduler_4 instanceof DailyScheduler)) {
-              Scheduler _scheduler_5 = signal.getScheduler();
-              DailyScheduler scheduler_2 = ((DailyScheduler) _scheduler_5);
-              if ((((scheduler_2 != null) && (scheduler_2.getHour() > (-1))) && (scheduler_2.getMinute() > (-1)))) {
-                StringConcatenation _builder_3 = new StringConcatenation();
-                _builder_3.append("job = createDataTransferJob(\"");
-                QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-                _builder_3.append(_fullyQualifiedName_4);
-                _builder_3.append("job");
-                _builder_3.append(index);
-                _builder_3.append("\", \"jobs\", \"-\", ");
-                boolean _equals_2 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
-                _builder_3.append(_equals_2);
-                _builder_3.append(", \"");
-                String _name_4 = handler.getName();
-                _builder_3.append(_name_4);
-                _builder_3.append("\");");
-                _builder_3.newLineIfNotEmpty();
-                _builder_3.append("key = watcherid + \".handler.");
-                String _name_5 = handler.getName();
-                _builder_3.append(_name_5);
-                _builder_3.append("\" + OSBPSignalConstants.DAILY_SCHEDULER_HOUR;");
-                _builder_3.newLineIfNotEmpty();
-                _builder_3.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(key));");
-                _builder_3.newLine();
-                _builder_3.append("keyOne = watcherid + \".handler.");
-                String _name_6 = handler.getName();
-                _builder_3.append(_name_6);
-                _builder_3.append("\" + OSBPSignalConstants.DAILY_SCHEDULER_MIN;");
-                _builder_3.newLineIfNotEmpty();
-                _builder_3.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyOne));");
-                _builder_3.newLine();
-                _builder_3.append("trigger = createDailyTriggerAtHourandMins(\"");
-                QualifiedName _fullyQualifiedName_5 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-                _builder_3.append(_fullyQualifiedName_5);
-                _builder_3.append("trigger");
-                _builder_3.append(index);
-                _builder_3.append("\", \"triggers\", hour>0 ? hour : getHourValue(getWatcherConfig(key)),");
-                _builder_3.newLineIfNotEmpty();
-                _builder_3.append(" ");
-                _builder_3.append("min>0 ? min : getMinutesValue(getWatcherConfig(keyOne)));");
-                _builder_3.newLine();
-                _builder_3.append("ft = scheduleJob(job, trigger);");
-                _builder_3.newLine();
-                _builder_3.append("log.info(\"Job");
-                _builder_3.append(index);
-                _builder_3.append(" has been scheduled to run at: \" + ft);");
-                _builder_3.newLineIfNotEmpty();
-                result = result.concat(_builder_3.toString());
-              }
-            } else {
-              Scheduler _scheduler_6 = signal.getScheduler();
-              if ((_scheduler_6 instanceof WeeklyScheduler)) {
-                Scheduler _scheduler_7 = signal.getScheduler();
-                WeeklyScheduler scheduler_3 = ((WeeklyScheduler) _scheduler_7);
-                if (((((scheduler_3 != null) && (scheduler_3.getDayofweek() != null)) && (scheduler_3.getHour() > (-1))) && 
-                  (scheduler_3.getMinute() > (-1)))) {
-                  StringConcatenation _builder_4 = new StringConcatenation();
-                  _builder_4.append("job = createDataTransferJob(\"");
-                  QualifiedName _fullyQualifiedName_6 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-                  _builder_4.append(_fullyQualifiedName_6);
-                  _builder_4.append("job");
-                  _builder_4.append(index);
-                  _builder_4.append("\", \"jobs\", \"-\", ");
-                  boolean _equals_3 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
-                  _builder_4.append(_equals_3);
-                  _builder_4.append(", \"");
-                  String _name_7 = handler.getName();
-                  _builder_4.append(_name_7);
-                  _builder_4.append("\");");
-                  _builder_4.newLineIfNotEmpty();
-                  _builder_4.append("key = watcherid + \".handler.");
-                  String _name_8 = handler.getName();
-                  _builder_4.append(_name_8);
-                  _builder_4.append("\" + OSBPSignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK;");
-                  _builder_4.newLineIfNotEmpty();
-                  _builder_4.append("dOw = getDayOfWeekValue(getHandlerPropertyFromConfigurationFile(key));");
-                  _builder_4.newLine();
-                  _builder_4.append("keyOne = watcherid + \".handler.");
-                  String _name_9 = handler.getName();
-                  _builder_4.append(_name_9);
-                  _builder_4.append("\" + OSBPSignalConstants.WEEKLY_SCHEDULER_HOUR;");
-                  _builder_4.newLineIfNotEmpty();
-                  _builder_4.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
-                  _builder_4.newLine();
-                  _builder_4.append("keyTwo = watcherid + \".handler.");
-                  String _name_10 = handler.getName();
-                  _builder_4.append(_name_10);
-                  _builder_4.append("\" + OSBPSignalConstants.WEEKLY_SCHEDULER_MIN;");
-                  _builder_4.newLineIfNotEmpty();
-                  _builder_4.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
-                  _builder_4.newLine();
-                  _builder_4.append("trigger = createWeeklyTriggerOnDayAndHourAndMinute(\"");
-                  QualifiedName _fullyQualifiedName_7 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-                  _builder_4.append(_fullyQualifiedName_7);
-                  _builder_4.append("trigger");
-                  _builder_4.append(index);
-                  _builder_4.append("\", \"triggers\", dOw>0? dOw : getDayOfWeekValue(getWatcherConfig(key)), ");
-                  _builder_4.newLineIfNotEmpty();
-                  _builder_4.append("hour>0 ? hour : getHourValue(getWatcherConfig(keyOne)), min>0 ? min : getMinutesValue(getWatcherConfig(keyTwo)));");
-                  _builder_4.newLine();
-                  _builder_4.append("ft = scheduleJob(job, trigger);");
-                  _builder_4.newLine();
-                  _builder_4.append("log.info(\"Job");
-                  _builder_4.append(index);
-                  _builder_4.append(" has been scheduled to run at: \" + ft);");
-                  _builder_4.newLineIfNotEmpty();
-                  result = result.concat(_builder_4.toString());
-                }
-              } else {
-                Scheduler _scheduler_8 = signal.getScheduler();
-                if ((_scheduler_8 instanceof MonthlyScheduler)) {
-                  Scheduler _scheduler_9 = signal.getScheduler();
-                  MonthlyScheduler scheduler_4 = ((MonthlyScheduler) _scheduler_9);
-                  if (((((scheduler_4 != null) && (scheduler_4.getDayofmonth() > (-1))) && (scheduler_4.getHour() > (-1))) && (scheduler_4.getMinute() > (-1)))) {
-                    StringConcatenation _builder_5 = new StringConcatenation();
-                    _builder_5.append("job = createDataTransferJob(\"");
-                    QualifiedName _fullyQualifiedName_8 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-                    _builder_5.append(_fullyQualifiedName_8);
-                    _builder_5.append("job");
-                    _builder_5.append(index);
-                    _builder_5.append("\", \"jobs\", \"-\", ");
-                    boolean _equals_4 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
-                    _builder_5.append(_equals_4);
-                    _builder_5.append(", \"");
-                    String _name_11 = handler.getName();
-                    _builder_5.append(_name_11);
-                    _builder_5.append("\");");
-                    _builder_5.newLineIfNotEmpty();
-                    _builder_5.append("key = watcherid + \".handler.");
-                    String _name_12 = handler.getName();
-                    _builder_5.append(_name_12);
-                    _builder_5.append("\" + OSBPSignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH;");
-                    _builder_5.newLineIfNotEmpty();
-                    _builder_5.append("dOm = getDayOfMonthValue(getHandlerPropertyFromConfigurationFile(key));");
-                    _builder_5.newLine();
-                    _builder_5.append("keyOne = watcherid + \".handler.");
-                    String _name_13 = handler.getName();
-                    _builder_5.append(_name_13);
-                    _builder_5.append("\" + OSBPSignalConstants.MONTHLY_SCHEDULER_HOUR;");
-                    _builder_5.newLineIfNotEmpty();
-                    _builder_5.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
-                    _builder_5.newLine();
-                    _builder_5.append("keyTwo = watcherid + \".handler.");
-                    String _name_14 = handler.getName();
-                    _builder_5.append(_name_14);
-                    _builder_5.append("\" + OSBPSignalConstants.MONTHLY_SCHEDULER_MIN;");
-                    _builder_5.newLineIfNotEmpty();
-                    _builder_5.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
-                    _builder_5.newLine();
-                    _builder_5.append("trigger = createMonthlyTriggerOnDayAndHourAndMinute(\"");
-                    QualifiedName _fullyQualifiedName_9 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
-                    _builder_5.append(_fullyQualifiedName_9);
-                    _builder_5.append("trigger");
-                    _builder_5.append(index);
-                    _builder_5.append("\", \"triggers\", dOm>0? dOm : getDayOfMonthValue(getWatcherConfig(key)),");
-                    _builder_5.newLineIfNotEmpty();
-                    _builder_5.append(" ");
-                    _builder_5.append("hour>0 ? hour : getHourValue(getWatcherConfig(keyOne)), min>0 ? min : getMinutesValue(getWatcherConfig(keyTwo)));");
-                    _builder_5.newLine();
-                    _builder_5.append("ft = scheduleJob(job, trigger);");
-                    _builder_5.newLine();
-                    _builder_5.append("log.info(\"Job");
-                    _builder_5.append(index);
-                    _builder_5.append(" has been scheduled to run at: \" + ft);");
-                    _builder_5.newLineIfNotEmpty();
-                    result = result.concat(_builder_5.toString());
-                  }
-                }
+            SchedulerType _schedulertype_8 = scheduler.getSchedulertype();
+            if ((_schedulertype_8 instanceof MonthlyScheduler)) {
+              SchedulerType _schedulertype_9 = scheduler.getSchedulertype();
+              MonthlyScheduler type_4 = ((MonthlyScheduler) _schedulertype_9);
+              if (((((type_4 != null) && (type_4.getDayofmonth() > (-1))) && (type_4.getHour() > (-1))) && (type_4.getMinute() > (-1)))) {
+                StringConcatenation _builder_5 = new StringConcatenation();
+                _builder_5.append("job = createDataTransferJob(\"");
+                QualifiedName _fullyQualifiedName_19 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+                _builder_5.append(_fullyQualifiedName_19);
+                _builder_5.append("SchedulerJob");
+                _builder_5.append(index);
+                _builder_5.append("\", \"jobs\", \"-\", ");
+                boolean _equals_4 = scheduler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+                _builder_5.append(_equals_4);
+                _builder_5.append(", \"");
+                QualifiedName _fullyQualifiedName_20 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+                _builder_5.append(_fullyQualifiedName_20);
+                _builder_5.append("\", ");
+                String _firstUpper_9 = StringExtensions.toFirstUpper(scheduler.getName());
+                String _plus_4 = (_firstUpper_9 + "Scheduler");
+                _builder_5.append(_plus_4);
+                _builder_5.append(".class);");
+                _builder_5.newLineIfNotEmpty();
+                _builder_5.append("key = \"");
+                QualifiedName _fullyQualifiedName_21 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+                _builder_5.append(_fullyQualifiedName_21);
+                _builder_5.append("Scheduler\" + SignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH;");
+                _builder_5.newLineIfNotEmpty();
+                _builder_5.append("dOm = getDayOfMonthValue(getHandlerPropertyFromConfigurationFile(key));");
+                _builder_5.newLine();
+                _builder_5.append("keyOne = \"");
+                QualifiedName _fullyQualifiedName_22 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+                _builder_5.append(_fullyQualifiedName_22);
+                _builder_5.append("Scheduler\" + SignalConstants.MONTHLY_SCHEDULER_HOUR;");
+                _builder_5.newLineIfNotEmpty();
+                _builder_5.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
+                _builder_5.newLine();
+                _builder_5.append("keyTwo = \"");
+                QualifiedName _fullyQualifiedName_23 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+                _builder_5.append(_fullyQualifiedName_23);
+                _builder_5.append("Scheduler\" + SignalConstants.MONTHLY_SCHEDULER_MIN;");
+                _builder_5.newLineIfNotEmpty();
+                _builder_5.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
+                _builder_5.newLine();
+                _builder_5.append("trigger = createMonthlyTriggerOnDayAndHourAndMinute(\"");
+                QualifiedName _fullyQualifiedName_24 = this._iQualifiedNameProvider.getFullyQualifiedName(scheduler);
+                _builder_5.append(_fullyQualifiedName_24);
+                _builder_5.append("SchedulerTrigger");
+                _builder_5.append(index);
+                _builder_5.append("\", \"triggers\", dOm>0? dOm : ");
+                int _dayofmonth = type_4.getDayofmonth();
+                _builder_5.append(_dayofmonth);
+                _builder_5.append(", hour>=0 ? hour : ");
+                int _hour_2 = type_4.getHour();
+                _builder_5.append(_hour_2);
+                _builder_5.append(", min>=0 ? min : ");
+                int _minute_3 = type_4.getMinute();
+                _builder_5.append(_minute_3);
+                _builder_5.append(");");
+                _builder_5.newLineIfNotEmpty();
+                _builder_5.append("ft = scheduleJob(job, trigger);");
+                _builder_5.newLine();
+                _builder_5.append("log.info(\"");
+                String _firstUpper_10 = StringExtensions.toFirstUpper(scheduler.getName());
+                _builder_5.append(_firstUpper_10);
+                _builder_5.append("SchedulerJob");
+                _builder_5.append(index);
+                _builder_5.append(" has been scheduled to run at: \" + ft);");
+                _builder_5.newLineIfNotEmpty();
+                result = result.concat(_builder_5.toString());
               }
             }
           }
         }
-        index++;
-      } else {
       }
     }
+    index++;
     StringConcatenation _builder_6 = new StringConcatenation();
-    _builder_6.append("log.info(\"Scheduling all jobs done ...\");");
-    _builder_6.newLine();
+    _builder_6.append("log.info(\"");
+    String _firstUpper_11 = StringExtensions.toFirstUpper(scheduler.getName());
+    _builder_6.append(_firstUpper_11);
+    _builder_6.append("Scheduler - Scheduling all jobs done.\");");
     result = result.concat(_builder_6.toString());
     return result;
   }
   
-  public boolean hasSchedulers(final SignalWatcher watcher) {
-    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
-      EList<SignalHandler> _handlers = watcher.getHandlers();
-      for (final SignalHandler handler : _handlers) {
-        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-        if ((_triggerpolicy instanceof SignalScheduler)) {
+  public String registerHandlerPathToWatch(final SignalDefinition signal) {
+    String result = "";
+    if ((signal instanceof SignalWatcher)) {
+      SignalDatainterchange interchange = this.getBaseInterchange(signal);
+      if ((interchange != null)) {
+        String modelurl = this.df.getDataInterchangeDirectoryUrlPath(interchange.getDataRef());
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("registerUrl(getHandlerPropertyFromConfigurationFile(\"");
+        String _name = interchange.getDataRef().getName();
+        _builder.append(_name);
+        _builder.append("-import\"),\"");
+        _builder.append(modelurl);
+        _builder.append("\");");
+        _builder.newLineIfNotEmpty();
+        result = result.concat(_builder.toString());
+      }
+    }
+    return result;
+  }
+  
+  /**
+   * Gives back the SignalDatainterchange unit with the
+   */
+  public SignalDatainterchange getBaseInterchange(final SignalDefinition signal) {
+    if ((signal instanceof SignalWatcher)) {
+      WatcherDefinition watcher = ((SignalWatcher)signal).getDefinition();
+      if ((watcher instanceof WatcherWithFileMask)) {
+        if (((watcher != null) && (((WatcherWithFileMask)watcher).getInterchange() != null))) {
+          return ((WatcherWithFileMask)watcher).getInterchange();
+        }
+      } else {
+        if ((watcher instanceof WatcherWithFileName)) {
+          if ((((watcher != null) && (((WatcherWithFileName)watcher).getInterchanges() != null)) && (!((WatcherWithFileName)watcher).getInterchanges().isEmpty()))) {
+            EList<SignalDatainterchange> _interchanges = ((WatcherWithFileName)watcher).getInterchanges();
+            for (final SignalDatainterchange unit : _interchanges) {
+              boolean _isBaseinterchange = unit.isBaseinterchange();
+              if (_isBaseinterchange) {
+                return unit;
+              }
+            }
+          }
+        }
+      }
+    } else {
+      if ((signal instanceof SignalScheduler)) {
+        if ((((signal != null) && (((SignalScheduler)signal).getInterchanges() != null)) && (!((SignalScheduler)signal).getInterchanges().isEmpty()))) {
+          EList<SignalDatainterchange> _interchanges_1 = ((SignalScheduler)signal).getInterchanges();
+          for (final SignalDatainterchange unit_1 : _interchanges_1) {
+            boolean _isBaseinterchange_1 = unit_1.isBaseinterchange();
+            if (_isBaseinterchange_1) {
+              return unit_1;
+            }
+          }
+        }
+      }
+    }
+    return null;
+  }
+  
+  /**
+   * Special function to read signal (watcher or scheduler) properties
+   * from configuration files.
+   */
+  public String handlerPropertyFromConfigurationFile(final SignalDefinition signal) {
+    String signalname = "";
+    if ((signal instanceof SignalScheduler)) {
+      String _firstUpper = StringExtensions.toFirstUpper(((SignalScheduler)signal).getName());
+      String _plus = (_firstUpper + "Scheduler");
+      signalname = _plus;
+    } else {
+      String _firstUpper_1 = StringExtensions.toFirstUpper(signal.getName());
+      String _plus_1 = (_firstUpper_1 + "Watcher");
+      signalname = _plus_1;
+    }
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("if (propertyname != null) {");
+    _builder.newLine();
+    _builder.append("\t");
+    String _xifexpression = null;
+    if ((signal instanceof SignalScheduler)) {
+      _xifexpression = this.df.getConfigFileURL(((SignalScheduler)signal).getInterchanges().get(0).getDataRef());
+    } else {
+      String _xifexpression_1 = null;
+      if ((signal instanceof SignalWatcher)) {
+        String _xblockexpression = null;
+        {
+          WatcherDefinition watcher = ((SignalWatcher)signal).getDefinition();
+          String _xifexpression_2 = null;
+          if ((watcher instanceof WatcherWithFileMask)) {
+            _xifexpression_2 = this.df.getConfigFileURL(((WatcherWithFileMask)watcher).getInterchange().getDataRef());
+          } else {
+            String _xifexpression_3 = null;
+            if ((watcher instanceof WatcherWithFileName)) {
+              _xifexpression_3 = this.df.getConfigFileURL(this.getBaseInterchange(signal).getDataRef());
+            }
+            _xifexpression_2 = _xifexpression_3;
+          }
+          _xblockexpression = _xifexpression_2;
+        }
+        _xifexpression_1 = _xblockexpression;
+      }
+      _xifexpression = _xifexpression_1;
+    }
+    _builder.append(_xifexpression, "\t");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("File file = new File(url);");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("if (file.exists()) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("try {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("FileInputStream fileInput = new FileInputStream(file);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("Properties properties = new Properties();");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("properties.loadFromXML(fileInput);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("fileInput.close();");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("String value = properties.getProperty(propertyname);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("if (value != null) {");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("if (log.isDebugEnabled()) {");
+    _builder.newLine();
+    _builder.append("\t\t\t\t\t");
+    _builder.append("log.debug(\"");
+    _builder.append(signalname, "\t\t\t\t\t");
+    _builder.append(" - getHandlerPropertyFromConfigurationFile propertyname[\" + propertyname");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t\t\t\t\t\t\t");
+    _builder.append("+ \"] -> value [\" + value + \"]\");");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("return value;");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("} catch (IOException e) {");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("StringWriter sw = new StringWriter();");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("e.printStackTrace(new PrintWriter(sw));");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("log.error(\"");
+    _builder.append(signalname, "\t\t\t");
+    _builder.append(" - Error during getHandlerPropertyFromConfigurationFile of propertyname: [\" + propertyname");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t\t\t\t\t");
+    _builder.append("+ \"] ... {}\", sw.toString());");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("if (log.isDebugEnabled()) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("log.debug(\"");
+    _builder.append(signalname, "\t");
+    _builder.append(" - getHandlerPropertyFromConfigurationFile propertyname[\" + propertyname + \"] -> value [null] because the given path\"");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("+ \" in \'Window->Preferences->OSBP Application Configuration->External Data Sources->DataInterchange Settings\' is non-existing or the propertyname is not defined.\");");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("return null;");
+    _builder.newLine();
+    String result = _builder.toString();
+    return result;
+  }
+  
+  public boolean hasSchedulers(final SignalPackage pck) {
+    if ((((pck != null) && (pck.getSignals() != null)) && (!pck.getSignals().isEmpty()))) {
+      EList<SignalDefinition> _signals = pck.getSignals();
+      for (final SignalDefinition signal : _signals) {
+        if ((signal instanceof SignalScheduler)) {
           return true;
         }
       }
@@ -1675,14 +2713,29 @@
     return false;
   }
   
-  public int getSchedulerCount(final SignalWatcher watcher) {
-    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
+  public boolean hasWatchers(final SignalPackage pck) {
+    if ((((pck != null) && (pck.getSignals() != null)) && (!pck.getSignals().isEmpty()))) {
+      EList<SignalDefinition> _signals = pck.getSignals();
+      for (final SignalDefinition signal : _signals) {
+        if ((signal instanceof SignalScheduler)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  public int getSignalCount(final SignalPackage pck, final boolean isWatcher) {
+    if ((((pck != null) && (pck.getSignals() != null)) && (!pck.getSignals().isEmpty()))) {
       int count = 0;
-      EList<SignalHandler> _handlers = watcher.getHandlers();
-      for (final SignalHandler handler : _handlers) {
-        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-        if ((_triggerpolicy instanceof SignalScheduler)) {
+      EList<SignalDefinition> _signals = pck.getSignals();
+      for (final SignalDefinition signal : _signals) {
+        if ((isWatcher && (signal instanceof SignalWatcher))) {
           count++;
+        } else {
+          if (((!isWatcher) && (signal instanceof SignalScheduler))) {
+            count++;
+          }
         }
       }
       return count;
@@ -1690,19 +2743,6 @@
     return (-1);
   }
   
-  public boolean hasHandlers(final SignalWatcher watcher) {
-    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
-      EList<SignalHandler> _handlers = watcher.getHandlers();
-      for (final SignalHandler handler : _handlers) {
-        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-        if ((_triggerpolicy instanceof TriggerFile)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  
   public void infer(final EObject signalPackage, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
     if (signalPackage instanceof SignalPackage) {
       _infer((SignalPackage)signalPackage, acceptor, isPreIndexingPhase);
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java
index 2b8c3fb..6b7fbd5 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
@@ -16,11 +16,15 @@
  */
 package org.eclipse.osbp.xtext.signal.jvmmodel;
 
+import com.google.common.collect.Iterators;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.net.URI;
 import java.net.URL;
 import java.nio.file.FileSystems;
 import java.nio.file.Files;
@@ -30,29 +34,55 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.Executors;
+import java.util.function.Consumer;
 import javax.inject.Inject;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
 import org.eclipse.osbp.datainterchange.api.IDataInterchange;
 import org.eclipse.osbp.preferences.ProductConfiguration;
+import org.eclipse.osbp.xtext.addons.EObjectHelper;
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalCommonData;
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants;
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher;
+import org.eclipse.osbp.xtext.signal.CronScheduler;
+import org.eclipse.osbp.xtext.signal.DailyScheduler;
+import org.eclipse.osbp.xtext.signal.DayOfWeekEnum;
+import org.eclipse.osbp.xtext.signal.HourlyScheduler;
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
+import org.eclipse.osbp.xtext.signal.SchedulerType;
+import org.eclipse.osbp.xtext.signal.SignalDefinition;
+import org.eclipse.osbp.xtext.signal.SignalPackage;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
+import org.eclipse.osbp.xtext.signal.SignalWatcher;
+import org.eclipse.osbp.xtext.signal.WatcherDefinition;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
+import org.eclipse.osbp.xtext.signal.common.SignalConstants;
+import org.eclipse.osbp.xtext.signal.common.WatcherImpl;
+import org.eclipse.xtend2.lib.StringConcatenation;
 import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.naming.QualifiedName;
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
 import org.eclipse.xtext.xbase.compiler.ImportManager;
 import org.eclipse.xtext.xbase.compiler.output.TreeAppendable;
+import org.eclipse.xtext.xbase.lib.Exceptions;
 import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.IteratorExtensions;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
 import org.quartz.JobDetail;
+import org.quartz.JobExecutionException;
 import org.quartz.SchedulerException;
 import org.quartz.Trigger;
+import org.quartz.impl.StdSchedulerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -62,6 +92,10 @@
   @Extension
   private BasicDslGeneratorUtils _basicDslGeneratorUtils;
   
+  @Inject
+  @Extension
+  private IQualifiedNameProvider _iQualifiedNameProvider;
+  
   public static String pckgName = null;
   
   @Override
@@ -71,15 +105,15 @@
       this.setBuilder(context.eResource());
       this._basicDslGeneratorUtils.addImportFor(this, importManager, 
         this._typeReferenceBuilder, 
-        OSBPSignalWatcher.class, 
-        OSBPSignalConstants.class, 
+        WatcherImpl.class, 
+        SignalConstants.class, 
         Paths.class, 
         WorkerThreadRunnable.class, 
         IPersistenceService.class, 
         IDataInterchange.class, 
         Files.class, 
-        OSBPSignalCommonData.class, 
         FileSystems.class, 
+        FileOutputStream.class, 
         Logger.class, 
         LoggerFactory.class, 
         HashMap.class, 
@@ -99,14 +133,227 @@
         IOException.class, 
         Date.class, 
         JobDetail.class, 
-        Trigger.class);
+        JobExecutionException.class, 
+        Trigger.class, 
+        URI.class, 
+        ThreadFactoryBuilder.class, 
+        StdSchedulerFactory.class);
       _xblockexpression = super.createAppendable(context, importManager, config);
     }
     return _xblockexpression;
   }
   
   @Override
-  public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
-    super.doGenerate(resource, fsa);
+  public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
+    final Procedure1<SignalPackage> _function = (SignalPackage it) -> {
+      this.generatePathConfig(fsa, it);
+    };
+    IteratorExtensions.<SignalPackage>forEach(Iterators.<SignalPackage>filter(EcoreUtil.<Object>getAllContents(EObjectHelper.getSemanticElement(input), false), SignalPackage.class), _function);
+    super.doGenerate(input, fsa);
+  }
+  
+  public void generatePathConfig(final IFileSystemAccess access, final SignalPackage pck) {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      String _property = System.getProperty("user.home");
+      _builder.append(_property);
+      _builder.append("/.osbee");
+      File dir = new File(_builder.toString());
+      boolean _exists = dir.exists();
+      boolean _not = (!_exists);
+      if (_not) {
+        dir.mkdir();
+      }
+      final HashSet<DataInterchangeGroup> dataGroups = new HashSet<DataInterchangeGroup>();
+      final Consumer<SignalDefinition> _function = (SignalDefinition it) -> {
+        if ((it instanceof SignalWatcher)) {
+          dataGroups.add(((SignalWatcher)it).getDefinition().getInterchangegroup());
+        } else {
+          if ((it instanceof SignalScheduler)) {
+            dataGroups.add(((SignalScheduler)it).getInterchangegroup());
+          }
+        }
+      };
+      pck.getSignals().forEach(_function);
+      for (final DataInterchangeGroup group : dataGroups) {
+        {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          String _property_1 = System.getProperty("user.home");
+          _builder_1.append(_property_1);
+          _builder_1.append("/.osbee/");
+          String _name = group.getName();
+          _builder_1.append(_name);
+          _builder_1.append("Config.xml");
+          File file = new File(_builder_1.toString());
+          file.setWritable(true, false);
+          boolean _exists_1 = file.exists();
+          if (_exists_1) {
+            final Properties properties = new Properties();
+            FileInputStream fileInput = new FileInputStream(file);
+            properties.loadFromXML(fileInput);
+            fileInput.close();
+            final Consumer<SignalDefinition> _function_1 = (SignalDefinition it) -> {
+              DataInterchangeGroup tempgroup = ((DataInterchangeGroup) null);
+              if ((it instanceof SignalWatcher)) {
+                tempgroup = ((SignalWatcher)it).getDefinition().getInterchangegroup();
+              } else {
+                if ((it instanceof SignalScheduler)) {
+                  tempgroup = ((SignalScheduler)it).getInterchangegroup();
+                }
+              }
+              if ((group == tempgroup)) {
+                if ((it instanceof SignalWatcher)) {
+                  WatcherDefinition watcher = ((SignalWatcher)it).getDefinition();
+                  boolean _containsKey = properties.containsKey(SignalConstants.MAXPARALLELTHREADCOUNT_NAME);
+                  boolean _not_1 = (!_containsKey);
+                  if (_not_1) {
+                    properties.put(SignalConstants.MAXPARALLELTHREADCOUNT_NAME, Integer.valueOf(SignalConstants.DEFAULT_PARALLEL_THREADCOUNT).toString());
+                  }
+                  if ((watcher instanceof WatcherWithFileMask)) {
+                    QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                    String _plus = (_fullyQualifiedName + "Watcher");
+                    String _plus_1 = (_plus + SignalConstants.FILEMASK);
+                    boolean _containsKey_1 = properties.containsKey(_plus_1);
+                    boolean _not_2 = (!_containsKey_1);
+                    if (_not_2) {
+                      QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                      String _plus_2 = (_fullyQualifiedName_1 + "Watcher");
+                      String _plus_3 = (_plus_2 + SignalConstants.FILEMASK);
+                      properties.put(_plus_3, ((WatcherWithFileMask)watcher).getFilemask());
+                    }
+                  } else {
+                    if ((watcher instanceof WatcherWithFileName)) {
+                      QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                      String _plus_4 = (_fullyQualifiedName_2 + "Watcher");
+                      String _plus_5 = (_plus_4 + SignalConstants.FILENAME);
+                      boolean _containsKey_2 = properties.containsKey(_plus_5);
+                      boolean _not_3 = (!_containsKey_2);
+                      if (_not_3) {
+                        QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                        String _plus_6 = (_fullyQualifiedName_3 + "Watcher");
+                        String _plus_7 = (_plus_6 + SignalConstants.FILENAME);
+                        properties.put(_plus_7, ((WatcherWithFileName)watcher).getFilename());
+                      }
+                    }
+                  }
+                } else {
+                  if ((it instanceof SignalScheduler)) {
+                    if (((((SignalScheduler)it).getSchedulertype() instanceof CronScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.CRON_SCHEDULER))))) {
+                      QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                      String _plus_8 = (_fullyQualifiedName_4 + "Scheduler");
+                      String _plus_9 = (_plus_8 + SignalConstants.CRON_SCHEDULER);
+                      SchedulerType _schedulertype = ((SignalScheduler)it).getSchedulertype();
+                      properties.put(_plus_9, ((CronScheduler) _schedulertype).getExpression());
+                    } else {
+                      if (((((SignalScheduler)it).getSchedulertype() instanceof HourlyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.HOURLY_SCHEDULER))))) {
+                        QualifiedName _fullyQualifiedName_5 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                        String _plus_10 = (_fullyQualifiedName_5 + "Scheduler");
+                        String _plus_11 = (_plus_10 + SignalConstants.HOURLY_SCHEDULER);
+                        SchedulerType _schedulertype_1 = ((SignalScheduler)it).getSchedulertype();
+                        properties.put(_plus_11, Integer.valueOf(((HourlyScheduler) _schedulertype_1).getMinute()).toString());
+                      } else {
+                        if (((((SignalScheduler)it).getSchedulertype() instanceof DailyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.DAILY_SCHEDULER_HOUR))))) {
+                          QualifiedName _fullyQualifiedName_6 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                          String _plus_12 = (_fullyQualifiedName_6 + "Scheduler");
+                          String _plus_13 = (_plus_12 + SignalConstants.DAILY_SCHEDULER_HOUR);
+                          StringConcatenation _builder_2 = new StringConcatenation();
+                          SchedulerType _schedulertype_2 = ((SignalScheduler)it).getSchedulertype();
+                          int _hour = ((DailyScheduler) _schedulertype_2).getHour();
+                          _builder_2.append(_hour);
+                          properties.put(_plus_13, _builder_2.toString());
+                        } else {
+                          if (((((SignalScheduler)it).getSchedulertype() instanceof DailyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.DAILY_SCHEDULER_MIN))))) {
+                            QualifiedName _fullyQualifiedName_7 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                            String _plus_14 = (_fullyQualifiedName_7 + "Scheduler");
+                            String _plus_15 = (_plus_14 + SignalConstants.DAILY_SCHEDULER_MIN);
+                            StringConcatenation _builder_3 = new StringConcatenation();
+                            SchedulerType _schedulertype_3 = ((SignalScheduler)it).getSchedulertype();
+                            int _minute = ((DailyScheduler) _schedulertype_3).getMinute();
+                            _builder_3.append(_minute);
+                            properties.put(_plus_15, _builder_3.toString());
+                          } else {
+                            if (((((SignalScheduler)it).getSchedulertype() instanceof WeeklyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK))))) {
+                              QualifiedName _fullyQualifiedName_8 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                              String _plus_16 = (_fullyQualifiedName_8 + "Scheduler");
+                              String _plus_17 = (_plus_16 + SignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK);
+                              StringConcatenation _builder_4 = new StringConcatenation();
+                              SchedulerType _schedulertype_4 = ((SignalScheduler)it).getSchedulertype();
+                              DayOfWeekEnum _dayofweek = ((WeeklyScheduler) _schedulertype_4).getDayofweek();
+                              _builder_4.append(_dayofweek);
+                              properties.put(_plus_17, _builder_4.toString());
+                            } else {
+                              if (((((SignalScheduler)it).getSchedulertype() instanceof WeeklyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.WEEKLY_SCHEDULER_HOUR))))) {
+                                QualifiedName _fullyQualifiedName_9 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                                String _plus_18 = (_fullyQualifiedName_9 + "Scheduler");
+                                String _plus_19 = (_plus_18 + SignalConstants.WEEKLY_SCHEDULER_HOUR);
+                                StringConcatenation _builder_5 = new StringConcatenation();
+                                SchedulerType _schedulertype_5 = ((SignalScheduler)it).getSchedulertype();
+                                int _hour_1 = ((WeeklyScheduler) _schedulertype_5).getHour();
+                                _builder_5.append(_hour_1);
+                                properties.put(_plus_19, _builder_5.toString());
+                              } else {
+                                if (((((SignalScheduler)it).getSchedulertype() instanceof WeeklyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.WEEKLY_SCHEDULER_MIN))))) {
+                                  QualifiedName _fullyQualifiedName_10 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                                  String _plus_20 = (_fullyQualifiedName_10 + "Scheduler");
+                                  String _plus_21 = (_plus_20 + SignalConstants.WEEKLY_SCHEDULER_MIN);
+                                  StringConcatenation _builder_6 = new StringConcatenation();
+                                  SchedulerType _schedulertype_6 = ((SignalScheduler)it).getSchedulertype();
+                                  int _minute_1 = ((WeeklyScheduler) _schedulertype_6).getMinute();
+                                  _builder_6.append(_minute_1);
+                                  properties.put(_plus_21, _builder_6.toString());
+                                } else {
+                                  if (((((SignalScheduler)it).getSchedulertype() instanceof MonthlyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH))))) {
+                                    QualifiedName _fullyQualifiedName_11 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                                    String _plus_22 = (_fullyQualifiedName_11 + "Scheduler");
+                                    String _plus_23 = (_plus_22 + SignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH);
+                                    StringConcatenation _builder_7 = new StringConcatenation();
+                                    SchedulerType _schedulertype_7 = ((SignalScheduler)it).getSchedulertype();
+                                    int _dayofmonth = ((MonthlyScheduler) _schedulertype_7).getDayofmonth();
+                                    _builder_7.append(_dayofmonth);
+                                    properties.put(_plus_23, _builder_7.toString());
+                                  } else {
+                                    if (((((SignalScheduler)it).getSchedulertype() instanceof MonthlyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.MONTHLY_SCHEDULER_HOUR))))) {
+                                      QualifiedName _fullyQualifiedName_12 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                                      String _plus_24 = (_fullyQualifiedName_12 + "Scheduler");
+                                      String _plus_25 = (_plus_24 + SignalConstants.MONTHLY_SCHEDULER_HOUR);
+                                      StringConcatenation _builder_8 = new StringConcatenation();
+                                      SchedulerType _schedulertype_8 = ((SignalScheduler)it).getSchedulertype();
+                                      int _hour_2 = ((MonthlyScheduler) _schedulertype_8).getHour();
+                                      _builder_8.append(_hour_2);
+                                      properties.put(_plus_25, _builder_8.toString());
+                                    } else {
+                                      if (((((SignalScheduler)it).getSchedulertype() instanceof MonthlyScheduler) && (!properties.containsKey(((this._iQualifiedNameProvider.getFullyQualifiedName(it) + "Scheduler") + SignalConstants.MONTHLY_SCHEDULER_MIN))))) {
+                                        QualifiedName _fullyQualifiedName_13 = this._iQualifiedNameProvider.getFullyQualifiedName(it);
+                                        String _plus_26 = (_fullyQualifiedName_13 + "Scheduler");
+                                        String _plus_27 = (_plus_26 + SignalConstants.MONTHLY_SCHEDULER_MIN);
+                                        StringConcatenation _builder_9 = new StringConcatenation();
+                                        SchedulerType _schedulertype_9 = ((SignalScheduler)it).getSchedulertype();
+                                        int _minute_2 = ((MonthlyScheduler) _schedulertype_9).getMinute();
+                                        _builder_9.append(_minute_2);
+                                        properties.put(_plus_27, _builder_9.toString());
+                                      }
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            };
+            pck.getSignals().forEach(_function_1);
+            FileOutputStream fileOutput = new FileOutputStream(file);
+            properties.storeToXML(fileOutput, "dataInterchange file URLs");
+            fileOutput.close();
+          }
+        }
+      }
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
   }
 }
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java
index 5a894bc..0c2e241 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
@@ -15,7 +15,26 @@
  */
 package org.eclipse.osbp.xtext.signal.scoping;
 
+import com.google.common.base.Objects;
+import java.util.ArrayList;
+import javax.inject.Inject;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeGroup;
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
 import org.eclipse.osbp.xtext.signal.scoping.AbstractSignalDSLScopeProvider;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.MapBasedScope;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.Extension;
 
 /**
  * This class contains custom scoping description.
@@ -25,4 +44,43 @@
  */
 @SuppressWarnings("all")
 public class SignalDSLScopeProvider extends AbstractSignalDSLScopeProvider {
+  @Inject
+  @Extension
+  private ModelExtensions _modelExtensions;
+  
+  @Override
+  public IScope getScope(final EObject context, final EReference reference) {
+    IScope _xifexpression = null;
+    boolean _equals = Objects.equal(reference, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__DATA_REF);
+    if (_equals) {
+      return this.getScope_DataInterchanges(context, reference);
+    } else {
+      _xifexpression = super.getScope(context, reference);
+    }
+    return _xifexpression;
+  }
+  
+  public IScope getScope_DataInterchanges(final EObject context, final EReference reference) {
+    ArrayList<IEObjectDescription> result = CollectionLiterals.<IEObjectDescription>newArrayList();
+    if ((context != null)) {
+      EObject signal = context.eContainer();
+      DataInterchangeGroup group = ((DataInterchangeGroup) null);
+      if ((signal instanceof WatcherWithFileMask)) {
+        group = ((WatcherWithFileMask)signal).getInterchangegroup();
+      } else {
+        if ((signal instanceof WatcherWithFileName)) {
+          group = ((WatcherWithFileName)signal).getInterchangegroup();
+        } else {
+          if ((signal instanceof SignalScheduler)) {
+            group = ((SignalScheduler)signal).getInterchangegroup();
+          }
+        }
+      }
+      EList<DataInterchange> _datInts = group.getDatInts();
+      for (final DataInterchange value : _datInts) {
+        result.add(EObjectDescription.create(((DataInterchange) value).getName(), ((DataInterchange) value)));
+      }
+    }
+    return MapBasedScope.createScope(IScope.NULLSCOPE, result);
+  }
 }
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java
index 9eadc69..8d9da5d 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java
@@ -2,10 +2,10 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License 2.0 
+ *  are made available under the terms of the Eclipse Public License 2.0
  *  which accompanies this distribution, and is available at
  *  https://www.eclipse.org/legal/epl-2.0/
- *
+ * 
  *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
@@ -15,37 +15,37 @@
  */
 package org.eclipse.osbp.xtext.signal.validation;
 
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Paths;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.PathMatcher;
 import java.text.ParseException;
 import java.util.HashSet;
+import java.util.regex.PatternSyntaxException;
+import javax.inject.Inject;
 import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.osbp.utils.common.SystemInformation;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFile;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileCSV;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI;
-import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
+import org.eclipse.osbp.xtext.datainterchange.validation.DataDSLValidator;
 import org.eclipse.osbp.xtext.signal.CronScheduler;
 import org.eclipse.osbp.xtext.signal.DailyScheduler;
 import org.eclipse.osbp.xtext.signal.HourlyScheduler;
 import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
-import org.eclipse.osbp.xtext.signal.Scheduler;
+import org.eclipse.osbp.xtext.signal.SchedulerType;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
-import org.eclipse.osbp.xtext.signal.SignalHandler;
+import org.eclipse.osbp.xtext.signal.SignalDefinition;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
 import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
-import org.eclipse.osbp.xtext.signal.TriggerFile;
-import org.eclipse.osbp.xtext.signal.TriggerPolicy;
+import org.eclipse.osbp.xtext.signal.WatcherDefinition;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileMask;
+import org.eclipse.osbp.xtext.signal.WatcherWithFileName;
 import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
-import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants;
+import org.eclipse.osbp.xtext.signal.common.SignalConstants;
+import org.eclipse.osbp.xtext.signal.jvmmodel.SignalDSLJvmModelInferrer;
 import org.eclipse.osbp.xtext.signal.validation.AbstractSignalDSLValidator;
 import org.eclipse.xtext.validation.Check;
 import org.eclipse.xtext.xbase.lib.Exceptions;
+import org.eclipse.xtext.xbase.lib.Extension;
 import org.quartz.CronExpression;
 
 /**
@@ -55,181 +55,54 @@
  */
 @SuppressWarnings("all")
 public class SignalDSLValidator extends AbstractSignalDSLValidator {
+  @Inject
+  @Extension
+  private DataDSLValidator dv;
+  
+  @Inject
+  @Extension
+  private SignalDSLJvmModelInferrer jvm;
+  
   @Check
   public void checkDuplicateWatcherNames(final SignalPackage pkg) {
-    HashSet<String> watchers = new HashSet<String>();
-    EList<SignalWatcher> _watchers = pkg.getWatchers();
-    for (final SignalWatcher watcher : _watchers) {
-      boolean _contains = watchers.contains(watcher.getName());
+    HashSet<String> signals = new HashSet<String>();
+    EList<SignalDefinition> _signals = pkg.getSignals();
+    for (final SignalDefinition signal : _signals) {
+      boolean _contains = signals.contains(signal.getName());
       boolean _not = (!_contains);
       if (_not) {
-        watchers.add(watcher.getName());
+        signals.add(signal.getName());
       } else {
-        String _name = watcher.getName();
-        String _plus = ("The watcher id has to be unique and [" + _name);
-        String _plus_1 = (_plus + "] is already in use. Please change it.");
-        this.error(_plus_1, watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__NAME);
-      }
-    }
-  }
-  
-  @Check
-  public void checkDuplicateHandlerNames(final SignalWatcher watcher) {
-    HashSet<String> handlers = new HashSet<String>();
-    EList<SignalHandler> _handlers = watcher.getHandlers();
-    for (final SignalHandler handler : _handlers) {
-      boolean _contains = handlers.contains(handler.getName());
-      boolean _not = (!_contains);
-      if (_not) {
-        handlers.add(handler.getName());
-      } else {
-        this.error("The handler id has to be unique.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__NAME);
-      }
-    }
-  }
-  
-  @Check
-  public boolean checkFileNameValidity(final SignalHandler handler) {
-    EList<SignalDatainterchange> _interchanges = handler.getInterchanges();
-    for (final SignalDatainterchange interchange : _interchanges) {
-      if ((((interchange.getDataRef() != null) && (interchange.getFileName() != null)) && 
-        (interchange.getFileName().length() > OSBPSignalConstants.FILE_EXTENSION_MIN_SIZE))) {
-        boolean _isExtensionValid = this.isExtensionValid(interchange.getFileName());
-        boolean _not = (!_isExtensionValid);
-        if (_not) {
-          this.error(
-            "The filename extension you have entered is not currently supported. Only file with either following extension are allowed: .csv .edi or .xml", interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME);
-        }
-        String allowed_extension = this.getValidExtensionToInterchange(interchange.getDataRef().getFileEndpoint());
-        if (((allowed_extension != null) && 
-          (!this.isExtensionAllowedToInterchange(interchange.getFileName(), allowed_extension)))) {
-          String _name = interchange.getDataRef().getName();
-          String _plus = ("The filename extension you have entered is not valid with [" + _name);
-          String _plus_1 = (_plus + 
-            "] definition. Only filename with ");
-          String _plus_2 = (_plus_1 + allowed_extension);
-          String _plus_3 = (_plus_2 + " as extension are allowed!");
-          this.error(_plus_3, interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME);
-        }
-        String _fileName = interchange.getFileName();
-        int _length = interchange.getFileName().length();
-        int _minus = (_length - OSBPSignalConstants.FILE_EXTENSION_MIN_SIZE);
-        final String filename = _fileName.substring(0, _minus);
-        boolean _isFileNameWithoutExtensionValid = this.isFileNameWithoutExtensionValid(filename);
-        boolean _not_1 = (!_isFileNameWithoutExtensionValid);
-        if (_not_1) {
-          this.error(
-            "The filename contains one or more of the following non-allowed characters / \\ : * ? > < \" \' | please change it.", interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME);
-        }
-      }
-    }
-    return false;
-  }
-  
-  public boolean isExtensionValid(final String filename) {
-    return (((((filename.endsWith(OSBPSignalConstants.CSV_EXTENSION) || filename.endsWith(OSBPSignalConstants.CSV_EXTENSION.toUpperCase())) || 
-      filename.endsWith(OSBPSignalConstants.EDI_EXTENSION)) || filename.endsWith(OSBPSignalConstants.EDI_EXTENSION.toUpperCase())) || 
-      filename.endsWith(OSBPSignalConstants.XML_EXTENSION)) || filename.endsWith(OSBPSignalConstants.XML_EXTENSION.toUpperCase()));
-  }
-  
-  public boolean isExtensionAllowedToInterchange(final String filename, final String allowedextension) {
-    return (filename.endsWith(allowedextension) || filename.endsWith(allowedextension.toUpperCase()));
-  }
-  
-  public String getValidExtensionToInterchange(final DataInterchangeFile file) {
-    if ((file instanceof DataInterchangeFileCSV)) {
-      return OSBPSignalConstants.CSV_EXTENSION;
-    }
-    if ((file instanceof DataInterchangeFileEDI)) {
-      return OSBPSignalConstants.EDI_EXTENSION;
-    }
-    if ((file instanceof DataInterchangeFileXML)) {
-      return OSBPSignalConstants.XML_EXTENSION;
-    }
-    return null;
-  }
-  
-  public boolean isFileNameWithoutExtensionValid(final String filename) {
-    boolean _isWindowsOS = SystemInformation.isWindowsOS();
-    if (_isWindowsOS) {
-      return ((((!filename.contains("/")) && (!filename.contains("\\"))) && (!filename.contains(":"))) && ((((((!filename.contains("*")) && (!filename.contains("?"))) && (!filename.contains(">"))) && (!filename.contains("<"))) && (!filename.contains("\""))) && (!filename.contains("|"))));
-    } else {
-      boolean _isMacOS = SystemInformation.isMacOS();
-      if (_isMacOS) {
-        return ((((!filename.contains("/")) && (!filename.contains("\\"))) && (!filename.contains("-"))) && ((((((((!filename.contains("*")) && (!filename.contains("?"))) && (!filename.contains("["))) && (!filename.contains("]"))) && (!filename.contains("\""))) && (!filename.contains("\'"))) && (!filename.contains("{"))) && (!filename.contains("}"))));
-      } else {
-        boolean _isUnixOS = SystemInformation.isUnixOS();
-        if (_isUnixOS) {
-          return ((((!filename.contains("/")) && (!filename.contains("\\"))) && (!filename.contains(":"))) && ((((((!filename.contains("*")) && (!filename.contains("?"))) && (!filename.contains(">"))) && (!filename.contains("<"))) && (!filename.contains("\""))) && (!filename.contains("|"))));
-        }
-      }
-    }
-    return true;
-  }
-  
-  @Check
-  public void checkDuplicateDirectoryNames(final SignalPackage pkg) {
-    HashSet<String> watcherdir = new HashSet<String>();
-    EList<SignalWatcher> _watchers = pkg.getWatchers();
-    for (final SignalWatcher watcher : _watchers) {
-      boolean _contains = watcherdir.contains(watcher.getDirectory());
-      boolean _not = (!_contains);
-      if (_not) {
-        watcherdir.add(watcher.getDirectory());
-      } else {
-        String _directory = watcher.getDirectory();
-        String _plus = ("The watcher directory \'" + _directory);
+        String _name = signal.getName();
+        String _plus = ("Watcher\'s and scheduler\'s ID have to be unique and [" + _name);
         String _plus_1 = (_plus + 
-          "\' is already in use. Please choose another directory.");
-        this.error(_plus_1, watcher, 
-          SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY);
+          "] is already in use. Please change it.");
+        this.error(_plus_1, signal, SignalDSLPackage.Literals.SIGNAL_DEFINITION__NAME);
       }
     }
   }
   
   @Check
-  public boolean checkDuplicateFileMasks(final SignalWatcher watcher) {
-    HashSet<String> filemasks = new HashSet<String>();
-    EList<SignalHandler> _handlers = watcher.getHandlers();
-    for (final SignalHandler handler : _handlers) {
-      if (((handler.getTriggerpolicy() != null) && (handler.getTriggerpolicy() instanceof TriggerFile))) {
-        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
-        TriggerFile temp = ((TriggerFile) _triggerpolicy);
-        boolean _contains = filemasks.contains(temp.getFilemask());
-        boolean _not = (!_contains);
-        if (_not) {
-          filemasks.add(temp.getFilemask());
-        } else {
-          this.error(
-            "This file mask is already in use, please change it.", temp, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK);
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  
-  @Check
   public void checkSignalSchedulerValidity(final SignalScheduler signal) {
-    if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof CronScheduler))) {
-      Scheduler _scheduler = signal.getScheduler();
-      this.checkCronExpressionValidity(((CronScheduler) _scheduler));
+    if (((signal.getSchedulertype() != null) && (signal.getSchedulertype() instanceof CronScheduler))) {
+      SchedulerType _schedulertype = signal.getSchedulertype();
+      this.checkCronExpressionValidity(((CronScheduler) _schedulertype));
     } else {
-      if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof HourlyScheduler))) {
-        Scheduler _scheduler_1 = signal.getScheduler();
-        this.checkHourlySchedulerValidity(((HourlyScheduler) _scheduler_1));
+      if (((signal.getSchedulertype() != null) && (signal.getSchedulertype() instanceof HourlyScheduler))) {
+        SchedulerType _schedulertype_1 = signal.getSchedulertype();
+        this.checkHourlySchedulerValidity(((HourlyScheduler) _schedulertype_1));
       } else {
-        if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof DailyScheduler))) {
-          Scheduler _scheduler_2 = signal.getScheduler();
-          this.checkDailySchedulerValidity(((DailyScheduler) _scheduler_2));
+        if (((signal.getSchedulertype() != null) && (signal.getSchedulertype() instanceof DailyScheduler))) {
+          SchedulerType _schedulertype_2 = signal.getSchedulertype();
+          this.checkDailySchedulerValidity(((DailyScheduler) _schedulertype_2));
         } else {
-          if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof WeeklyScheduler))) {
-            Scheduler _scheduler_3 = signal.getScheduler();
-            this.checkWeeklySchedulerValidity(((WeeklyScheduler) _scheduler_3));
+          if (((signal.getSchedulertype() != null) && (signal.getSchedulertype() instanceof WeeklyScheduler))) {
+            SchedulerType _schedulertype_3 = signal.getSchedulertype();
+            this.checkWeeklySchedulerValidity(((WeeklyScheduler) _schedulertype_3));
           } else {
-            if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof MonthlyScheduler))) {
-              Scheduler _scheduler_4 = signal.getScheduler();
-              this.checkMonthlySchedulerValidity(((MonthlyScheduler) _scheduler_4));
+            if (((signal.getSchedulertype() != null) && (signal.getSchedulertype() instanceof MonthlyScheduler))) {
+              SchedulerType _schedulertype_4 = signal.getSchedulertype();
+              this.checkMonthlySchedulerValidity(((MonthlyScheduler) _schedulertype_4));
             }
           }
         }
@@ -248,8 +121,7 @@
     } catch (final Throwable _t) {
       if (_t instanceof ParseException) {
         final ParseException exception = (ParseException)_t;
-        this.error((("The cron expression you have entered is invalid.\n\n" + exception) + 
-          OSBPSignalConstants.CRONEXP_NOTICE), scheduler, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION);
+        this.error((("The cron expression you have entered is invalid.\n\n" + exception) + SignalConstants.CRONEXP_NOTICE), scheduler, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION);
       } else {
         throw Exceptions.sneakyThrow(_t);
       }
@@ -309,60 +181,247 @@
   }
   
   @Check
-  public void checkURLValidity(final SignalHandler handler) {
-    EObject _eContainer = handler.eContainer();
-    if ((_eContainer instanceof SignalWatcher)) {
-      EObject _eContainer_1 = handler.eContainer();
-      URL url = this.getDirectoryURL(((SignalWatcher) _eContainer_1).getDirectory());
-      if ((((url != null) && (!url.getProtocol().equals("file"))) && (handler.getTriggerpolicy() instanceof TriggerFile))) {
-        this.error("Only scheduler based handlers are allowed, since the watcher directory is not a file url.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__TRIGGERPOLICY);
+  public void checkFilePolicy(final SignalDefinition signal) {
+    if ((signal instanceof SignalWatcher)) {
+      WatcherDefinition watcher = ((SignalWatcher)signal).getDefinition();
+      if ((watcher instanceof WatcherWithFileMask)) {
+        if ((((((WatcherWithFileMask)watcher).getFilemask() != null) && (!((WatcherWithFileMask)watcher).getFilemask().isEmpty())) && (((WatcherWithFileMask)watcher).getExecutiontype() != null))) {
+          SignalDatainterchange _interchange = ((WatcherWithFileMask)watcher).getInterchange();
+          boolean _tripleEquals = (_interchange == null);
+          if (_tripleEquals) {
+            this.error("You must define the task, on which the file mask must be applied on.", watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__INTERCHANGE);
+          }
+        }
+      } else {
+        if ((watcher instanceof WatcherWithFileName)) {
+          if ((((((WatcherWithFileName)watcher).getFilename() != null) && (!((WatcherWithFileName)watcher).getFilename().isEmpty())) && (((WatcherWithFileName)watcher).getExecutiontype() != null))) {
+            int _basedInterchangeDefined = this.basedInterchangeDefined(((WatcherWithFileName)watcher).getInterchanges());
+            boolean _equals = (_basedInterchangeDefined == 0);
+            if (_equals) {
+              this.error("The task on which the file name must be applied on, have to be marked with the keyword \'applyon\'.", watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__INTERCHANGES);
+            } else {
+              int _basedInterchangeDefined_1 = this.basedInterchangeDefined(((WatcherWithFileName)watcher).getInterchanges());
+              boolean _greaterThan = (_basedInterchangeDefined_1 > 1);
+              if (_greaterThan) {
+                this.error("Only one task may be marked with the keyword \'applyon\'.", watcher, 
+                  SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__INTERCHANGES);
+              }
+            }
+          }
+        }
+      }
+    } else {
+      if ((signal instanceof SignalScheduler)) {
+        int _basedInterchangeDefined_2 = this.basedInterchangeDefined(((SignalScheduler)signal).getInterchanges());
+        boolean _greaterEqualsThan = (_basedInterchangeDefined_2 >= 1);
+        if (_greaterEqualsThan) {
+          this.error("No task may be marked here with the keyword \'applyon\'.", signal, 
+            SignalDSLPackage.Literals.SIGNAL_SCHEDULER__INTERCHANGES);
+        }
       }
     }
   }
   
-  public URL getDirectoryURL(final String directory) {
-    try {
-      return new URL(directory);
-    } catch (final Throwable _t) {
-      if (_t instanceof MalformedURLException) {
-        final MalformedURLException e1 = (MalformedURLException)_t;
-        if ((e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol"))) {
-          try {
-            return Paths.get(directory).toUri().toURL();
-          } catch (final Throwable _t_1) {
-            if (_t_1 instanceof MalformedURLException) {
-              final MalformedURLException e2 = (MalformedURLException)_t_1;
-              return null;
+  public int basedInterchangeDefined(final EList<SignalDatainterchange> interchanges) {
+    int count = 0;
+    for (final SignalDatainterchange unit : interchanges) {
+      boolean _isBaseinterchange = unit.isBaseinterchange();
+      if (_isBaseinterchange) {
+        count++;
+      }
+    }
+    return count;
+  }
+  
+  @Check
+  public void checkDuplicateFileMaskOrFileName(final SignalPackage pck) {
+    HashSet<String> filemasks = new HashSet<String>();
+    EList<SignalDefinition> _signals = pck.getSignals();
+    for (final SignalDefinition signal : _signals) {
+      if ((signal instanceof SignalWatcher)) {
+        WatcherDefinition watcher = ((SignalWatcher)signal).getDefinition();
+        if ((watcher instanceof WatcherWithFileMask)) {
+          boolean _contains = filemasks.contains(((WatcherWithFileMask)watcher).getFilemask());
+          boolean _not = (!_contains);
+          if (_not) {
+            filemasks.add(((WatcherWithFileMask)watcher).getFilemask());
+          } else {
+            this.error("This file mask is already in use in another watcher. Please change it.", watcher, 
+              SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
+          }
+        } else {
+          if ((watcher instanceof WatcherWithFileName)) {
+            boolean _contains_1 = filemasks.contains(((WatcherWithFileName)watcher).getFilename());
+            boolean _not_1 = (!_contains_1);
+            if (_not_1) {
+              filemasks.add(((WatcherWithFileName)watcher).getFilename());
             } else {
-              throw Exceptions.sneakyThrow(_t_1);
+              this.error("This file name is already in use in another watcher. Please change it.", watcher, 
+                SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME);
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  @Check
+  public void checkFileMaskAndFileNameValidity(final SignalDefinition signal) {
+    this.checkFileNameValidityCheck(signal);
+    if ((signal instanceof SignalWatcher)) {
+      WatcherDefinition watcher = ((SignalWatcher)signal).getDefinition();
+      if ((watcher instanceof WatcherWithFileMask)) {
+        if ((((watcher != null) && (((WatcherWithFileMask)watcher).getFilemask() != null)) && (!((WatcherWithFileMask)watcher).getFilemask().isEmpty()))) {
+          try {
+            FileSystem _default = FileSystems.getDefault();
+            String _filemask = ((WatcherWithFileMask)watcher).getFilemask();
+            String _plus = ("glob:" + _filemask);
+            _default.getPathMatcher(_plus);
+          } catch (final Throwable _t) {
+            if (_t instanceof PatternSyntaxException) {
+              final PatternSyntaxException exception = (PatternSyntaxException)_t;
+              String _message = exception.getMessage();
+              String _plus_1 = ("The pattern of this file mask is invalid, please change it. Error: " + _message);
+              this.error(_plus_1, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
+            } else if (_t instanceof UnsupportedOperationException) {
+              final UnsupportedOperationException exception_1 = (UnsupportedOperationException)_t;
+              String _message_1 = exception_1.getMessage();
+              String _plus_2 = ("The pattern of this file mask is not recognized, please change it. Error: " + _message_1);
+              this.error(_plus_2, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
+            } else if (_t instanceof IllegalArgumentException) {
+              final IllegalArgumentException exception_2 = (IllegalArgumentException)_t;
+              String _message_2 = exception_2.getMessage();
+              String _plus_3 = ("The pattern of this file mask is invalid, please change it. Error: " + _message_2);
+              this.error(_plus_3, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
+            } else {
+              throw Exceptions.sneakyThrow(_t);
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  public void checkFileNameValidityCheck(final SignalDefinition signal) {
+    if ((signal instanceof SignalWatcher)) {
+      WatcherDefinition watcher = ((SignalWatcher)signal).getDefinition();
+      if ((watcher instanceof WatcherWithFileMask)) {
+        if ((((((watcher != null) && (((WatcherWithFileMask)watcher).getFilemask() != null)) && (!((WatcherWithFileMask)watcher).getFilemask().isEmpty())) && (((WatcherWithFileMask)watcher).getInterchange() != null)) && (((WatcherWithFileMask)watcher).getInterchange().getDataRef() != null))) {
+          DataInterchange baseinterchange = ((WatcherWithFileMask)watcher).getInterchange().getDataRef();
+          if (((baseinterchange != null) && (baseinterchange.getFileEndpoint() != null))) {
+            String allowed_extension = this.dv.getValidExtensionToInterchange(baseinterchange.getFileEndpoint());
+            if ((allowed_extension != null)) {
+              if ((allowed_extension.equals(this.dv.CSV_EXTENSION) && (!this.dv.isExtensionAllowedForInterchange(((WatcherWithFileMask)watcher).getFilemask(), allowed_extension)))) {
+                String _filemask = ((WatcherWithFileMask)watcher).getFilemask();
+                String _plus = ("The file mask [" + _filemask);
+                String _plus_1 = (_plus + "] you have entered is not valid. Only file masks ending with the extension ");
+                String _plus_2 = (_plus_1 + allowed_extension);
+                String _plus_3 = (_plus_2 + " are allowed for this watcher!");
+                this.error(_plus_3, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
+              } else {
+                if ((allowed_extension.equals(this.dv.EDI_EXTENSION) && (!this.dv.isExtensionAllowedForInterchange(((WatcherWithFileMask)watcher).getFilemask(), allowed_extension)))) {
+                  String _filemask_1 = ((WatcherWithFileMask)watcher).getFilemask();
+                  String _plus_4 = ("The file mask [" + _filemask_1);
+                  String _plus_5 = (_plus_4 + "] you have entered is not valid. Only file masks ending with the extension ");
+                  String _plus_6 = (_plus_5 + allowed_extension);
+                  String _plus_7 = (_plus_6 + " are allowed for this watcher!");
+                  this.error(_plus_7, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
+                } else {
+                  if ((allowed_extension.equals(this.dv.XML_EXTENSION) && (!this.dv.isExtensionAllowedForInterchange(((WatcherWithFileMask)watcher).getFilemask(), allowed_extension)))) {
+                    String _filemask_2 = ((WatcherWithFileMask)watcher).getFilemask();
+                    String _plus_8 = ("The file mask [" + _filemask_2);
+                    String _plus_9 = (_plus_8 + "] you have entered is not valid. Only file masks ending with the extension ");
+                    String _plus_10 = (_plus_9 + allowed_extension);
+                    String _plus_11 = (_plus_10 + " are allowed for this watcher!");
+                    this.error(_plus_11, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
+                  }
+                }
+              }
+            }
+            boolean _isExtensionValid = this.dv.isExtensionValid(((WatcherWithFileMask)watcher).getFilemask());
+            boolean _not = (!_isExtensionValid);
+            if (_not) {
+              this.error("The file mask extension you have entered is not currently supported. Only file masks ending with either one of following extension are allowed: \'.csv\' \'.edi\' or \'.xml\' .", watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_MASK__FILEMASK);
             }
           }
         }
       } else {
-        throw Exceptions.sneakyThrow(_t);
+        if ((watcher instanceof WatcherWithFileName)) {
+          if (((((((watcher != null) && (((WatcherWithFileName)watcher).getFilename() != null)) && (!((WatcherWithFileName)watcher).getFilename().isEmpty())) && (((WatcherWithFileName)watcher).getInterchanges() != null)) && (!((WatcherWithFileName)watcher).getInterchanges().isEmpty())) && (this.jvm.getBaseInterchange(signal) != null))) {
+            DataInterchange baseinterchange_1 = this.jvm.getBaseInterchange(signal).getDataRef();
+            if (((baseinterchange_1 != null) && (baseinterchange_1.getFileEndpoint() != null))) {
+              String allowed_extension_1 = this.dv.getValidExtensionToInterchange(baseinterchange_1.getFileEndpoint());
+              if ((allowed_extension_1 != null)) {
+                if ((allowed_extension_1.equals(this.dv.CSV_EXTENSION) && (!this.dv.isExtensionAllowedForInterchange(((WatcherWithFileName)watcher).getFilename(), allowed_extension_1)))) {
+                  String _filename = ((WatcherWithFileName)watcher).getFilename();
+                  String _plus_12 = ("The file name [" + _filename);
+                  String _plus_13 = (_plus_12 + "] you have entered is not valid. Only file names ending with the extension ");
+                  String _plus_14 = (_plus_13 + allowed_extension_1);
+                  String _plus_15 = (_plus_14 + " are allowed for this watcher!");
+                  this.error(_plus_15, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME);
+                } else {
+                  if ((allowed_extension_1.equals(this.dv.EDI_EXTENSION) && (!this.dv.isExtensionAllowedForInterchange(((WatcherWithFileName)watcher).getFilename(), allowed_extension_1)))) {
+                    String _filename_1 = ((WatcherWithFileName)watcher).getFilename();
+                    String _plus_16 = ("The file name [" + _filename_1);
+                    String _plus_17 = (_plus_16 + "] you have entered is not valid. Only file names ending with the extension ");
+                    String _plus_18 = (_plus_17 + allowed_extension_1);
+                    String _plus_19 = (_plus_18 + " are allowed for this watcher!");
+                    this.error(_plus_19, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME);
+                  } else {
+                    if ((allowed_extension_1.equals(this.dv.XML_EXTENSION) && (!this.dv.isExtensionAllowedForInterchange(((WatcherWithFileName)watcher).getFilename(), allowed_extension_1)))) {
+                      String _filename_2 = ((WatcherWithFileName)watcher).getFilename();
+                      String _plus_20 = ("The file name [" + _filename_2);
+                      String _plus_21 = (_plus_20 + "] you have entered is not valid. Only file names ending with the extension ");
+                      String _plus_22 = (_plus_21 + allowed_extension_1);
+                      String _plus_23 = (_plus_22 + " are allowed for this watcher!");
+                      this.error(_plus_23, watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME);
+                    }
+                  }
+                }
+              } else {
+                this.error("The file name extension you have entered is not currently supported. Only file names ending with either one of following extension are allowed: \'.csv\' \'.edi\' or \'.xml\' .", watcher, SignalDSLPackage.Literals.WATCHER_WITH_FILE_NAME__FILENAME);
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  public PathMatcher isFileMaskValid(final String filemask) {
+    if (((filemask != null) && (!filemask.isEmpty()))) {
+      try {
+        return FileSystems.getDefault().getPathMatcher(("glob:" + filemask));
+      } catch (final Throwable _t) {
+        if (_t instanceof Exception) {
+          final Exception exception = (Exception)_t;
+          return null;
+        } else {
+          throw Exceptions.sneakyThrow(_t);
+        }
       }
     }
     return null;
   }
   
-  @Check
-  public void checkDirectoryValidity(final SignalWatcher watcher) {
-    URL url = this.getDirectoryURL(watcher.getDirectory());
-    if ((((url != null) && url.getProtocol().equals("file")) && (!this.existsDirectory(watcher.getDirectory())))) {
-      this.error("This directory doesn\'t exist. Please correct the path you have entered.", watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY);
-    }
-  }
-  
-  public boolean existsDirectory(final String path) {
-    try {
-      return Files.isDirectory(Paths.get(path));
-    } catch (final Throwable _t) {
-      if (_t instanceof Exception) {
-        final Exception e = (Exception)_t;
-      } else {
-        throw Exceptions.sneakyThrow(_t);
+  public String escapeCharacters(final String pattern) {
+    if (((pattern != null) && (!pattern.isEmpty()))) {
+      String result = pattern;
+      int _indexOf = result.indexOf("*");
+      boolean _tripleNotEquals = (_indexOf != (-1));
+      if (_tripleNotEquals) {
+        result = result.replaceAll("\\*", "");
       }
+      boolean _contains = result.contains("\\");
+      if (_contains) {
+        result = result.replaceAll("\\", "");
+      }
+      boolean _contains_1 = result.contains("?");
+      if (_contains_1) {
+        result = result.replaceAll("\\?", "");
+      }
+      return result;
     }
-    return false;
+    return null;
   }
 }