[jboss-svn-commits] JBL Code SVN: r26663 - in labs/jbossrules/branches/DroolsChance/drools-compiler/src: main/java/org/drools/lang and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 21 22:31:51 EDT 2009


Author: dsotty
Date: 2009-05-21 22:31:50 -0400 (Thu, 21 May 2009)
New Revision: 26663

Modified:
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/EqvDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/XorDescr.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
Log:
Major update

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -1562,8 +1562,8 @@
     		String cons = (String) r.getConsequence();
     		
     		
-    		int idx = cons.indexOf("inject");
-    		while (idx != -1) {
+    		int idx = cons.indexOf("ject")-2;
+    		while (idx >= 0) {
     			
     			int endIdx = cons.indexOf(';', idx);
     			
@@ -1595,6 +1595,7 @@
         			}
     				
     			} else if (choice == 'I') {
+    				//injectId
     				idx = idx+2;
     				
     			
@@ -1618,6 +1619,7 @@
     				
     				
     			} else {
+    				//Plain inject -> injectKey
     			
         			if (idx < 10 || (cons.charAt(idx-8) != '/' && cons.charAt(idx-9) != '/')) {
         				
@@ -1629,8 +1631,12 @@
         					 ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""),
         							tok.nextToken().replaceAll("\"", ""),
         							tok.nextToken().replaceAll("\"", ""));
-        				else 
-        					ck = new ConstraintKey(tok.nextToken().replaceAll("\"", ""));
+        					
+        				else {
+        					String s = tok.nextToken();
+        					ck = new ConstraintKey(s.replaceAll("\"", ""));
+        				}
+        				        				
         			
         				Set<String> deps = ans.get(ck);
         				if (deps == null) {
@@ -1644,7 +1650,7 @@
     			
     			
     		
-    			idx = cons.indexOf("inject",endIdx);
+    			idx = cons.indexOf("ject",endIdx)-2;
     		}
     		    		
     	}

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-14 14:06:22
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-20 03:15:20
 
 	package org.drools.lang;
 
@@ -12,155 +12,157 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int VT_ACCESSOR_ELEMENT=39;
-    public static final int ACCUMULATE=122;
-    public static final int VT_DATA_TYPE=40;
-    public static final int VK_TYPE=103;
-    public static final int DOT_STAR=107;
-    public static final int VK_APPROX=96;
-    public static final int VT_CONSTRID=47;
-    public static final int VK_OPERATOR=90;
-    public static final int VK_FUNCTION=74;
-    public static final int VK_GLOBAL=75;
-    public static final int VK_AND=81;
-    public static final int VT_TYPE=53;
-    public static final int EQUALS=114;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=149;
-    public static final int VK_AUTO_FOCUS=58;
-    public static final int VK_SALIENCE=64;
+    public static final int VT_ACCESSOR_ELEMENT=40;
+    public static final int ACCUMULATE=124;
+    public static final int VT_DATA_TYPE=41;
+    public static final int VK_TYPE=105;
+    public static final int DOT_STAR=109;
+    public static final int VK_APPROX=98;
+    public static final int VK_OPERATOR=92;
+    public static final int VT_CONSTRID=48;
+    public static final int VK_FUNCTION=75;
+    public static final int VK_GLOBAL=76;
+    public static final int VK_AND=82;
+    public static final int VT_TYPE=54;
+    public static final int EQUALS=116;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=151;
+    public static final int VK_AUTO_FOCUS=59;
+    public static final int VK_SALIENCE=65;
     public static final int EOF=-1;
-    public static final int VT_CUT=50;
-    public static final int VT_CONSTR_ATTRIBUTES=49;
-    public static final int VT_PATTERN_TYPE=41;
+    public static final int VT_CUT=51;
+    public static final int VT_CONSTR_ATTRIBUTES=50;
+    public static final int VT_PATTERN_TYPE=42;
     public static final int VT_FUNCTION_IMPORT=5;
     public static final int VT_OR_INFIX=26;
-    public static final int DOUBLE_AMPER=119;
-    public static final int GREATER=128;
-    public static final int EOL=142;
-    public static final int VK_EQUIV=82;
-    public static final int VK_IMPORT=69;
-    public static final int NOT_EQUAL=132;
-    public static final int VK_ACTION=87;
+    public static final int DOUBLE_AMPER=121;
+    public static final int GREATER=130;
+    public static final int EOL=144;
+    public static final int VK_EQUIV=83;
+    public static final int VK_IMPORT=70;
+    public static final int NOT_EQUAL=134;
+    public static final int VK_ACTION=89;
     public static final int VT_EQUIV=27;
-    public static final int VK_RULE=67;
-    public static final int LESS=130;
+    public static final int VK_RULE=68;
+    public static final int LESS=132;
     public static final int VT_SLOT=15;
-    public static final int VK_OR=80;
-    public static final int VK_ARGS=102;
-    public static final int VT_HEDGE=48;
-    public static final int VK_CUT=95;
+    public static final int VK_OR=81;
+    public static final int VK_ARGS=104;
+    public static final int VT_HEDGE=49;
+    public static final int VK_CUT=97;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_AT=100;
-    public static final int VK_FILTER=99;
-    public static final int NULL=134;
-    public static final int BOOL=116;
-    public static final int VK_ENTAIL=97;
-    public static final int VK_QUERY=72;
-    public static final int VK_SUBJECT=93;
-    public static final int INT=117;
-    public static final int SEMICOLON=104;
-    public static final int VK_PRIOR=98;
-    public static final int VT_FUNCTION_ID=45;
+    public static final int VK_AT=102;
+    public static final int VK_FILTER=101;
+    public static final int NULL=136;
+    public static final int BOOL=118;
+    public static final int VK_ENTAIL=99;
+    public static final int VK_QUERY=73;
+    public static final int VK_SUBJECT=95;
+    public static final int INT=119;
+    public static final int SEMICOLON=106;
+    public static final int VK_PRIOR=100;
+    public static final int VT_FUNCTION_ID=46;
     public static final int VT_RHS_CHUNK=17;
-    public static final int VT_FACT_BINDING=34;
-    public static final int CUT=148;
-    public static final int VK_RULEFLOW_GROUP=61;
-    public static final int VK_ENTRY_POINT=77;
-    public static final int SINGLE_AMPER=125;
-    public static final int VT_PACKAGE_ID=42;
-    public static final int VK_RESULT=89;
+    public static final int VT_FACT_BINDING=35;
+    public static final int CUT=150;
+    public static final int VK_RULEFLOW_GROUP=62;
+    public static final int VK_ENTRY_POINT=78;
+    public static final int SINGLE_AMPER=127;
+    public static final int VT_PACKAGE_ID=43;
+    public static final int VK_RESULT=91;
     public static final int VT_LABEL=8;
-    public static final int WS=143;
-    public static final int VK_NO_LOOP=57;
-    public static final int LEFT_CURLY=138;
+    public static final int WS=145;
+    public static final int VK_NO_LOOP=58;
+    public static final int LEFT_CURLY=140;
     public static final int VT_FACT=6;
-    public static final int VT_PATTERN=33;
-    public static final int VK_IN=79;
-    public static final int LEFT_PAREN=109;
-    public static final int LESS_EQUAL=131;
-    public static final int VT_IMPORT_ID=43;
+    public static final int VT_PATTERN=34;
+    public static final int VK_IN=80;
+    public static final int LEFT_PAREN=111;
+    public static final int LESS_EQUAL=133;
     public static final int VT_RULE_ID=12;
-    public static final int MISC=140;
-    public static final int FROM=120;
+    public static final int VT_IMPORT_ID=44;
+    public static final int MISC=142;
+    public static final int FROM=122;
     public static final int VT_XOR=28;
-    public static final int COLLECT=123;
-    public static final int EscapeSequence=144;
-    public static final int VK_ACTIVATION_GROUP=59;
-    public static final int VK_ENABLED=65;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=150;
-    public static final int VK_PACKAGE=70;
-    public static final int VK_END=91;
-    public static final int OVER=121;
-    public static final int VK_EXTEND=68;
-    public static final int RIGHT_SQUARE=136;
-    public static final int RIGHT_CURLY=139;
-    public static final int SINGLE_PIPE=124;
-    public static final int VT_FACT_OR=35;
-    public static final int VT_FIELD=37;
-    public static final int FLOAT=133;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=30;
-    public static final int VK_EXISTS=84;
-    public static final int VK_FORANY=86;
-    public static final int VK_DATE_EXPIRES=55;
-    public static final int ID=105;
-    public static final int HexDigit=145;
-    public static final int VK_EVAL=76;
+    public static final int COLLECT=125;
+    public static final int EscapeSequence=146;
+    public static final int VK_ACTIVATION_GROUP=60;
+    public static final int VK_ENABLED=66;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=152;
+    public static final int VK_END=93;
+    public static final int VK_PACKAGE=71;
+    public static final int OVER=123;
+    public static final int VK_EXTEND=69;
+    public static final int RIGHT_SQUARE=138;
+    public static final int RIGHT_CURLY=141;
+    public static final int SINGLE_PIPE=126;
+    public static final int VT_FACT_OR=36;
+    public static final int VK_IMPLIES=85;
+    public static final int VT_FIELD=38;
+    public static final int FLOAT=135;
+    public static final int VT_ACCUMULATE_ID_CLAUSE=31;
+    public static final int VK_EXISTS=86;
+    public static final int VK_FORANY=88;
+    public static final int VK_DATE_EXPIRES=56;
+    public static final int ID=107;
+    public static final int HexDigit=147;
+    public static final int VK_EVAL=77;
     public static final int VT_OR_PREFIX=24;
-    public static final int VK_WEIGHT=94;
-    public static final int APPROX=141;
-    public static final int AT=112;
-    public static final int DOUBLE_PIPE=118;
-    public static final int VT_ARGS=52;
-    public static final int RIGHT_PAREN=111;
-    public static final int VK_XOR=83;
+    public static final int VK_WEIGHT=96;
+    public static final int APPROX=143;
+    public static final int AT=114;
+    public static final int DOUBLE_PIPE=120;
+    public static final int VT_ARGS=53;
+    public static final int RIGHT_PAREN=113;
+    public static final int VT_IMPLIES=29;
+    public static final int VK_XOR=84;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int THEN=137;
-    public static final int VT_EXPRESSION_CHAIN=32;
-    public static final int COMMA=110;
-    public static final int EQUAL=127;
+    public static final int THEN=139;
+    public static final int VT_EXPRESSION_CHAIN=33;
+    public static final int COMMA=112;
+    public static final int EQUAL=129;
     public static final int VT_BEHAVIOR=21;
-    public static final int VK_CONSTRID=101;
-    public static final int VK_DIALECT=63;
+    public static final int VK_CONSTRID=103;
+    public static final int VK_DIALECT=64;
     public static final int VT_QUERY_ID=9;
-    public static final int DOT=106;
-    public static final int VT_PRIOR=51;
-    public static final int VT_GLOBAL_ID=44;
-    public static final int VK_NOT=78;
-    public static final int VT_FROM_SOURCE=31;
-    public static final int VK_DECLARE=73;
+    public static final int DOT=108;
+    public static final int VT_PRIOR=52;
+    public static final int VT_GLOBAL_ID=45;
+    public static final int VK_NOT=79;
+    public static final int VT_FROM_SOURCE=32;
+    public static final int VK_DECLARE=74;
     public static final int VT_ENTRYPOINT_ID=13;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VK_REVERSE=88;
-    public static final int VK_LOCK_ON_ACTIVE=56;
-    public static final int VK_TEMPLATE=71;
-    public static final int VK_DURATION=62;
+    public static final int VK_REVERSE=90;
+    public static final int VK_LOCK_ON_ACTIVE=57;
+    public static final int VK_TEMPLATE=72;
+    public static final int VK_DURATION=63;
     public static final int VT_RULE_ATTRIBUTES=16;
     public static final int VT_AND_INFIX=25;
-    public static final int VT_ACCESSOR_PATH=38;
-    public static final int MULTI_LINE_COMMENT=151;
-    public static final int VK_FORALL=85;
-    public static final int COLON=113;
+    public static final int VT_ACCESSOR_PATH=39;
+    public static final int MULTI_LINE_COMMENT=153;
+    public static final int VK_FORALL=87;
+    public static final int COLON=115;
     public static final int VT_AND_IMPLICIT=22;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=29;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=30;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_SLOT_ID=14;
-    public static final int VK_ATTRIBUTES=66;
-    public static final int WHEN=115;
-    public static final int UnicodeEscape=146;
+    public static final int VK_ATTRIBUTES=67;
+    public static final int WHEN=117;
+    public static final int UnicodeEscape=148;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_DATE_EFFECTIVE=54;
+    public static final int VK_DATE_EFFECTIVE=55;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int VT_PARAM_LIST=46;
-    public static final int ARROW=126;
-    public static final int VT_BIND_FIELD=36;
-    public static final int VK_AGENDA_GROUP=60;
+    public static final int VT_PARAM_LIST=47;
+    public static final int ARROW=128;
+    public static final int VT_BIND_FIELD=37;
+    public static final int VK_AGENDA_GROUP=61;
     public static final int VT_CONSTRAINTS=7;
-    public static final int LEFT_SQUARE=135;
-    public static final int GREATER_EQUAL=129;
-    public static final int OctalEscape=147;
-    public static final int VK_INIT=92;
-    public static final int STRING=108;
+    public static final int LEFT_SQUARE=137;
+    public static final int GREATER_EQUAL=131;
+    public static final int OctalEscape=149;
+    public static final int VK_INIT=94;
+    public static final int STRING=110;
 
     	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
     	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
@@ -212,10 +214,10 @@
         try {
             int _type = WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2175:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2175:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2175:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -247,28 +249,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:19: ' '
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2175:19: ' '
             	    {
             	    match(' '); if (state.failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2158:19: '\\t'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2176:19: '\\t'
             	    {
             	    match('\t'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2159:19: '\\f'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2177:19: '\\f'
             	    {
             	    match('\f'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2160:19: EOL
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:19: EOL
             	    {
             	    mEOL(); if (state.failed) return ;
 
@@ -302,10 +304,10 @@
     // $ANTLR start "EOL"
     public final void mEOL() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2166:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2184:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2185:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2185:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -330,7 +332,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2185:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (state.failed) return ;
 
@@ -338,14 +340,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2168:25: '\\r'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2186:25: '\\r'
                     {
                     match('\r'); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2169:25: '\\n'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2187:25: '\\n'
                     {
                     match('\n'); if (state.failed) return ;
 
@@ -368,10 +370,10 @@
         try {
             int _type = INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:4: ( '-' )? ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2192:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2192:4: ( '-' )? ( '0' .. '9' )+
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:4: ( '-' )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2192:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -380,7 +382,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:5: '-'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2192:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -389,7 +391,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:10: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2192:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -403,7 +405,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2174:11: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2192:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -436,10 +438,10 @@
         try {
             int _type = FLOAT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:4: ( '-' )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -448,7 +450,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:5: '-'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -457,7 +459,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:10: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -471,7 +473,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:11: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -489,7 +491,7 @@
             } while (true);
 
             match('.'); if (state.failed) return ;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:26: ( '0' .. '9' )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -503,7 +505,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2178:27: '0' .. '9'
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -536,7 +538,7 @@
         try {
             int _type = STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -555,13 +557,13 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -577,14 +579,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:15: EscapeSequence
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2182:32: ~ ( '\\\\' | '\"' )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2200:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -613,13 +615,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -635,14 +637,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:16: EscapeSequence
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2183:33: ~ ( '\\\\' | '\\'' )
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -683,8 +685,8 @@
     // $ANTLR start "HexDigit"
     public final void mHexDigit() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2187:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2187:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2205:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2205:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
             {
             if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
                 input.consume();
@@ -708,7 +710,7 @@
     // $ANTLR start "EscapeSequence"
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2209:5: ( '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' ) | UnicodeEscape | OctalEscape )
             int alt11=3;
             int LA11_0 = input.LA(1);
 
@@ -795,7 +797,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2191:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2209:9: '\\\\' ( 'b' | 'B' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' | '.' | 'o' | 'x' | 'a' | 'e' | 'c' | 'd' | 'D' | 's' | 'S' | 'w' | 'W' | 'p' | 'A' | 'G' | 'Z' | 'z' | 'Q' | 'E' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
                     {
                     match('\\'); if (state.failed) return ;
                     if ( input.LA(1)=='\"'||input.LA(1)=='$'||(input.LA(1)>='&' && input.LA(1)<='+')||(input.LA(1)>='-' && input.LA(1)<='.')||input.LA(1)=='?'||(input.LA(1)>='A' && input.LA(1)<='B')||(input.LA(1)>='D' && input.LA(1)<='E')||input.LA(1)=='G'||input.LA(1)=='Q'||input.LA(1)=='S'||input.LA(1)=='W'||(input.LA(1)>='Z' && input.LA(1)<='^')||(input.LA(1)>='a' && input.LA(1)<='f')||(input.LA(1)>='n' && input.LA(1)<='p')||(input.LA(1)>='r' && input.LA(1)<='t')||(input.LA(1)>='w' && input.LA(1)<='x')||(input.LA(1)>='z' && input.LA(1)<='}') ) {
@@ -812,14 +814,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2195:9: UnicodeEscape
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2213:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2196:9: OctalEscape
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2214:9: OctalEscape
                     {
                     mOctalEscape(); if (state.failed) return ;
 
@@ -836,7 +838,7 @@
     // $ANTLR start "OctalEscape"
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -884,25 +886,25 @@
             }
             switch (alt12) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:14: ( '0' .. '3' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:15: '0' .. '3'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:14: ( '0' .. '3' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (state.failed) return ;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:25: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:26: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:25: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:36: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2201:37: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:36: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2219:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -912,18 +914,18 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:14: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:15: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:14: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:25: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2202:26: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:25: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -933,11 +935,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2203:9: '\\\\' ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2221:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2203:14: ( '0' .. '7' )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2203:15: '0' .. '7'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2221:14: ( '0' .. '7' )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2221:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -957,8 +959,8 @@
     // $ANTLR start "UnicodeEscape"
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2208:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2208:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2226:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2226:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (state.failed) return ;
             match('u'); if (state.failed) return ;
@@ -980,10 +982,10 @@
         try {
             int _type = BOOL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:2: ( ( 'true' | 'false' ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:4: ( 'true' | 'false' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2230:2: ( ( 'true' | 'false' ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2230:4: ( 'true' | 'false' )
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:4: ( 'true' | 'false' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2230:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1002,7 +1004,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:5: 'true'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2230:5: 'true'
                     {
                     match("true"); if (state.failed) return ;
 
@@ -1010,7 +1012,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2212:12: 'false'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2230:12: 'false'
                     {
                     match("false"); if (state.failed) return ;
 
@@ -1036,8 +1038,8 @@
         try {
             int _type = ACCUMULATE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2216:2: ( 'accumulate' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2216:4: 'accumulate'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2234:2: ( 'accumulate' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2234:4: 'accumulate'
             {
             match("accumulate"); if (state.failed) return ;
 
@@ -1057,8 +1059,8 @@
         try {
             int _type = COLLECT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:2: ( 'collect' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2220:4: 'collect'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2238:2: ( 'collect' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2238:4: 'collect'
             {
             match("collect"); if (state.failed) return ;
 
@@ -1078,8 +1080,8 @@
         try {
             int _type = FROM;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2224:2: ( 'from' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2224:4: 'from'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2242:2: ( 'from' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2242:4: 'from'
             {
             match("from"); if (state.failed) return ;
 
@@ -1099,8 +1101,8 @@
         try {
             int _type = NULL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2228:2: ( 'null' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2228:4: 'null'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2246:2: ( 'null' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2246:4: 'null'
             {
             match("null"); if (state.failed) return ;
 
@@ -1120,8 +1122,8 @@
         try {
             int _type = OVER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2232:2: ( 'over' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2232:4: 'over'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2250:2: ( 'over' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2250:4: 'over'
             {
             match("over"); if (state.failed) return ;
 
@@ -1141,8 +1143,8 @@
         try {
             int _type = THEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2236:2: ( 'then' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2236:4: 'then'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2254:2: ( 'then' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2254:4: 'then'
             {
             match("then"); if (state.failed) return ;
 
@@ -1162,8 +1164,8 @@
         try {
             int _type = WHEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2240:2: ( 'when' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2240:4: 'when'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2258:2: ( 'when' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2258:4: 'when'
             {
             match("when"); if (state.failed) return ;
 
@@ -1183,8 +1185,8 @@
         try {
             int _type = APPROX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2245:3: ( '~' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2245:5: '~'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2263:3: ( '~' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2263:5: '~'
             {
             match('~'); if (state.failed) return ;
 
@@ -1203,8 +1205,8 @@
         try {
             int _type = CUT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2249:3: ( '!' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2249:5: '!'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2267:3: ( '!' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2267:5: '!'
             {
             match('!'); if (state.failed) return ;
 
@@ -1223,8 +1225,8 @@
         try {
             int _type = AT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2253:4: ( '@' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2253:6: '@'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2271:4: ( '@' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2271:6: '@'
             {
             match('@'); if (state.failed) return ;
 
@@ -1243,8 +1245,8 @@
         try {
             int _type = EQUALS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2257:2: ( '=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2257:4: '='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2275:2: ( '=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2275:4: '='
             {
             match('='); if (state.failed) return ;
 
@@ -1263,8 +1265,8 @@
         try {
             int _type = SEMICOLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2261:2: ( ';' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2261:4: ';'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2279:2: ( ';' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2279:4: ';'
             {
             match(';'); if (state.failed) return ;
 
@@ -1283,8 +1285,8 @@
         try {
             int _type = DOT_STAR;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2265:2: ( '.*' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2265:4: '.*'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2283:2: ( '.*' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2283:4: '.*'
             {
             match(".*"); if (state.failed) return ;
 
@@ -1304,8 +1306,8 @@
         try {
             int _type = COLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2269:2: ( ':' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2269:4: ':'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2287:2: ( ':' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2287:4: ':'
             {
             match(':'); if (state.failed) return ;
 
@@ -1324,8 +1326,8 @@
         try {
             int _type = EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2273:2: ( '==' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2273:4: '=='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2291:2: ( '==' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2291:4: '=='
             {
             match("=="); if (state.failed) return ;
 
@@ -1345,8 +1347,8 @@
         try {
             int _type = NOT_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2277:2: ( '!=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2277:4: '!='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2295:2: ( '!=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2295:4: '!='
             {
             match("!="); if (state.failed) return ;
 
@@ -1366,8 +1368,8 @@
         try {
             int _type = GREATER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2281:2: ( '>' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2281:4: '>'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2299:2: ( '>' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2299:4: '>'
             {
             match('>'); if (state.failed) return ;
 
@@ -1386,8 +1388,8 @@
         try {
             int _type = GREATER_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2285:2: ( '>=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2285:4: '>='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2303:2: ( '>=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2303:4: '>='
             {
             match(">="); if (state.failed) return ;
 
@@ -1407,8 +1409,8 @@
         try {
             int _type = LESS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2289:2: ( '<' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2289:4: '<'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2307:2: ( '<' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2307:4: '<'
             {
             match('<'); if (state.failed) return ;
 
@@ -1427,8 +1429,8 @@
         try {
             int _type = LESS_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2293:2: ( '<=' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2293:4: '<='
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2311:2: ( '<=' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2311:4: '<='
             {
             match("<="); if (state.failed) return ;
 
@@ -1448,8 +1450,8 @@
         try {
             int _type = ARROW;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2297:2: ( '->' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2297:4: '->'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2315:2: ( '->' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2315:4: '->'
             {
             match("->"); if (state.failed) return ;
 
@@ -1469,7 +1471,7 @@
         try {
             int _type = ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2301:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* | '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`' )
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -1488,7 +1490,7 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2301:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     {
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
                         input.consume();
@@ -1500,7 +1502,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2301:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1538,7 +1540,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2302:4: '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`'
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2320:4: '`' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '`'
                     {
                     match('`'); if (state.failed) return ;
                     if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00FF') ) {
@@ -1551,7 +1553,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2302:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2320:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1613,8 +1615,8 @@
         try {
             int _type = LEFT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2307:9: ( '(' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2307:11: '('
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2325:9: ( '(' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2325:11: '('
             {
             match('('); if (state.failed) return ;
 
@@ -1633,8 +1635,8 @@
         try {
             int _type = RIGHT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2311:9: ( ')' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2311:11: ')'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2329:9: ( ')' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2329:11: ')'
             {
             match(')'); if (state.failed) return ;
 
@@ -1653,8 +1655,8 @@
         try {
             int _type = LEFT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2315:9: ( '[' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2315:11: '['
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2333:9: ( '[' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2333:11: '['
             {
             match('['); if (state.failed) return ;
 
@@ -1673,8 +1675,8 @@
         try {
             int _type = RIGHT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:9: ( ']' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2319:11: ']'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2337:9: ( ']' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2337:11: ']'
             {
             match(']'); if (state.failed) return ;
 
@@ -1693,8 +1695,8 @@
         try {
             int _type = LEFT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2323:9: ( '{' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2323:11: '{'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2341:9: ( '{' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2341:11: '{'
             {
             match('{'); if (state.failed) return ;
 
@@ -1713,8 +1715,8 @@
         try {
             int _type = RIGHT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2327:9: ( '}' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2327:11: '}'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2345:9: ( '}' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2345:11: '}'
             {
             match('}'); if (state.failed) return ;
 
@@ -1733,8 +1735,8 @@
         try {
             int _type = COMMA;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2330:7: ( ',' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2330:9: ','
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2348:7: ( ',' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2348:9: ','
             {
             match(','); if (state.failed) return ;
 
@@ -1753,8 +1755,8 @@
         try {
             int _type = DOT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2333:5: ( '.' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2333:7: '.'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2351:5: ( '.' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2351:7: '.'
             {
             match('.'); if (state.failed) return ;
 
@@ -1773,8 +1775,8 @@
         try {
             int _type = DOUBLE_AMPER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2337:2: ( '&&' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2337:4: '&&'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2355:2: ( '&&' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2355:4: '&&'
             {
             match("&&"); if (state.failed) return ;
 
@@ -1794,8 +1796,8 @@
         try {
             int _type = DOUBLE_PIPE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2341:2: ( '||' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2341:4: '||'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:2: ( '||' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:4: '||'
             {
             match("||"); if (state.failed) return ;
 
@@ -1815,8 +1817,8 @@
         try {
             int _type = SINGLE_AMPER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2345:3: ( '&' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2345:5: '&'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2363:3: ( '&' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2363:5: '&'
             {
             match('&'); if (state.failed) return ;
 
@@ -1835,8 +1837,8 @@
         try {
             int _type = SINGLE_PIPE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2349:3: ( '|' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2349:5: '|'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2367:3: ( '|' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2367:5: '|'
             {
             match('|'); if (state.failed) return ;
 
@@ -1855,11 +1857,11 @@
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:4: '#' ( options {greedy=false; } : . )* EOL
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2371:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2371:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (state.failed) return ;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:8: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2371:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1878,7 +1880,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2353:35: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2371:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1910,12 +1912,12 @@
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:4: '//' ( options {greedy=false; } : . )* EOL
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2377:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2377:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (state.failed) return ;
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:9: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2377:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1934,7 +1936,7 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2359:36: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2377:36: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1966,12 +1968,12 @@
         try {
             int _type = MULTI_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2382:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2382:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (state.failed) return ;
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:9: ( options {greedy=false; } : . )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2382:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1996,7 +1998,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2364:35: .
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2382:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -2029,7 +2031,7 @@
         try {
             int _type = MISC;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2368:7: ( '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2386:7: ( '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' )
             // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             if ( (input.LA(1)>='$' && input.LA(1)<='%')||input.LA(1)=='\''||(input.LA(1)>='*' && input.LA(1)<='+')||input.LA(1)=='-'||input.LA(1)=='/'||input.LA(1)=='?'||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_') ) {
@@ -2366,8 +2368,8 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:14: ( '\\r\\n' )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2167:16: '\\r\\n'
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2185:14: ( '\\r\\n' )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2185:16: '\\r\\n'
         {
         match("\r\n"); if (state.failed) return ;
 

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-14 14:06:22
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2009-05-20 03:15:18
 
 	package org.drools.lang;
 	
@@ -18,157 +18,159 @@
 
 public class DRLParser extends Parser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_TYPE", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO_FOCUS", "VK_A!
 CTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_TYPE", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CU!
 RLY", "MISC", "APPROX", "EOL", "WS", "EscapeSequence", "HexDigit", "Un
icodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_IMPLIES", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_TYPE", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO!
 _FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_IMPLIES", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_TYPE", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "TH!
 EN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "APPROX", "EOL", "WS", "Esca
peSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int ACCUMULATE=122;
-    public static final int VT_ACCESSOR_ELEMENT=39;
-    public static final int VK_TYPE=103;
-    public static final int VT_DATA_TYPE=40;
-    public static final int DOT_STAR=107;
-    public static final int VK_APPROX=96;
-    public static final int VT_CONSTRID=47;
-    public static final int VK_OPERATOR=90;
-    public static final int VK_FUNCTION=74;
-    public static final int VK_GLOBAL=75;
-    public static final int VK_AND=81;
-    public static final int VT_TYPE=53;
-    public static final int EQUALS=114;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=149;
-    public static final int VK_AUTO_FOCUS=58;
-    public static final int VK_SALIENCE=64;
+    public static final int ACCUMULATE=124;
+    public static final int VT_ACCESSOR_ELEMENT=40;
+    public static final int VK_TYPE=105;
+    public static final int VT_DATA_TYPE=41;
+    public static final int DOT_STAR=109;
+    public static final int VK_APPROX=98;
+    public static final int VK_OPERATOR=92;
+    public static final int VT_CONSTRID=48;
+    public static final int VK_FUNCTION=75;
+    public static final int VK_GLOBAL=76;
+    public static final int VK_AND=82;
+    public static final int VT_TYPE=54;
+    public static final int EQUALS=116;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=151;
+    public static final int VK_AUTO_FOCUS=59;
+    public static final int VK_SALIENCE=65;
     public static final int EOF=-1;
-    public static final int VT_CUT=50;
-    public static final int VT_CONSTR_ATTRIBUTES=49;
-    public static final int VT_PATTERN_TYPE=41;
+    public static final int VT_CUT=51;
+    public static final int VT_CONSTR_ATTRIBUTES=50;
+    public static final int VT_PATTERN_TYPE=42;
     public static final int VT_FUNCTION_IMPORT=5;
     public static final int VT_OR_INFIX=26;
-    public static final int EOL=142;
-    public static final int GREATER=128;
-    public static final int DOUBLE_AMPER=119;
-    public static final int VK_IMPORT=69;
-    public static final int VK_EQUIV=82;
-    public static final int NOT_EQUAL=132;
-    public static final int VK_ACTION=87;
+    public static final int EOL=144;
+    public static final int GREATER=130;
+    public static final int DOUBLE_AMPER=121;
+    public static final int VK_IMPORT=70;
+    public static final int VK_EQUIV=83;
+    public static final int NOT_EQUAL=134;
+    public static final int VK_ACTION=89;
     public static final int VT_EQUIV=27;
-    public static final int VK_RULE=67;
-    public static final int LESS=130;
+    public static final int VK_RULE=68;
+    public static final int LESS=132;
     public static final int VT_SLOT=15;
-    public static final int VK_ARGS=102;
-    public static final int VK_OR=80;
-    public static final int VK_CUT=95;
-    public static final int VT_HEDGE=48;
+    public static final int VK_ARGS=104;
+    public static final int VK_OR=81;
+    public static final int VK_CUT=97;
+    public static final int VT_HEDGE=49;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_AT=100;
-    public static final int NULL=134;
-    public static final int VK_FILTER=99;
-    public static final int BOOL=116;
-    public static final int VK_ENTAIL=97;
-    public static final int VK_QUERY=72;
-    public static final int VK_SUBJECT=93;
-    public static final int INT=117;
-    public static final int SEMICOLON=104;
-    public static final int VK_PRIOR=98;
-    public static final int VT_FUNCTION_ID=45;
+    public static final int VK_AT=102;
+    public static final int NULL=136;
+    public static final int VK_FILTER=101;
+    public static final int BOOL=118;
+    public static final int VK_ENTAIL=99;
+    public static final int VK_QUERY=73;
+    public static final int VK_SUBJECT=95;
+    public static final int INT=119;
+    public static final int SEMICOLON=106;
+    public static final int VK_PRIOR=100;
+    public static final int VT_FUNCTION_ID=46;
     public static final int VT_RHS_CHUNK=17;
-    public static final int VT_FACT_BINDING=34;
-    public static final int CUT=148;
-    public static final int VK_RULEFLOW_GROUP=61;
-    public static final int VK_ENTRY_POINT=77;
-    public static final int SINGLE_AMPER=125;
-    public static final int VT_PACKAGE_ID=42;
-    public static final int VK_RESULT=89;
+    public static final int VT_FACT_BINDING=35;
+    public static final int CUT=150;
+    public static final int VK_RULEFLOW_GROUP=62;
+    public static final int VK_ENTRY_POINT=78;
+    public static final int SINGLE_AMPER=127;
+    public static final int VT_PACKAGE_ID=43;
+    public static final int VK_RESULT=91;
     public static final int VT_LABEL=8;
-    public static final int WS=143;
-    public static final int VK_NO_LOOP=57;
-    public static final int LEFT_CURLY=138;
+    public static final int WS=145;
+    public static final int VK_NO_LOOP=58;
+    public static final int LEFT_CURLY=140;
     public static final int VT_FACT=6;
-    public static final int VT_PATTERN=33;
-    public static final int VK_IN=79;
-    public static final int LEFT_PAREN=109;
-    public static final int LESS_EQUAL=131;
-    public static final int VT_IMPORT_ID=43;
+    public static final int VT_PATTERN=34;
+    public static final int VK_IN=80;
+    public static final int LEFT_PAREN=111;
+    public static final int LESS_EQUAL=133;
     public static final int VT_RULE_ID=12;
-    public static final int MISC=140;
-    public static final int FROM=120;
+    public static final int VT_IMPORT_ID=44;
+    public static final int MISC=142;
+    public static final int FROM=122;
     public static final int VT_XOR=28;
-    public static final int COLLECT=123;
-    public static final int EscapeSequence=144;
-    public static final int VK_ACTIVATION_GROUP=59;
-    public static final int VK_ENABLED=65;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=150;
-    public static final int VK_PACKAGE=70;
-    public static final int VK_END=91;
-    public static final int OVER=121;
-    public static final int VK_EXTEND=68;
-    public static final int RIGHT_SQUARE=136;
-    public static final int RIGHT_CURLY=139;
-    public static final int SINGLE_PIPE=124;
-    public static final int VT_FACT_OR=35;
-    public static final int VT_FIELD=37;
-    public static final int FLOAT=133;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=30;
-    public static final int VK_EXISTS=84;
-    public static final int VK_FORANY=86;
-    public static final int ID=105;
-    public static final int VK_DATE_EXPIRES=55;
-    public static final int HexDigit=145;
+    public static final int COLLECT=125;
+    public static final int EscapeSequence=146;
+    public static final int VK_ACTIVATION_GROUP=60;
+    public static final int VK_ENABLED=66;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=152;
+    public static final int VK_END=93;
+    public static final int VK_PACKAGE=71;
+    public static final int OVER=123;
+    public static final int VK_EXTEND=69;
+    public static final int RIGHT_SQUARE=138;
+    public static final int RIGHT_CURLY=141;
+    public static final int SINGLE_PIPE=126;
+    public static final int VT_FACT_OR=36;
+    public static final int VK_IMPLIES=85;
+    public static final int VT_FIELD=38;
+    public static final int FLOAT=135;
+    public static final int VT_ACCUMULATE_ID_CLAUSE=31;
+    public static final int VK_EXISTS=86;
+    public static final int VK_FORANY=88;
+    public static final int ID=107;
+    public static final int VK_DATE_EXPIRES=56;
+    public static final int HexDigit=147;
     public static final int VT_OR_PREFIX=24;
-    public static final int VK_EVAL=76;
-    public static final int APPROX=141;
-    public static final int VK_WEIGHT=94;
-    public static final int DOUBLE_PIPE=118;
-    public static final int AT=112;
-    public static final int VT_ARGS=52;
-    public static final int RIGHT_PAREN=111;
-    public static final int THEN=137;
+    public static final int VK_EVAL=77;
+    public static final int APPROX=143;
+    public static final int VK_WEIGHT=96;
+    public static final int DOUBLE_PIPE=120;
+    public static final int AT=114;
+    public static final int VT_ARGS=53;
+    public static final int RIGHT_PAREN=113;
+    public static final int VT_IMPLIES=29;
+    public static final int THEN=139;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int VK_XOR=83;
-    public static final int VT_EXPRESSION_CHAIN=32;
-    public static final int COMMA=110;
-    public static final int EQUAL=127;
+    public static final int VK_XOR=84;
+    public static final int VT_EXPRESSION_CHAIN=33;
+    public static final int COMMA=112;
+    public static final int EQUAL=129;
     public static final int VT_BEHAVIOR=21;
-    public static final int VK_CONSTRID=101;
-    public static final int DOT=106;
+    public static final int VK_CONSTRID=103;
+    public static final int DOT=108;
     public static final int VT_QUERY_ID=9;
-    public static final int VK_DIALECT=63;
-    public static final int VT_PRIOR=51;
-    public static final int VT_GLOBAL_ID=44;
-    public static final int VK_NOT=78;
-    public static final int VT_FROM_SOURCE=31;
+    public static final int VK_DIALECT=64;
+    public static final int VT_PRIOR=52;
+    public static final int VT_GLOBAL_ID=45;
+    public static final int VK_NOT=79;
+    public static final int VT_FROM_SOURCE=32;
     public static final int VT_ENTRYPOINT_ID=13;
-    public static final int VK_DECLARE=73;
+    public static final int VK_DECLARE=74;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VK_REVERSE=88;
-    public static final int VK_LOCK_ON_ACTIVE=56;
-    public static final int VK_TEMPLATE=71;
+    public static final int VK_REVERSE=90;
+    public static final int VK_LOCK_ON_ACTIVE=57;
+    public static final int VK_TEMPLATE=72;
     public static final int VT_AND_INFIX=25;
     public static final int VT_RULE_ATTRIBUTES=16;
-    public static final int VK_DURATION=62;
-    public static final int VT_ACCESSOR_PATH=38;
-    public static final int MULTI_LINE_COMMENT=151;
-    public static final int VK_FORALL=85;
-    public static final int COLON=113;
+    public static final int VK_DURATION=63;
+    public static final int VT_ACCESSOR_PATH=39;
+    public static final int MULTI_LINE_COMMENT=153;
+    public static final int VK_FORALL=87;
+    public static final int COLON=115;
     public static final int VT_AND_IMPLICIT=22;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=29;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=30;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_SLOT_ID=14;
-    public static final int VK_ATTRIBUTES=66;
-    public static final int WHEN=115;
-    public static final int UnicodeEscape=146;
+    public static final int VK_ATTRIBUTES=67;
+    public static final int WHEN=117;
+    public static final int UnicodeEscape=148;
     public static final int VT_SQUARE_CHUNK=19;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int VK_DATE_EFFECTIVE=54;
-    public static final int VT_PARAM_LIST=46;
-    public static final int ARROW=126;
-    public static final int VT_BIND_FIELD=36;
+    public static final int VK_DATE_EFFECTIVE=55;
+    public static final int VT_PARAM_LIST=47;
+    public static final int ARROW=128;
+    public static final int VT_BIND_FIELD=37;
     public static final int VT_CONSTRAINTS=7;
-    public static final int VK_AGENDA_GROUP=60;
-    public static final int LEFT_SQUARE=135;
-    public static final int OctalEscape=147;
-    public static final int GREATER_EQUAL=129;
-    public static final int STRING=108;
-    public static final int VK_INIT=92;
+    public static final int VK_AGENDA_GROUP=61;
+    public static final int LEFT_SQUARE=137;
+    public static final int OctalEscape=149;
+    public static final int GREATER_EQUAL=131;
+    public static final int STRING=110;
+    public static final int VK_INIT=94;
 
     // delegates
     // delegators
@@ -450,7 +452,7 @@
     };
 
     // $ANTLR start "compilation_unit"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:433:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:435:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
     public final DRLParser.compilation_unit_return compilation_unit() throws RecognitionException {
         DRLParser.compilation_unit_return retval = new DRLParser.compilation_unit_return();
         retval.start = input.LT(1);
@@ -468,17 +470,17 @@
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         RewriteRuleSubtreeStream stream_package_statement=new RewriteRuleSubtreeStream(adaptor,"rule package_statement");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:4: ( package_statement )? ( statement )* EOF
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( package_statement )? ( statement )* EOF
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:4: ( package_statement )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: ( package_statement )?
             int alt1=2;
             alt1 = dfa1.predict(input);
             switch (alt1) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:434:4: package_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:436:4: package_statement
                     {
-                    pushFollow(FOLLOW_package_statement_in_compilation_unit530);
+                    pushFollow(FOLLOW_package_statement_in_compilation_unit538);
                     package_statement1=package_statement();
 
                     state._fsp--;
@@ -490,7 +492,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:435:3: ( statement )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:3: ( statement )*
             loop2:
             do {
                 int alt2=2;
@@ -503,9 +505,9 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:435:3: statement
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:3: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_compilation_unit535);
+            	    pushFollow(FOLLOW_statement_in_compilation_unit543);
             	    statement2=statement();
 
             	    state._fsp--;
@@ -520,13 +522,13 @@
                 }
             } while (true);
 
-            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit540); if (state.failed) return retval; 
+            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit548); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_EOF.add(EOF3);
 
 
 
             // AST REWRITE
-            // elements: package_statement, statement
+            // elements: statement, package_statement
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -536,20 +538,20 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 437:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            // 439:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:28: ( package_statement )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:28: ( package_statement )?
                 if ( stream_package_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_package_statement.nextTree());
 
                 }
                 stream_package_statement.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:437:47: ( statement )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:439:47: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.nextTree());
 
@@ -624,7 +626,7 @@
     };
 
     // $ANTLR start "package_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:476:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:478:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
     public final DRLParser.package_statement_return package_statement() throws RecognitionException {
         DRLParser.package_statement_return retval = new DRLParser.package_statement_return();
         retval.start = input.LT(1);
@@ -643,22 +645,22 @@
         RewriteRuleSubtreeStream stream_package_id=new RewriteRuleSubtreeStream(adaptor,"rule package_id");
          pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:479:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:479:4: package_key package_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:481:4: package_key package_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_package_key_in_package_statement595);
+            pushFollow(FOLLOW_package_key_in_package_statement603);
             package_key4=package_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_package_key.add(package_key4.getTree());
-            pushFollow(FOLLOW_package_id_in_package_statement599);
+            pushFollow(FOLLOW_package_id_in_package_statement607);
             package_id5=package_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_package_id.add(package_id5.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:480:14: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:14: ( SEMICOLON )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -667,9 +669,9 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:480:14: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:14: SEMICOLON
                     {
-                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement601); if (state.failed) return retval; 
+                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement609); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
 
 
@@ -694,9 +696,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 482:3: -> ^( package_key package_id )
+            // 484:3: -> ^( package_key package_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:482:6: ^( package_key package_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:484:6: ^( package_key package_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_package_key.nextNode(), root_1);
@@ -740,7 +742,7 @@
     };
 
     // $ANTLR start "package_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:485:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:487:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
     public final DRLParser.package_id_return package_id() throws RecognitionException {
         DRLParser.package_id_return retval = new DRLParser.package_id_return();
         retval.start = input.LT(1);
@@ -755,16 +757,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:4: id+= ID (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:4: id+= ID (id+= DOT id+= ID )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_package_id628); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_id636); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:11: (id+= DOT id+= ID )*
             loop4:
             do {
                 int alt4=2;
@@ -777,15 +779,15 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:488:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id634); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id642); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id638); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id646); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -817,9 +819,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 489:3: -> ^( VT_PACKAGE_ID ( ID )+ )
+            // 491:3: -> ^( VT_PACKAGE_ID ( ID )+ )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:489:6: ^( VT_PACKAGE_ID ( ID )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:491:6: ^( VT_PACKAGE_ID ( ID )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PACKAGE_ID, "VT_PACKAGE_ID"), root_1);
@@ -867,7 +869,7 @@
     };
 
     // $ANTLR start "statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:492:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:494:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
     public final DRLParser.statement_return statement() throws RecognitionException {
         DRLParser.statement_return retval = new DRLParser.statement_return();
         retval.start = input.LT(1);
@@ -895,16 +897,16 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
             int alt5=9;
             alt5 = dfa5.predict(input);
             switch (alt5) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:495:5: rule_attribute
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:5: rule_attribute
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_attribute_in_statement676);
+                    pushFollow(FOLLOW_rule_attribute_in_statement684);
                     rule_attribute7=rule_attribute();
 
                     state._fsp--;
@@ -914,7 +916,7 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:496:3: {...}? => function_import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:3: {...}? => function_import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -922,7 +924,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, \"import\") && validateLT(2, \"function\") )");
                     }
-                    pushFollow(FOLLOW_function_import_statement_in_statement683);
+                    pushFollow(FOLLOW_function_import_statement_in_statement691);
                     function_import_statement8=function_import_statement();
 
                     state._fsp--;
@@ -932,11 +934,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:497:4: import_statement
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:499:4: import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_import_statement_in_statement689);
+                    pushFollow(FOLLOW_import_statement_in_statement697);
                     import_statement9=import_statement();
 
                     state._fsp--;
@@ -946,11 +948,11 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:498:4: global
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:500:4: global
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_global_in_statement695);
+                    pushFollow(FOLLOW_global_in_statement703);
                     global10=global();
 
                     state._fsp--;
@@ -960,11 +962,11 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:499:4: function
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:4: function
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_function_in_statement701);
+                    pushFollow(FOLLOW_function_in_statement709);
                     function11=function();
 
                     state._fsp--;
@@ -974,7 +976,7 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:500:4: {...}? => template
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: {...}? => template
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -982,7 +984,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.TEMPLATE))");
                     }
-                    pushFollow(FOLLOW_template_in_statement709);
+                    pushFollow(FOLLOW_template_in_statement717);
                     template12=template();
 
                     state._fsp--;
@@ -992,7 +994,7 @@
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:501:4: {...}? => type_declaration
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:503:4: {...}? => type_declaration
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -1000,7 +1002,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.DECLARE))");
                     }
-                    pushFollow(FOLLOW_type_declaration_in_statement717);
+                    pushFollow(FOLLOW_type_declaration_in_statement725);
                     type_declaration13=type_declaration();
 
                     state._fsp--;
@@ -1010,11 +1012,11 @@
                     }
                     break;
                 case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:502:4: rule
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:504:4: rule
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_in_statement722);
+                    pushFollow(FOLLOW_rule_in_statement730);
                     rule14=rule();
 
                     state._fsp--;
@@ -1024,11 +1026,11 @@
                     }
                     break;
                 case 9 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:503:4: query
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:505:4: query
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_query_in_statement727);
+                    pushFollow(FOLLOW_query_in_statement735);
                     query15=query();
 
                     state._fsp--;
@@ -1065,7 +1067,7 @@
     };
 
     // $ANTLR start "import_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:506:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:508:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
     public final DRLParser.import_statement_return import_statement() throws RecognitionException {
         DRLParser.import_statement_return retval = new DRLParser.import_statement_return();
         retval.start = input.LT(1);
@@ -1084,22 +1086,22 @@
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_import_statement749);
+            pushFollow(FOLLOW_import_key_in_import_statement757);
             import_key16=import_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_key.add(import_key16.getTree());
-            pushFollow(FOLLOW_import_name_in_import_statement751);
+            pushFollow(FOLLOW_import_name_in_import_statement759);
             import_name17=import_name(DroolsParaphraseTypes.IMPORT);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_name.add(import_name17.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:57: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:57: ( SEMICOLON )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1108,9 +1110,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:509:57: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:57: SEMICOLON
                     {
-                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement754); if (state.failed) return retval; 
+                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement762); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
 
 
@@ -1125,7 +1127,7 @@
 
 
             // AST REWRITE
-            // elements: import_key, import_name
+            // elements: import_name, import_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1135,9 +1137,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 511:3: -> ^( import_key import_name )
+            // 513:3: -> ^( import_key import_name )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:511:6: ^( import_key import_name )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:513:6: ^( import_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_import_key.nextNode(), root_1);
@@ -1181,7 +1183,7 @@
     };
 
     // $ANTLR start "function_import_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:514:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:516:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
     public final DRLParser.function_import_statement_return function_import_statement() throws RecognitionException {
         DRLParser.function_import_statement_return retval = new DRLParser.function_import_statement_return();
         retval.start = input.LT(1);
@@ -1203,28 +1205,28 @@
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_function_import_statement792);
+            pushFollow(FOLLOW_import_key_in_function_import_statement800);
             imp=import_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_key.add(imp.getTree());
-            pushFollow(FOLLOW_function_key_in_function_import_statement794);
+            pushFollow(FOLLOW_function_key_in_function_import_statement802);
             function_key19=function_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_key.add(function_key19.getTree());
-            pushFollow(FOLLOW_import_name_in_function_import_statement796);
+            pushFollow(FOLLOW_import_name_in_function_import_statement804);
             import_name20=import_name(DroolsParaphraseTypes.FUNCTION_IMPORT);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_name.add(import_name20.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:83: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:83: ( SEMICOLON )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1233,9 +1235,9 @@
             }
             switch (alt7) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:517:83: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:83: SEMICOLON
                     {
-                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement799); if (state.failed) return retval; 
+                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement807); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
 
 
@@ -1250,7 +1252,7 @@
 
 
             // AST REWRITE
-            // elements: function_key, import_name
+            // elements: import_name, function_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1260,9 +1262,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 519:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+            // 521:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:519:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:521:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FUNCTION_IMPORT, (imp!=null?((Token)imp.start):null)), root_1);
@@ -1307,7 +1309,7 @@
     };
 
     // $ANTLR start "import_name"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:524:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
     public final DRLParser.import_name_return import_name(DroolsParaphraseTypes importType) throws RecognitionException {
         DRLParser.import_name_return retval = new DRLParser.import_name_return();
         retval.start = input.LT(1);
@@ -1323,16 +1325,16 @@
         RewriteRuleTokenStream stream_DOT_STAR=new RewriteRuleTokenStream(adaptor,"token DOT_STAR");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_import_name833); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_name841); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:11: (id+= DOT id+= ID )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:11: (id+= DOT id+= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -1345,15 +1347,15 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name839); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name847); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name843); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name851); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -1368,7 +1370,7 @@
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:33: (id+= DOT_STAR )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:33: (id+= DOT_STAR )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1377,9 +1379,9 @@
             }
             switch (alt9) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:523:33: id+= DOT_STAR
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:525:33: id+= DOT_STAR
                     {
-                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name850); if (state.failed) return retval; 
+                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name858); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_DOT_STAR.add(id);
 
                     if (list_id==null) list_id=new ArrayList();
@@ -1408,9 +1410,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 526:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            // 528:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_IMPORT_ID, "VT_IMPORT_ID"), root_1);
@@ -1423,7 +1425,7 @@
 
                 }
                 stream_ID.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:526:25: ( DOT_STAR )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:528:25: ( DOT_STAR )?
                 if ( stream_DOT_STAR.hasNext() ) {
                     adaptor.addChild(root_1, stream_DOT_STAR.nextNode());
 
@@ -1464,7 +1466,7 @@
     };
 
     // $ANTLR start "global"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:529:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:531:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
     public final DRLParser.global_return global() throws RecognitionException {
         DRLParser.global_return retval = new DRLParser.global_return();
         retval.start = input.LT(1);
@@ -1486,28 +1488,28 @@
         RewriteRuleSubtreeStream stream_global_id=new RewriteRuleSubtreeStream(adaptor,"rule global_id");
          pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:4: global_key data_type global_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:4: global_key data_type global_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_global_key_in_global890);
+            pushFollow(FOLLOW_global_key_in_global898);
             global_key22=global_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_global_key.add(global_key22.getTree());
-            pushFollow(FOLLOW_data_type_in_global892);
+            pushFollow(FOLLOW_data_type_in_global900);
             data_type23=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_data_type.add(data_type23.getTree());
-            pushFollow(FOLLOW_global_id_in_global894);
+            pushFollow(FOLLOW_global_id_in_global902);
             global_id24=global_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_global_id.add(global_id24.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:35: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:35: ( SEMICOLON )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1516,9 +1518,9 @@
             }
             switch (alt10) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:532:35: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:35: SEMICOLON
                     {
-                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global896); if (state.failed) return retval; 
+                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global904); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
 
 
@@ -1543,9 +1545,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 534:3: -> ^( global_key data_type global_id )
+            // 536:3: -> ^( global_key data_type global_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:534:6: ^( global_key data_type global_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:536:6: ^( global_key data_type global_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_global_key.nextNode(), root_1);
@@ -1590,7 +1592,7 @@
     };
 
     // $ANTLR start "global_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:537:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:539:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
     public final DRLParser.global_id_return global_id() throws RecognitionException {
         DRLParser.global_id_return retval = new DRLParser.global_id_return();
         retval.start = input.LT(1);
@@ -1603,10 +1605,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:2: (id= ID -> VT_GLOBAL_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:538:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:540:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_global_id925); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_id933); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1626,7 +1628,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 541:3: -> VT_GLOBAL_ID[$id]
+            // 543:3: -> VT_GLOBAL_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_GLOBAL_ID, id));
 
@@ -1661,7 +1663,7 @@
     };
 
     // $ANTLR start "function"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:544:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:546:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
     public final DRLParser.function_return function() throws RecognitionException {
         DRLParser.function_return retval = new DRLParser.function_return();
         retval.start = input.LT(1);
@@ -1686,16 +1688,16 @@
         RewriteRuleSubtreeStream stream_curly_chunk=new RewriteRuleSubtreeStream(adaptor,"rule curly_chunk");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:4: function_key ( data_type )? function_id parameters curly_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:4: function_key ( data_type )? function_id parameters curly_chunk
             {
-            pushFollow(FOLLOW_function_key_in_function957);
+            pushFollow(FOLLOW_function_key_in_function965);
             function_key26=function_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_key.add(function_key26.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:17: ( data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:17: ( data_type )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1708,9 +1710,9 @@
             }
             switch (alt11) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:547:17: data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:549:17: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_function959);
+                    pushFollow(FOLLOW_data_type_in_function967);
                     data_type27=data_type();
 
                     state._fsp--;
@@ -1722,19 +1724,19 @@
 
             }
 
-            pushFollow(FOLLOW_function_id_in_function962);
+            pushFollow(FOLLOW_function_id_in_function970);
             function_id28=function_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_id.add(function_id28.getTree());
-            pushFollow(FOLLOW_parameters_in_function964);
+            pushFollow(FOLLOW_parameters_in_function972);
             parameters29=parameters();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_parameters.add(parameters29.getTree());
-            pushFollow(FOLLOW_curly_chunk_in_function966);
+            pushFollow(FOLLOW_curly_chunk_in_function974);
             curly_chunk30=curly_chunk();
 
             state._fsp--;
@@ -1743,7 +1745,7 @@
 
 
             // AST REWRITE
-            // elements: function_id, curly_chunk, function_key, parameters, data_type
+            // elements: curly_chunk, data_type, function_id, parameters, function_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1753,14 +1755,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 548:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
+            // 550:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:550:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_function_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:548:21: ( data_type )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:550:21: ( data_type )?
                 if ( stream_data_type.hasNext() ) {
                     adaptor.addChild(root_1, stream_data_type.nextTree());
 
@@ -1807,7 +1809,7 @@
     };
 
     // $ANTLR start "function_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:551:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:553:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
     public final DRLParser.function_id_return function_id() throws RecognitionException {
         DRLParser.function_id_return retval = new DRLParser.function_id_return();
         retval.start = input.LT(1);
@@ -1820,10 +1822,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:552:2: (id= ID -> VT_FUNCTION_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:552:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:554:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_function_id996); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_id1004); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1843,7 +1845,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 555:3: -> VT_FUNCTION_ID[$id]
+            // 557:3: -> VT_FUNCTION_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_FUNCTION_ID, id));
 
@@ -1878,7 +1880,7 @@
     };
 
     // $ANTLR start "query"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:558:1: query : query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:560:1: query : query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) ;
     public final DRLParser.query_return query() throws RecognitionException {
         DRLParser.query_return retval = new DRLParser.query_return();
         retval.start = input.LT(1);
@@ -1906,16 +1908,16 @@
         RewriteRuleSubtreeStream stream_query_id=new RewriteRuleSubtreeStream(adaptor,"rule query_id");
          pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:561:2: ( query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:561:4: query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:2: ( query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:4: query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_query_key_in_query1028);
+            pushFollow(FOLLOW_query_key_in_query1036);
             query_key31=query_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_query_key.add(query_key31.getTree());
-            pushFollow(FOLLOW_query_id_in_query1030);
+            pushFollow(FOLLOW_query_id_in_query1038);
             query_id32=query_id();
 
             state._fsp--;
@@ -1924,14 +1926,14 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:3: ( parameters )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565:3: ( parameters )?
             int alt12=2;
             alt12 = dfa12.predict(input);
             switch (alt12) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:563:3: parameters
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:565:3: parameters
                     {
-                    pushFollow(FOLLOW_parameters_in_query1038);
+                    pushFollow(FOLLOW_parameters_in_query1046);
                     parameters33=parameters();
 
                     state._fsp--;
@@ -1946,19 +1948,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_query1047);
+            pushFollow(FOLLOW_normal_lhs_block_in_query1055);
             normal_lhs_block34=normal_lhs_block();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block34.getTree());
-            pushFollow(FOLLOW_end_key_in_query1054);
+            pushFollow(FOLLOW_end_key_in_query1062);
             end=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:566:15: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:15: ( SEMICOLON )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1967,9 +1969,9 @@
             }
             switch (alt13) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:566:15: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:15: SEMICOLON
                     {
-                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query1056); if (state.failed) return retval; 
+                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query1064); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON35);
 
 
@@ -1984,7 +1986,7 @@
 
 
             // AST REWRITE
-            // elements: end_key, parameters, query_key, query_id, normal_lhs_block
+            // elements: end_key, query_id, normal_lhs_block, parameters, query_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1994,15 +1996,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 568:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
+            // 570:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:6: ^( query_key query_id ( parameters )? normal_lhs_block end_key )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:570:6: ^( query_key query_id ( parameters )? normal_lhs_block end_key )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_query_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_query_id.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:568:27: ( parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:570:27: ( parameters )?
                 if ( stream_parameters.hasNext() ) {
                     adaptor.addChild(root_1, stream_parameters.nextTree());
 
@@ -2048,7 +2050,7 @@
     };
 
     // $ANTLR start "query_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:571:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:573:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
     public final DRLParser.query_id_return query_id() throws RecognitionException {
         DRLParser.query_id_return retval = new DRLParser.query_id_return();
         retval.start = input.LT(1);
@@ -2062,7 +2064,7 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2081,9 +2083,9 @@
             }
             switch (alt14) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:572:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:574:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id1091); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id1099); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2103,7 +2105,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 574:65: -> VT_QUERY_ID[$id]
+                    // 576:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2113,9 +2115,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:575:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:577:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id1107); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id1115); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2135,7 +2137,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 577:65: -> VT_QUERY_ID[$id]
+                    // 579:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2172,7 +2174,7 @@
     };
 
     // $ANTLR start "parameters"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:580:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
     public final DRLParser.parameters_return parameters() throws RecognitionException {
         DRLParser.parameters_return retval = new DRLParser.parameters_return();
         retval.start = input.LT(1);
@@ -2195,16 +2197,16 @@
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleSubtreeStream stream_param_definition=new RewriteRuleSubtreeStream(adaptor,"rule param_definition");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:581:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:581:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:583:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
             {
-            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1126); if (state.failed) return retval; 
+            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters1134); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN36);
 
             if ( state.backtracking==0 ) {
               	emit(LEFT_PAREN36, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:4: ( param_definition ( COMMA param_definition )* )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:4: ( param_definition ( COMMA param_definition )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -2213,15 +2215,15 @@
             }
             switch (alt16) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:6: param_definition ( COMMA param_definition )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:6: param_definition ( COMMA param_definition )*
                     {
-                    pushFollow(FOLLOW_param_definition_in_parameters1135);
+                    pushFollow(FOLLOW_param_definition_in_parameters1143);
                     param_definition37=param_definition();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_param_definition.add(param_definition37.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:23: ( COMMA param_definition )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:23: ( COMMA param_definition )*
                     loop15:
                     do {
                         int alt15=2;
@@ -2234,15 +2236,15 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:582:24: COMMA param_definition
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:24: COMMA param_definition
                     	    {
-                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters1138); if (state.failed) return retval; 
+                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters1146); if (state.failed) return retval; 
                     	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA38);
 
                     	    if ( state.backtracking==0 ) {
                     	      	emit(COMMA38, DroolsEditorType.SYMBOL);	
                     	    }
-                    	    pushFollow(FOLLOW_param_definition_in_parameters1142);
+                    	    pushFollow(FOLLOW_param_definition_in_parameters1150);
                     	    param_definition39=param_definition();
 
                     	    state._fsp--;
@@ -2263,7 +2265,7 @@
 
             }
 
-            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1151); if (state.failed) return retval; 
+            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1159); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN40);
 
             if ( state.backtracking==0 ) {
@@ -2282,14 +2284,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 584:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+            // 586:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:586:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PARAM_LIST, "VT_PARAM_LIST"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:584:22: ( param_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:586:22: ( param_definition )*
                 while ( stream_param_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_param_definition.nextTree());
 
@@ -2331,7 +2333,7 @@
     };
 
     // $ANTLR start "param_definition"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:587:1: param_definition : ( data_type )? argument ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:589:1: param_definition : ( data_type )? argument ;
     public final DRLParser.param_definition_return param_definition() throws RecognitionException {
         DRLParser.param_definition_return retval = new DRLParser.param_definition_return();
         retval.start = input.LT(1);
@@ -2345,19 +2347,19 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:2: ( ( data_type )? argument )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: ( data_type )? argument
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:2: ( ( data_type )? argument )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: ( data_type )? argument
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: ( data_type )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: ( data_type )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:588:4: data_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:590:4: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition1177);
+                    pushFollow(FOLLOW_data_type_in_param_definition1185);
                     data_type41=data_type();
 
                     state._fsp--;
@@ -2369,7 +2371,7 @@
 
             }
 
-            pushFollow(FOLLOW_argument_in_param_definition1180);
+            pushFollow(FOLLOW_argument_in_param_definition1188);
             argument42=argument();
 
             state._fsp--;
@@ -2404,7 +2406,7 @@
     };
 
     // $ANTLR start "argument"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:591:1: argument : ID ( dimension_definition )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:1: argument : ID ( dimension_definition )* ;
     public final DRLParser.argument_return argument() throws RecognitionException {
         DRLParser.argument_return retval = new DRLParser.argument_return();
         retval.start = input.LT(1);
@@ -2418,12 +2420,12 @@
         Object ID43_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:592:2: ( ID ( dimension_definition )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:592:4: ID ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:2: ( ID ( dimension_definition )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:594:4: ID ( dimension_definition )*
             {
             root_0 = (Object)adaptor.nil();
 
-            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1191); if (state.failed) return retval;
+            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1199); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ID43_tree = (Object)adaptor.create(ID43);
             adaptor.addChild(root_0, ID43_tree);
@@ -2431,7 +2433,7 @@
             if ( state.backtracking==0 ) {
               	emit(ID43, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:3: ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595:3: ( dimension_definition )*
             loop18:
             do {
                 int alt18=2;
@@ -2444,9 +2446,9 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:593:3: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:595:3: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_argument1197);
+            	    pushFollow(FOLLOW_dimension_definition_in_argument1205);
             	    dimension_definition44=dimension_definition();
 
             	    state._fsp--;
@@ -2490,7 +2492,7 @@
     };
 
     // $ANTLR start "type_declaration"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:596:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:598:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) ;
     public final DRLParser.type_declaration_return type_declaration() throws RecognitionException {
         DRLParser.type_declaration_return retval = new DRLParser.type_declaration_return();
         retval.start = input.LT(1);
@@ -2515,22 +2517,22 @@
         RewriteRuleSubtreeStream stream_declare_key=new RewriteRuleSubtreeStream(adaptor,"rule declare_key");
          pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:599:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key
             {
-            pushFollow(FOLLOW_declare_key_in_type_declaration1220);
+            pushFollow(FOLLOW_declare_key_in_type_declaration1228);
             declare_key45=declare_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_declare_key.add(declare_key45.getTree());
-            pushFollow(FOLLOW_type_declare_id_in_type_declaration1223);
+            pushFollow(FOLLOW_type_declare_id_in_type_declaration1231);
             type_declare_id46=type_declare_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_type_declare_id.add(type_declare_id46.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:3: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:3: ( decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -2543,9 +2545,9 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:600:3: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:602:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1227);
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1235);
             	    decl_metadata47=decl_metadata();
 
             	    state._fsp--;
@@ -2560,7 +2562,7 @@
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:3: ( decl_field )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:3: ( decl_field )*
             loop20:
             do {
                 int alt20=2;
@@ -2579,9 +2581,9 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:601:3: decl_field
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:3: decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration1232);
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration1240);
             	    decl_field48=decl_field();
 
             	    state._fsp--;
@@ -2596,7 +2598,7 @@
                 }
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_type_declaration1237);
+            pushFollow(FOLLOW_end_key_in_type_declaration1245);
             end_key49=end_key();
 
             state._fsp--;
@@ -2605,7 +2607,7 @@
 
 
             // AST REWRITE
-            // elements: type_declare_id, decl_field, decl_metadata, end_key, declare_key
+            // elements: end_key, declare_key, type_declare_id, decl_metadata, decl_field
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2615,21 +2617,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 603:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
+            // 605:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_declare_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_type_declare_id.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:36: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:36: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:603:51: ( decl_field )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:605:51: ( decl_field )*
                 while ( stream_decl_field.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_field.nextTree());
 
@@ -2674,7 +2676,7 @@
     };
 
     // $ANTLR start "type_declare_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:606:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:608:1: type_declare_id : id= ID -> VT_TYPE_DECLARE_ID[$id] ;
     public final DRLParser.type_declare_id_return type_declare_id() throws RecognitionException {
         DRLParser.type_declare_id_return retval = new DRLParser.type_declare_id_return();
         retval.start = input.LT(1);
@@ -2687,10 +2689,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:607:5: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:609:5: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1269); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1277); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -2710,7 +2712,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 609:72: -> VT_TYPE_DECLARE_ID[$id]
+            // 611:72: -> VT_TYPE_DECLARE_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_TYPE_DECLARE_ID, id));
 
@@ -2745,7 +2747,7 @@
     };
 
     // $ANTLR start "decl_metadata"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:612:1: decl_metadata : AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:614:1: decl_metadata : AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) ;
     public final DRLParser.decl_metadata_return decl_metadata() throws RecognitionException {
         DRLParser.decl_metadata_return retval = new DRLParser.decl_metadata_return();
         retval.start = input.LT(1);
@@ -2763,22 +2765,22 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:2: ( AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:613:4: AT ID ( paren_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:615:2: ( AT ID ( paren_chunk )? -> ^( AT ID ( paren_chunk )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:615:4: AT ID ( paren_chunk )?
             {
-            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1288); if (state.failed) return retval; 
+            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1296); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_AT.add(AT50);
 
             if ( state.backtracking==0 ) {
               	emit(AT50, DroolsEditorType.SYMBOL);	
             }
-            ID51=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1296); if (state.failed) return retval; 
+            ID51=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1304); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID51);
 
             if ( state.backtracking==0 ) {
               	emit(ID51, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:3: ( paren_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: ( paren_chunk )?
             int alt21=2;
             int LA21_0 = input.LA(1);
 
@@ -2787,9 +2789,9 @@
             }
             switch (alt21) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:617:3: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:619:3: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_decl_metadata1303);
+                    pushFollow(FOLLOW_paren_chunk_in_decl_metadata1311);
                     paren_chunk52=paren_chunk();
 
                     state._fsp--;
@@ -2804,7 +2806,7 @@
 
 
             // AST REWRITE
-            // elements: paren_chunk, AT, ID
+            // elements: ID, paren_chunk, AT
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2814,15 +2816,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 618:3: -> ^( AT ID ( paren_chunk )? )
+            // 620:3: -> ^( AT ID ( paren_chunk )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:6: ^( AT ID ( paren_chunk )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:6: ^( AT ID ( paren_chunk )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_AT.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:618:14: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:620:14: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
@@ -2863,7 +2865,7 @@
     };
 
     // $ANTLR start "decl_field"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:621:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:1: decl_field : ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) ;
     public final DRLParser.decl_field_return decl_field() throws RecognitionException {
         DRLParser.decl_field_return retval = new DRLParser.decl_field_return();
         retval.start = input.LT(1);
@@ -2887,16 +2889,16 @@
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:622:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:622:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:624:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:624:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
             {
-            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1328); if (state.failed) return retval; 
+            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1336); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(ID53);
 
             if ( state.backtracking==0 ) {
               	emit(ID53, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:3: ( decl_field_initialization )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:625:3: ( decl_field_initialization )?
             int alt22=2;
             int LA22_0 = input.LA(1);
 
@@ -2905,9 +2907,9 @@
             }
             switch (alt22) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:623:3: decl_field_initialization
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:625:3: decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1334);
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1342);
                     decl_field_initialization54=decl_field_initialization();
 
                     state._fsp--;
@@ -2919,19 +2921,19 @@
 
             }
 
-            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1340); if (state.failed) return retval; 
+            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1348); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_COLON.add(COLON55);
 
             if ( state.backtracking==0 ) {
               	emit(COLON55, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_data_type_in_decl_field1346);
+            pushFollow(FOLLOW_data_type_in_decl_field1354);
             data_type56=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_data_type.add(data_type56.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:626:3: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:3: ( decl_metadata )*
             loop23:
             do {
                 int alt23=2;
@@ -2944,9 +2946,9 @@
 
                 switch (alt23) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:626:3: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:628:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1350);
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1358);
             	    decl_metadata57=decl_metadata();
 
             	    state._fsp--;
@@ -2964,7 +2966,7 @@
 
 
             // AST REWRITE
-            // elements: decl_field_initialization, data_type, decl_metadata, ID
+            // elements: decl_metadata, data_type, ID, decl_field_initialization
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2974,21 +2976,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 627:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+            // 629:3: -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:6: ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_ID.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:11: ( decl_field_initialization )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:11: ( decl_field_initialization )?
                 if ( stream_decl_field_initialization.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_field_initialization.nextTree());
 
                 }
                 stream_decl_field_initialization.reset();
                 adaptor.addChild(root_1, stream_data_type.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:627:48: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:629:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
@@ -3029,7 +3031,7 @@
     };
 
     // $ANTLR start "decl_field_initialization"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:630:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:632:1: decl_field_initialization : EQUALS paren_chunk -> ^( EQUALS paren_chunk ) ;
     public final DRLParser.decl_field_initialization_return decl_field_initialization() throws RecognitionException {
         DRLParser.decl_field_initialization_return retval = new DRLParser.decl_field_initialization_return();
         retval.start = input.LT(1);
@@ -3044,16 +3046,16 @@
         RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:631:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:631:4: EQUALS paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:4: EQUALS paren_chunk
             {
-            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1378); if (state.failed) return retval; 
+            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1386); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS58);
 
             if ( state.backtracking==0 ) {
               	emit(EQUALS58, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1384);
+            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1392);
             paren_chunk59=paren_chunk();
 
             state._fsp--;
@@ -3062,7 +3064,7 @@
 
 
             // AST REWRITE
-            // elements: EQUALS, paren_chunk
+            // elements: paren_chunk, EQUALS
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3072,9 +3074,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 633:2: -> ^( EQUALS paren_chunk )
+            // 635:2: -> ^( EQUALS paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:633:5: ^( EQUALS paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:635:5: ^( EQUALS paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_EQUALS.nextNode(), root_1);
@@ -3115,7 +3117,7 @@
     };
 
     // $ANTLR start "template"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:636:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:638:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) ;
     public final DRLParser.template_return template() throws RecognitionException {
         DRLParser.template_return retval = new DRLParser.template_return();
         retval.start = input.LT(1);
@@ -3142,25 +3144,25 @@
         RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
          pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:639:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:640:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:641:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )?
             {
             if ( state.backtracking==0 ) {
               	beginSentence(DroolsSentenceType.TEMPLATE);	
             }
-            pushFollow(FOLLOW_template_key_in_template1421);
+            pushFollow(FOLLOW_template_key_in_template1429);
             template_key60=template_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_template_key.add(template_key60.getTree());
-            pushFollow(FOLLOW_template_id_in_template1423);
+            pushFollow(FOLLOW_template_id_in_template1431);
             template_id61=template_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_template_id.add(template_id61.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:8: (semi1= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:8: (semi1= SEMICOLON )?
             int alt24=2;
             int LA24_0 = input.LA(1);
 
@@ -3169,9 +3171,9 @@
             }
             switch (alt24) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:642:8: semi1= SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:8: semi1= SEMICOLON
                     {
-                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1430); if (state.failed) return retval; 
+                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1438); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi1);
 
 
@@ -3183,7 +3185,7 @@
             if ( state.backtracking==0 ) {
               	emit(semi1, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:3: ( template_slot )+
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:646:3: ( template_slot )+
             int cnt25=0;
             loop25:
             do {
@@ -3193,7 +3195,10 @@
                 if ( (LA25_0==ID) ) {
                     int LA25_1 = input.LA(2);
 
-                    if ( (LA25_1==ID) ) {
+                    if ( (LA25_1==DOT||LA25_1==LEFT_SQUARE) ) {
+                        alt25=1;
+                    }
+                    else if ( (LA25_1==ID) ) {
                         int LA25_3 = input.LA(3);
 
                         if ( (LA25_3==ID) ) {
@@ -3211,9 +3216,6 @@
 
 
                     }
-                    else if ( (LA25_1==DOT||LA25_1==LEFT_SQUARE) ) {
-                        alt25=1;
-                    }
 
 
                 }
@@ -3221,9 +3223,9 @@
 
                 switch (alt25) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:644:3: template_slot
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:646:3: template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template1438);
+            	    pushFollow(FOLLOW_template_slot_in_template1446);
             	    template_slot62=template_slot();
 
             	    state._fsp--;
@@ -3243,13 +3245,13 @@
                 cnt25++;
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_template1445);
+            pushFollow(FOLLOW_end_key_in_template1453);
             end=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:645:20: (semi2= SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:20: (semi2= SEMICOLON )?
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -3258,9 +3260,9 @@
             }
             switch (alt26) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:645:20: semi2= SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:20: semi2= SEMICOLON
                     {
-                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1449); if (state.failed) return retval; 
+                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1457); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi2);
 
 
@@ -3285,9 +3287,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 647:3: -> ^( template_key template_id ( template_slot )+ end_key )
+            // 649:3: -> ^( template_key template_id ( template_slot )+ end_key )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:647:6: ^( template_key template_id ( template_slot )+ end_key )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:649:6: ^( template_key template_id ( template_slot )+ end_key )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_template_key.nextNode(), root_1);
@@ -3340,7 +3342,7 @@
     };
 
     // $ANTLR start "template_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:650:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:652:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
     public final DRLParser.template_id_return template_id() throws RecognitionException {
         DRLParser.template_id_return retval = new DRLParser.template_id_return();
         retval.start = input.LT(1);
@@ -3354,7 +3356,7 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:651:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -3373,9 +3375,9 @@
             }
             switch (alt27) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:651:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:653:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1482); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1490); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3395,7 +3397,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 653:68: -> VT_TEMPLATE_ID[$id]
+                    // 655:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3405,9 +3407,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:654:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:656:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1498); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1506); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3427,7 +3429,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 656:68: -> VT_TEMPLATE_ID[$id]
+                    // 658:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3464,7 +3466,7 @@
     };
 
     // $ANTLR start "template_slot"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:659:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:661:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
     public final DRLParser.template_slot_return template_slot() throws RecognitionException {
         DRLParser.template_slot_return retval = new DRLParser.template_slot_return();
         retval.start = input.LT(1);
@@ -3482,22 +3484,22 @@
         RewriteRuleSubtreeStream stream_slot_id=new RewriteRuleSubtreeStream(adaptor,"rule slot_id");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660:5: data_type slot_id ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:5: data_type slot_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_data_type_in_template_slot1518);
+            pushFollow(FOLLOW_data_type_in_template_slot1526);
             data_type63=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_data_type.add(data_type63.getTree());
-            pushFollow(FOLLOW_slot_id_in_template_slot1520);
+            pushFollow(FOLLOW_slot_id_in_template_slot1528);
             slot_id64=slot_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_slot_id.add(slot_id64.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660:23: ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:23: ( SEMICOLON )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -3506,9 +3508,9 @@
             }
             switch (alt28) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:660:23: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:23: SEMICOLON
                     {
-                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1522); if (state.failed) return retval; 
+                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1530); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON65);
 
 
@@ -3533,9 +3535,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 662:3: -> ^( VT_SLOT data_type slot_id )
+            // 664:3: -> ^( VT_SLOT data_type slot_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:662:6: ^( VT_SLOT data_type slot_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:664:6: ^( VT_SLOT data_type slot_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_SLOT, "VT_SLOT"), root_1);
@@ -3577,7 +3579,7 @@
     };
 
     // $ANTLR start "slot_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:665:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:667:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
     public final DRLParser.slot_id_return slot_id() throws RecognitionException {
         DRLParser.slot_id_return retval = new DRLParser.slot_id_return();
         retval.start = input.LT(1);
@@ -3590,10 +3592,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:2: (id= ID -> VT_SLOT_ID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:666:4: id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:668:2: (id= ID -> VT_SLOT_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:668:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1551); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1559); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -3612,7 +3614,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 668:3: -> VT_SLOT_ID[$id]
+            // 670:3: -> VT_SLOT_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SLOT_ID, id));
 
@@ -3647,7 +3649,7 @@
     };
 
     // $ANTLR start "rule"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:671:1: rule : rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:673:1: rule : rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) ;
     public final DRLParser.rule_return rule() throws RecognitionException {
         DRLParser.rule_return retval = new DRLParser.rule_return();
         retval.start = input.LT(1);
@@ -3680,19 +3682,19 @@
         RewriteRuleSubtreeStream stream_when_part=new RewriteRuleSubtreeStream(adaptor,"rule when_part");
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:674:2: ( rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:675:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:676:2: ( rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:677:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
             {
             if ( state.backtracking==0 ) {
               	beginSentence(DroolsSentenceType.RULE);	
             }
-            pushFollow(FOLLOW_rule_key_in_rule1588);
+            pushFollow(FOLLOW_rule_key_in_rule1596);
             rule_key66=rule_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_rule_key.add(rule_key66.getTree());
-            pushFollow(FOLLOW_rule_id_in_rule1590);
+            pushFollow(FOLLOW_rule_id_in_rule1598);
             rule_id67=rule_id();
 
             state._fsp--;
@@ -3701,20 +3703,20 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:3: ( extend_key rule_id )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:3: ( extend_key rule_id )?
             int alt29=2;
             alt29 = dfa29.predict(input);
             switch (alt29) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:4: extend_key rule_id
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:4: extend_key rule_id
                     {
-                    pushFollow(FOLLOW_extend_key_in_rule1599);
+                    pushFollow(FOLLOW_extend_key_in_rule1607);
                     extend_key68=extend_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_extend_key.add(extend_key68.getTree());
-                    pushFollow(FOLLOW_rule_id_in_rule1601);
+                    pushFollow(FOLLOW_rule_id_in_rule1609);
                     rule_id69=rule_id();
 
                     state._fsp--;
@@ -3726,7 +3728,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:25: ( decl_metadata )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:25: ( decl_metadata )*
             loop30:
             do {
                 int alt30=2;
@@ -3739,9 +3741,9 @@
 
                 switch (alt30) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:25: decl_metadata
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:25: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_rule1605);
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1613);
             	    decl_metadata70=decl_metadata();
 
             	    state._fsp--;
@@ -3756,7 +3758,7 @@
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:40: ( rule_attributes )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:40: ( rule_attributes )?
             int alt31=2;
             int LA31_0 = input.LA(1);
 
@@ -3765,9 +3767,9 @@
             }
             switch (alt31) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:40: rule_attributes
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:40: rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule1608);
+                    pushFollow(FOLLOW_rule_attributes_in_rule1616);
                     rule_attributes71=rule_attributes();
 
                     state._fsp--;
@@ -3779,7 +3781,7 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:57: ( when_part )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:57: ( when_part )?
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -3788,9 +3790,9 @@
             }
             switch (alt32) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:678:57: when_part
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:680:57: when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule1611);
+                    pushFollow(FOLLOW_when_part_in_rule1619);
                     when_part72=when_part();
 
                     state._fsp--;
@@ -3802,7 +3804,7 @@
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule1614);
+            pushFollow(FOLLOW_rhs_chunk_in_rule1622);
             rhs_chunk73=rhs_chunk();
 
             state._fsp--;
@@ -3811,7 +3813,7 @@
 
 
             // AST REWRITE
-            // elements: rule_id, extend_key, rule_attributes, rule_id, decl_metadata, rule_key, rhs_chunk, when_part
+            // elements: extend_key, rhs_chunk, when_part, rule_id, rule_attributes, decl_metadata, rule_key, rule_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3821,17 +3823,17 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 679:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+            // 681:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_rule_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_rule_id.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:25: ( ^( extend_key rule_id ) )?
-                if ( stream_rule_id.hasNext()||stream_extend_key.hasNext() ) {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:25: ^( extend_key rule_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:25: ( ^( extend_key rule_id ) )?
+                if ( stream_extend_key.hasNext()||stream_rule_id.hasNext() ) {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:25: ^( extend_key rule_id )
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_extend_key.nextNode(), root_2);
@@ -3842,21 +3844,21 @@
                     }
 
                 }
+                stream_extend_key.reset();
                 stream_rule_id.reset();
-                stream_extend_key.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:48: ( decl_metadata )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:63: ( rule_attributes )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:63: ( rule_attributes )?
                 if ( stream_rule_attributes.hasNext() ) {
                     adaptor.addChild(root_1, stream_rule_attributes.nextTree());
 
                 }
                 stream_rule_attributes.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:679:80: ( when_part )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:681:80: ( when_part )?
                 if ( stream_when_part.hasNext() ) {
                     adaptor.addChild(root_1, stream_when_part.nextTree());
 
@@ -3943,7 +3945,7 @@
     };
 
     // $ANTLR start "when_part"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:724:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
     public final DRLParser.when_part_return when_part() throws RecognitionException {
         DRLParser.when_part_return retval = new DRLParser.when_part_return();
         retval.start = input.LT(1);
@@ -3961,16 +3963,16 @@
         RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:725:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:725:5: WHEN ( COLON )? normal_lhs_block
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:5: WHEN ( COLON )? normal_lhs_block
             {
-            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1658); if (state.failed) return retval; 
+            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1666); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_WHEN.add(WHEN74);
 
             if ( state.backtracking==0 ) {
               	emit(WHEN74, DroolsEditorType.KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:3: ( COLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:3: ( COLON )?
             int alt33=2;
             int LA33_0 = input.LA(1);
 
@@ -3979,9 +3981,9 @@
             }
             switch (alt33) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:3: COLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:3: COLON
                     {
-                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1664); if (state.failed) return retval; 
+                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1672); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COLON.add(COLON75);
 
 
@@ -3996,7 +3998,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_when_part1674);
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1682);
             normal_lhs_block76=normal_lhs_block();
 
             state._fsp--;
@@ -4015,7 +4017,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 729:2: -> WHEN normal_lhs_block
+            // 731:2: -> WHEN normal_lhs_block
             {
                 adaptor.addChild(root_0, stream_WHEN.nextNode());
                 adaptor.addChild(root_0, stream_normal_lhs_block.nextTree());
@@ -4051,7 +4053,7 @@
     };
 
     // $ANTLR start "rule_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:734:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
     public final DRLParser.rule_id_return rule_id() throws RecognitionException {
         DRLParser.rule_id_return retval = new DRLParser.rule_id_return();
         retval.start = input.LT(1);
@@ -4065,7 +4067,7 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:733:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
             int alt34=2;
             int LA34_0 = input.LA(1);
 
@@ -4084,9 +4086,9 @@
             }
             switch (alt34) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:733:5: id= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1695); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1703); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4106,7 +4108,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 735:64: -> VT_RULE_ID[$id]
+                    // 737:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4116,9 +4118,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:736:5: id= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:738:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1711); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1719); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4138,7 +4140,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 738:64: -> VT_RULE_ID[$id]
+                    // 740:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4175,7 +4177,7 @@
     };
 
     // $ANTLR start "rule_attributes"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:741:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
     public final DRLParser.rule_attributes_return rule_attributes() throws RecognitionException {
         DRLParser.rule_attributes_return retval = new DRLParser.rule_attributes_return();
         retval.start = input.LT(1);
@@ -4198,10 +4200,10 @@
         RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         RewriteRuleSubtreeStream stream_attributes_key=new RewriteRuleSubtreeStream(adaptor,"rule attributes_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:4: ( attributes_key COLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:4: ( attributes_key COLON )?
             int alt35=2;
             int LA35_0 = input.LA(1);
 
@@ -4214,15 +4216,15 @@
             }
             switch (alt35) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:6: attributes_key COLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:6: attributes_key COLON
                     {
-                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1732);
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1740);
                     attributes_key77=attributes_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_attributes_key.add(attributes_key77.getTree());
-                    COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1734); if (state.failed) return retval; 
+                    COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1742); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COLON.add(COLON78);
 
                     if ( state.backtracking==0 ) {
@@ -4234,13 +4236,13 @@
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1744);
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1752);
             rule_attribute79=rule_attribute();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_rule_attribute.add(rule_attribute79.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:18: ( ( COMMA )? attr= rule_attribute )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:18: ( ( COMMA )? attr= rule_attribute )*
             loop37:
             do {
                 int alt37=2;
@@ -4253,9 +4255,9 @@
 
                 switch (alt37) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:20: ( COMMA )? attr= rule_attribute
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:20: ( COMMA )? attr= rule_attribute
             	    {
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:20: ( COMMA )?
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:20: ( COMMA )?
             	    int alt36=2;
             	    int LA36_0 = input.LA(1);
 
@@ -4264,9 +4266,9 @@
             	    }
             	    switch (alt36) {
             	        case 1 :
-            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:743:20: COMMA
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:20: COMMA
             	            {
-            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1748); if (state.failed) return retval; 
+            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1756); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA80);
 
 
@@ -4278,7 +4280,7 @@
             	    if ( state.backtracking==0 ) {
             	      	emit(COMMA80, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1755);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1763);
             	    attr=rule_attribute();
 
             	    state._fsp--;
@@ -4306,14 +4308,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 744:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+            // 746:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_RULE_ATTRIBUTES, "VT_RULE_ATTRIBUTES"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:27: ( attributes_key )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:27: ( attributes_key )?
                 if ( stream_attributes_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_attributes_key.nextTree());
 
@@ -4362,7 +4364,7 @@
     };
 
     // $ANTLR start "rule_attribute"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );
     public final DRLParser.rule_attribute_return rule_attribute() throws RecognitionException {
         DRLParser.rule_attribute_return retval = new DRLParser.rule_attribute_return();
         retval.start = input.LT(1);
@@ -4403,16 +4405,16 @@
 
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter )
             int alt38=15;
             alt38 = dfa38.predict(input);
             switch (alt38) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:4: salience
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: salience
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_salience_in_rule_attribute1794);
+                    pushFollow(FOLLOW_salience_in_rule_attribute1802);
                     salience81=salience();
 
                     state._fsp--;
@@ -4422,11 +4424,11 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:751:4: no_loop
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:4: no_loop
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1800);
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1808);
                     no_loop82=no_loop();
 
                     state._fsp--;
@@ -4436,11 +4438,11 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:4: agenda_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:4: agenda_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1805);
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1813);
                     agenda_group83=agenda_group();
 
                     state._fsp--;
@@ -4450,11 +4452,11 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:4: duration
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:4: duration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_duration_in_rule_attribute1812);
+                    pushFollow(FOLLOW_duration_in_rule_attribute1820);
                     duration84=duration();
 
                     state._fsp--;
@@ -4464,11 +4466,11 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:754:4: activation_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:4: activation_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1819);
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1827);
                     activation_group85=activation_group();
 
                     state._fsp--;
@@ -4478,11 +4480,11 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:755:4: auto_focus
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: auto_focus
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1825);
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1833);
                     auto_focus86=auto_focus();
 
                     state._fsp--;
@@ -4492,11 +4494,11 @@
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:4: date_effective
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:4: date_effective
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1831);
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1839);
                     date_effective87=date_effective();
 
                     state._fsp--;
@@ -4506,11 +4508,11 @@
                     }
                     break;
                 case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: date_expires
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: date_expires
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1837);
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1845);
                     date_expires88=date_expires();
 
                     state._fsp--;
@@ -4520,11 +4522,11 @@
                     }
                     break;
                 case 9 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:4: enabled
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:4: enabled
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1843);
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1851);
                     enabled89=enabled();
 
                     state._fsp--;
@@ -4534,11 +4536,11 @@
                     }
                     break;
                 case 10 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:759:4: ruleflow_group
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:4: ruleflow_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1849);
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1857);
                     ruleflow_group90=ruleflow_group();
 
                     state._fsp--;
@@ -4548,11 +4550,11 @@
                     }
                     break;
                 case 11 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:4: lock_on_active
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:4: lock_on_active
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1855);
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1863);
                     lock_on_active91=lock_on_active();
 
                     state._fsp--;
@@ -4562,11 +4564,11 @@
                     }
                     break;
                 case 12 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:4: dialect
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:4: dialect
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1860);
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1868);
                     dialect92=dialect();
 
                     state._fsp--;
@@ -4576,11 +4578,11 @@
                     }
                     break;
                 case 13 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:762:4: prior
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: prior
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_prior_in_rule_attribute1866);
+                    pushFollow(FOLLOW_prior_in_rule_attribute1874);
                     prior93=prior();
 
                     state._fsp--;
@@ -4590,11 +4592,11 @@
                     }
                     break;
                 case 14 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:4: entail_mode
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:765:4: entail_mode
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_entail_mode_in_rule_attribute1871);
+                    pushFollow(FOLLOW_entail_mode_in_rule_attribute1879);
                     entail_mode94=entail_mode();
 
                     state._fsp--;
@@ -4604,11 +4606,11 @@
                     }
                     break;
                 case 15 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:4: filter
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:766:4: filter
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_filter_in_rule_attribute1876);
+                    pushFollow(FOLLOW_filter_in_rule_attribute1884);
                     filter95=filter();
 
                     state._fsp--;
@@ -4656,7 +4658,7 @@
     };
 
     // $ANTLR start "date_effective"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774:1: date_effective : date_effective_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:776:1: date_effective : date_effective_key STRING ;
     public final DRLParser.date_effective_return date_effective() throws RecognitionException {
         DRLParser.date_effective_return retval = new DRLParser.date_effective_return();
         retval.start = input.LT(1);
@@ -4670,12 +4672,12 @@
         Object STRING97_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:2: ( date_effective_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:4: date_effective_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:2: ( date_effective_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:777:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1890);
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1898);
             date_effective_key96=date_effective_key();
 
             state._fsp--;
@@ -4684,7 +4686,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING97=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1895); if (state.failed) return retval;
+            STRING97=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1903); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING97_tree = (Object)adaptor.create(STRING97);
             adaptor.addChild(root_0, STRING97_tree);
@@ -4721,7 +4723,7 @@
     };
 
     // $ANTLR start "date_expires"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:1: date_expires : date_expires_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:781:1: date_expires : date_expires_key STRING ;
     public final DRLParser.date_expires_return date_expires() throws RecognitionException {
         DRLParser.date_expires_return retval = new DRLParser.date_expires_return();
         retval.start = input.LT(1);
@@ -4735,12 +4737,12 @@
         Object STRING99_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:2: ( date_expires_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:4: date_expires_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:2: ( date_expires_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1909);
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1917);
             date_expires_key98=date_expires_key();
 
             state._fsp--;
@@ -4749,7 +4751,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING99=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1914); if (state.failed) return retval;
+            STRING99=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1922); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING99_tree = (Object)adaptor.create(STRING99);
             adaptor.addChild(root_0, STRING99_tree);
@@ -4786,7 +4788,7 @@
     };
 
     // $ANTLR start "enabled"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:784:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
     public final DRLParser.enabled_return enabled() throws RecognitionException {
         DRLParser.enabled_return retval = new DRLParser.enabled_return();
         retval.start = input.LT(1);
@@ -4802,12 +4804,12 @@
         Object BOOL101_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:2: ( enabled_key ( BOOL | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:4: enabled_key ( BOOL | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:4: enabled_key ( BOOL | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1929);
+            pushFollow(FOLLOW_enabled_key_in_enabled1937);
             enabled_key100=enabled_key();
 
             state._fsp--;
@@ -4816,7 +4818,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:6: ( BOOL | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:6: ( BOOL | paren_chunk )
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -4835,9 +4837,9 @@
             }
             switch (alt39) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:8: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:788:8: BOOL
                     {
-                    BOOL101=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1942); if (state.failed) return retval;
+                    BOOL101=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1950); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL101_tree = (Object)adaptor.create(BOOL101);
                     adaptor.addChild(root_0, BOOL101_tree);
@@ -4849,9 +4851,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:787:8: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_enabled1953);
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1961);
                     paren_chunk102=paren_chunk();
 
                     state._fsp--;
@@ -4892,7 +4894,7 @@
     };
 
     // $ANTLR start "salience"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:1: salience : salience_key ( INT | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:1: salience : salience_key ( INT | paren_chunk ) ;
     public final DRLParser.salience_return salience() throws RecognitionException {
         DRLParser.salience_return retval = new DRLParser.salience_return();
         retval.start = input.LT(1);
@@ -4908,12 +4910,12 @@
         Object INT104_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:2: ( salience_key ( INT | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:792:4: salience_key ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:2: ( salience_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1973);
+            pushFollow(FOLLOW_salience_key_in_salience1981);
             salience_key103=salience_key();
 
             state._fsp--;
@@ -4922,7 +4924,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:3: ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:3: ( INT | paren_chunk )
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -4941,9 +4943,9 @@
             }
             switch (alt40) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:793:5: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:5: INT
                     {
-                    INT104=(Token)match(input,INT,FOLLOW_INT_in_salience1982); if (state.failed) return retval;
+                    INT104=(Token)match(input,INT,FOLLOW_INT_in_salience1990); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     INT104_tree = (Object)adaptor.create(INT104);
                     adaptor.addChild(root_0, INT104_tree);
@@ -4955,9 +4957,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:5: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:796:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1991);
+                    pushFollow(FOLLOW_paren_chunk_in_salience1999);
                     paren_chunk105=paren_chunk();
 
                     state._fsp--;
@@ -4998,7 +5000,7 @@
     };
 
     // $ANTLR start "no_loop"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:1: no_loop : no_loop_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:800:1: no_loop : no_loop_key ( BOOL )? ;
     public final DRLParser.no_loop_return no_loop() throws RecognitionException {
         DRLParser.no_loop_return retval = new DRLParser.no_loop_return();
         retval.start = input.LT(1);
@@ -5012,12 +5014,12 @@
         Object BOOL107_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:2: ( no_loop_key ( BOOL )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:4: no_loop_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:2: ( no_loop_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop2006);
+            pushFollow(FOLLOW_no_loop_key_in_no_loop2014);
             no_loop_key106=no_loop_key();
 
             state._fsp--;
@@ -5026,7 +5028,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:66: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:66: ( BOOL )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -5035,9 +5037,9 @@
             }
             switch (alt41) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:799:66: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:66: BOOL
                     {
-                    BOOL107=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop2011); if (state.failed) return retval;
+                    BOOL107=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop2019); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL107_tree = (Object)adaptor.create(BOOL107);
                     adaptor.addChild(root_0, BOOL107_tree);
@@ -5080,7 +5082,7 @@
     };
 
     // $ANTLR start "auto_focus"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:803:1: auto_focus : auto_focus_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:1: auto_focus : auto_focus_key ( BOOL )? ;
     public final DRLParser.auto_focus_return auto_focus() throws RecognitionException {
         DRLParser.auto_focus_return retval = new DRLParser.auto_focus_return();
         retval.start = input.LT(1);
@@ -5094,12 +5096,12 @@
         Object BOOL109_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:2: ( auto_focus_key ( BOOL )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:4: auto_focus_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:2: ( auto_focus_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus2026);
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus2034);
             auto_focus_key108=auto_focus_key();
 
             state._fsp--;
@@ -5108,7 +5110,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:69: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:69: ( BOOL )?
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -5117,9 +5119,9 @@
             }
             switch (alt42) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:69: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:806:69: BOOL
                     {
-                    BOOL109=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus2031); if (state.failed) return retval;
+                    BOOL109=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus2039); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL109_tree = (Object)adaptor.create(BOOL109);
                     adaptor.addChild(root_0, BOOL109_tree);
@@ -5162,7 +5164,7 @@
     };
 
     // $ANTLR start "activation_group"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:808:1: activation_group : activation_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:810:1: activation_group : activation_group_key STRING ;
     public final DRLParser.activation_group_return activation_group() throws RecognitionException {
         DRLParser.activation_group_return retval = new DRLParser.activation_group_return();
         retval.start = input.LT(1);
@@ -5176,12 +5178,12 @@
         Object STRING111_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:2: ( activation_group_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:4: activation_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:811:2: ( activation_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:811:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group2048);
+            pushFollow(FOLLOW_activation_group_key_in_activation_group2056);
             activation_group_key110=activation_group_key();
 
             state._fsp--;
@@ -5190,7 +5192,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING111=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group2053); if (state.failed) return retval;
+            STRING111=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group2061); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING111_tree = (Object)adaptor.create(STRING111);
             adaptor.addChild(root_0, STRING111_tree);
@@ -5227,7 +5229,7 @@
     };
 
     // $ANTLR start "ruleflow_group"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:813:1: ruleflow_group : ruleflow_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:1: ruleflow_group : ruleflow_group_key STRING ;
     public final DRLParser.ruleflow_group_return ruleflow_group() throws RecognitionException {
         DRLParser.ruleflow_group_return retval = new DRLParser.ruleflow_group_return();
         retval.start = input.LT(1);
@@ -5241,12 +5243,12 @@
         Object STRING113_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:814:2: ( ruleflow_group_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:814:4: ruleflow_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:2: ( ruleflow_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group2067);
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group2075);
             ruleflow_group_key112=ruleflow_group_key();
 
             state._fsp--;
@@ -5255,7 +5257,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING113=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group2072); if (state.failed) return retval;
+            STRING113=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group2080); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING113_tree = (Object)adaptor.create(STRING113);
             adaptor.addChild(root_0, STRING113_tree);
@@ -5292,7 +5294,7 @@
     };
 
     // $ANTLR start "agenda_group"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818:1: agenda_group : agenda_group_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:820:1: agenda_group : agenda_group_key STRING ;
     public final DRLParser.agenda_group_return agenda_group() throws RecognitionException {
         DRLParser.agenda_group_return retval = new DRLParser.agenda_group_return();
         retval.start = input.LT(1);
@@ -5306,12 +5308,12 @@
         Object STRING115_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:2: ( agenda_group_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:4: agenda_group_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:2: ( agenda_group_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:821:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group2086);
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group2094);
             agenda_group_key114=agenda_group_key();
 
             state._fsp--;
@@ -5320,7 +5322,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING115=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group2091); if (state.failed) return retval;
+            STRING115=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group2099); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING115_tree = (Object)adaptor.create(STRING115);
             adaptor.addChild(root_0, STRING115_tree);
@@ -5357,7 +5359,7 @@
     };
 
     // $ANTLR start "duration"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:1: duration : duration_key ( INT | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:1: duration : duration_key ( INT | paren_chunk ) ;
     public final DRLParser.duration_return duration() throws RecognitionException {
         DRLParser.duration_return retval = new DRLParser.duration_return();
         retval.start = input.LT(1);
@@ -5373,12 +5375,12 @@
         Object INT117_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:2: ( duration_key ( INT | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:824:4: duration_key ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:2: ( duration_key ( INT | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:4: duration_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration2105);
+            pushFollow(FOLLOW_duration_key_in_duration2113);
             duration_key116=duration_key();
 
             state._fsp--;
@@ -5387,7 +5389,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:6: ( INT | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:6: ( INT | paren_chunk )
             int alt43=2;
             int LA43_0 = input.LA(1);
 
@@ -5406,9 +5408,9 @@
             }
             switch (alt43) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:8: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:827:8: INT
                     {
-                    INT117=(Token)match(input,INT,FOLLOW_INT_in_duration2118); if (state.failed) return retval;
+                    INT117=(Token)match(input,INT,FOLLOW_INT_in_duration2126); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     INT117_tree = (Object)adaptor.create(INT117);
                     adaptor.addChild(root_0, INT117_tree);
@@ -5420,9 +5422,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:8: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:828:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_duration2129);
+                    pushFollow(FOLLOW_paren_chunk_in_duration2137);
                     paren_chunk118=paren_chunk();
 
                     state._fsp--;
@@ -5463,7 +5465,7 @@
     };
 
     // $ANTLR start "dialect"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:1: dialect : dialect_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:1: dialect : dialect_key STRING ;
     public final DRLParser.dialect_return dialect() throws RecognitionException {
         DRLParser.dialect_return retval = new DRLParser.dialect_return();
         retval.start = input.LT(1);
@@ -5477,12 +5479,12 @@
         Object STRING120_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:2: ( dialect_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:831:4: dialect_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:2: ( dialect_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect2149);
+            pushFollow(FOLLOW_dialect_key_in_dialect2157);
             dialect_key119=dialect_key();
 
             state._fsp--;
@@ -5491,7 +5493,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING120=(Token)match(input,STRING,FOLLOW_STRING_in_dialect2154); if (state.failed) return retval;
+            STRING120=(Token)match(input,STRING,FOLLOW_STRING_in_dialect2162); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING120_tree = (Object)adaptor.create(STRING120);
             adaptor.addChild(root_0, STRING120_tree);
@@ -5528,7 +5530,7 @@
     };
 
     // $ANTLR start "lock_on_active"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:835:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:1: lock_on_active : lock_on_active_key ( BOOL )? ;
     public final DRLParser.lock_on_active_return lock_on_active() throws RecognitionException {
         DRLParser.lock_on_active_return retval = new DRLParser.lock_on_active_return();
         retval.start = input.LT(1);
@@ -5542,12 +5544,12 @@
         Object BOOL122_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:2: ( lock_on_active_key ( BOOL )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:4: lock_on_active_key ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:2: ( lock_on_active_key ( BOOL )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2172);
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2180);
             lock_on_active_key121=lock_on_active_key();
 
             state._fsp--;
@@ -5556,7 +5558,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:73: ( BOOL )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:73: ( BOOL )?
             int alt44=2;
             int LA44_0 = input.LA(1);
 
@@ -5565,9 +5567,9 @@
             }
             switch (alt44) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:73: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:838:73: BOOL
                     {
-                    BOOL122=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2177); if (state.failed) return retval;
+                    BOOL122=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2185); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     BOOL122_tree = (Object)adaptor.create(BOOL122);
                     adaptor.addChild(root_0, BOOL122_tree);
@@ -5610,7 +5612,7 @@
     };
 
     // $ANTLR start "prior"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:1: prior : prior_key paren_chunk ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:842:1: prior : prior_key paren_chunk ;
     public final DRLParser.prior_return prior() throws RecognitionException {
         DRLParser.prior_return retval = new DRLParser.prior_return();
         retval.start = input.LT(1);
@@ -5624,12 +5626,12 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:3: ( prior_key paren_chunk )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:841:5: prior_key paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:843:3: ( prior_key paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:843:5: prior_key paren_chunk
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_prior_key_in_prior2194);
+            pushFollow(FOLLOW_prior_key_in_prior2202);
             prior_key123=prior_key();
 
             state._fsp--;
@@ -5638,7 +5640,7 @@
             if ( state.backtracking==0 ) {
                emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
             }
-            pushFollow(FOLLOW_paren_chunk_in_prior2199);
+            pushFollow(FOLLOW_paren_chunk_in_prior2207);
             paren_chunk124=paren_chunk();
 
             state._fsp--;
@@ -5673,7 +5675,7 @@
     };
 
     // $ANTLR start "entail_mode"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:1: entail_mode : entail_mode_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:1: entail_mode : entail_mode_key STRING ;
     public final DRLParser.entail_mode_return entail_mode() throws RecognitionException {
         DRLParser.entail_mode_return retval = new DRLParser.entail_mode_return();
         retval.start = input.LT(1);
@@ -5687,12 +5689,12 @@
         Object STRING126_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:3: ( entail_mode_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:845:5: entail_mode_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:3: ( entail_mode_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:5: entail_mode_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_entail_mode_key_in_entail_mode2216);
+            pushFollow(FOLLOW_entail_mode_key_in_entail_mode2224);
             entail_mode_key125=entail_mode_key();
 
             state._fsp--;
@@ -5701,7 +5703,7 @@
             if ( state.backtracking==0 ) {
                emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
             }
-            STRING126=(Token)match(input,STRING,FOLLOW_STRING_in_entail_mode2221); if (state.failed) return retval;
+            STRING126=(Token)match(input,STRING,FOLLOW_STRING_in_entail_mode2229); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING126_tree = (Object)adaptor.create(STRING126);
             adaptor.addChild(root_0, STRING126_tree);
@@ -5738,7 +5740,7 @@
     };
 
     // $ANTLR start "filter"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:849:1: filter : filter_key STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:1: filter : filter_key STRING ;
     public final DRLParser.filter_return filter() throws RecognitionException {
         DRLParser.filter_return retval = new DRLParser.filter_return();
         retval.start = input.LT(1);
@@ -5752,12 +5754,12 @@
         Object STRING128_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:3: ( filter_key STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:5: filter_key STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:852:3: ( filter_key STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:852:5: filter_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_filter_key_in_filter2243);
+            pushFollow(FOLLOW_filter_key_in_filter2251);
             filter_key127=filter_key();
 
             state._fsp--;
@@ -5766,7 +5768,7 @@
             if ( state.backtracking==0 ) {
                emit(Location.LOCATION_RULE_HEADER_KEYWORD);  
             }
-            STRING128=(Token)match(input,STRING,FOLLOW_STRING_in_filter2248); if (state.failed) return retval;
+            STRING128=(Token)match(input,STRING,FOLLOW_STRING_in_filter2256); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             STRING128_tree = (Object)adaptor.create(STRING128);
             adaptor.addChild(root_0, STRING128_tree);
@@ -5803,7 +5805,7 @@
     };
 
     // $ANTLR start "normal_lhs_block"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
     public final DRLParser.normal_lhs_block_return normal_lhs_block() throws RecognitionException {
         DRLParser.normal_lhs_block_return retval = new DRLParser.normal_lhs_block_return();
         retval.start = input.LT(1);
@@ -5815,10 +5817,10 @@
 
         RewriteRuleSubtreeStream stream_lhs=new RewriteRuleSubtreeStream(adaptor,"rule lhs");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: ( lhs )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:4: ( lhs )*
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: ( lhs )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:4: ( lhs )*
             loop45:
             do {
                 int alt45=2;
@@ -5840,9 +5842,9 @@
 
                 switch (alt45) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: lhs
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:861:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2268);
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2276);
             	    lhs129=lhs();
 
             	    state._fsp--;
@@ -5870,14 +5872,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 860:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            // 862:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:5: ^( VT_AND_IMPLICIT ( lhs )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_IMPLICIT, "VT_AND_IMPLICIT"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860:23: ( lhs )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs.nextTree());
 
@@ -5918,7 +5920,7 @@
     };
 
     // $ANTLR start "lhs"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:1: lhs : lhs_or ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:1: lhs : lhs_or ;
     public final DRLParser.lhs_return lhs() throws RecognitionException {
         DRLParser.lhs_return retval = new DRLParser.lhs_return();
         retval.start = input.LT(1);
@@ -5930,12 +5932,12 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:5: ( lhs_or )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:7: lhs_or
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:5: ( lhs_or )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:865:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2289);
+            pushFollow(FOLLOW_lhs_or_in_lhs2297);
             lhs_or130=lhs_or();
 
             state._fsp--;
@@ -5970,7 +5972,7 @@
     };
 
     // $ANTLR start "lhs_or"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:1: lhs_or : ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:1: lhs_or : ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) (!
  ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) );
     public final DRLParser.lhs_or_return lhs_or() throws RecognitionException {
         DRLParser.lhs_or_return retval = new DRLParser.lhs_or_return();
         retval.start = input.LT(1);
@@ -5984,12 +5986,16 @@
         Token RIGHT_PAREN139=null;
         Token LEFT_PAREN140=null;
         Token RIGHT_PAREN144=null;
+        Token LEFT_PAREN145=null;
+        Token RIGHT_PAREN149=null;
         DRLParser.or_key_return or = null;
 
         DRLParser.equiv_key_return equiv = null;
 
         DRLParser.xor_key_return xor = null;
 
+        DRLParser.implies_key_return implies = null;
+
         DRLParser.or_key_return value = null;
 
         DRLParser.constr_parameters_return constr_parameters132 = null;
@@ -6008,17 +6014,23 @@
 
         DRLParser.lhs_and_return lhs_and143 = null;
 
-        DRLParser.lhs_and_return lhs_and145 = null;
+        DRLParser.constr_parameters_return constr_parameters146 = null;
 
-        DRLParser.square_chunk_return square_chunk146 = null;
-
         DRLParser.lhs_and_return lhs_and147 = null;
 
-        DRLParser.hedge_return hedge148 = null;
+        DRLParser.lhs_and_return lhs_and148 = null;
 
-        DRLParser.lhs_or_return lhs_or149 = null;
+        DRLParser.lhs_and_return lhs_and150 = null;
 
+        DRLParser.square_chunk_return square_chunk151 = null;
 
+        DRLParser.lhs_and_return lhs_and152 = null;
+
+        DRLParser.hedge_return hedge153 = null;
+
+        DRLParser.lhs_or_return lhs_or154 = null;
+
+
         Object pipe_tree=null;
         Object LEFT_PAREN131_tree=null;
         Object RIGHT_PAREN134_tree=null;
@@ -6026,6 +6038,8 @@
         Object RIGHT_PAREN139_tree=null;
         Object LEFT_PAREN140_tree=null;
         Object RIGHT_PAREN144_tree=null;
+        Object LEFT_PAREN145_tree=null;
+        Object RIGHT_PAREN149_tree=null;
         RewriteRuleTokenStream stream_DOUBLE_PIPE=new RewriteRuleTokenStream(adaptor,"token DOUBLE_PIPE");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
@@ -6033,6 +6047,7 @@
         RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
         RewriteRuleSubtreeStream stream_hedge=new RewriteRuleSubtreeStream(adaptor,"rule hedge");
         RewriteRuleSubtreeStream stream_or_key=new RewriteRuleSubtreeStream(adaptor,"rule or_key");
+        RewriteRuleSubtreeStream stream_implies_key=new RewriteRuleSubtreeStream(adaptor,"rule implies_key");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         RewriteRuleSubtreeStream stream_equiv_key=new RewriteRuleSubtreeStream(adaptor,"rule equiv_key");
         RewriteRuleSubtreeStream stream_lhs_and=new RewriteRuleSubtreeStream(adaptor,"rule lhs_and");
@@ -6041,46 +6056,49 @@
         	Token orToken = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:3: ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) )
-            int alt53=5;
-            int LA53_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:3: ( ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN ) | ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( !
 ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )* | hedge lhs_or -> ^( hedge lhs_or ) )
+            int alt54=6;
+            int LA54_0 = input.LA(1);
 
-            if ( (LA53_0==LEFT_PAREN) ) {
-                int LA53_1 = input.LA(2);
+            if ( (LA54_0==LEFT_PAREN) ) {
+                int LA54_1 = input.LA(2);
 
                 if ( (synpred1_DRL()) ) {
-                    alt53=1;
+                    alt54=1;
                 }
                 else if ( (synpred2_DRL()) ) {
-                    alt53=2;
+                    alt54=2;
                 }
                 else if ( (synpred3_DRL()) ) {
-                    alt53=3;
+                    alt54=3;
                 }
+                else if ( (synpred4_DRL()) ) {
+                    alt54=4;
+                }
                 else if ( (true) ) {
-                    alt53=4;
+                    alt54=5;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 53, 1, input);
+                        new NoViableAltException("", 54, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA53_0==ID) ) {
-                int LA53_2 = input.LA(2);
+            else if ( (LA54_0==ID) ) {
+                int LA54_2 = input.LA(2);
 
                 if ( (!((((validateIdentifierKey(DroolsSoftKeywords.VERY)))))) ) {
-                    alt53=4;
+                    alt54=5;
                 }
                 else if ( (((validateIdentifierKey(DroolsSoftKeywords.VERY)))) ) {
-                    alt53=5;
+                    alt54=6;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 53, 2, input);
+                        new NoViableAltException("", 54, 2, input);
 
                     throw nvae;
                 }
@@ -6088,27 +6106,27 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 53, 0, input);
+                    new NoViableAltException("", 54, 0, input);
 
                 throw nvae;
             }
-            switch (alt53) {
+            switch (alt54) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:5: ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:5: ( LEFT_PAREN or_key ( constr_parameters )? )=> LEFT_PAREN or= or_key ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN131=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2316); if (state.failed) return retval; 
+                    LEFT_PAREN131=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2324); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN131);
 
                     if ( state.backtracking==0 ) {
                       	emit(LEFT_PAREN131, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_key_in_lhs_or2326);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2334);
                     or=or_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_or_key.add(or.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:4: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: ( constr_parameters )?
                     int alt46=2;
                     int LA46_0 = input.LA(1);
 
@@ -6117,9 +6135,9 @@
                     }
                     switch (alt46) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:4: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2335);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2343);
                             constr_parameters132=constr_parameters();
 
                             state._fsp--;
@@ -6134,7 +6152,7 @@
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: ( lhs_and )+
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:4: ( lhs_and )+
                     int cnt47=0;
                     loop47:
                     do {
@@ -6148,9 +6166,9 @@
 
                         switch (alt47) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:4: lhs_and
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2344);
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2352);
                     	    lhs_and133=lhs_and();
 
                     	    state._fsp--;
@@ -6170,7 +6188,7 @@
                         cnt47++;
                     } while (true);
 
-                    RIGHT_PAREN134=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2350); if (state.failed) return retval; 
+                    RIGHT_PAREN134=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2358); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN134);
 
                     if ( state.backtracking==0 ) {
@@ -6179,7 +6197,7 @@
 
 
                     // AST REWRITE
-                    // elements: constr_parameters, RIGHT_PAREN, lhs_and
+                    // elements: RIGHT_PAREN, lhs_and, constr_parameters
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6189,14 +6207,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 876:3: -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
+                    // 878:3: -> ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:6: ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:6: ^( VT_OR_PREFIX[$or.start] ( constr_parameters )? ( lhs_and )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_PREFIX, (or!=null?((Token)or.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:32: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:32: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6221,21 +6239,21 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )=> LEFT_PAREN equiv= equiv_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
                     {
-                    LEFT_PAREN135=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2394); if (state.failed) return retval; 
+                    LEFT_PAREN135=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2402); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN135);
 
                     if ( state.backtracking==0 ) {
                        emit(LEFT_PAREN135, DroolsEditorType.SYMBOL); 
                     }
-                    pushFollow(FOLLOW_equiv_key_in_lhs_or2407);
+                    pushFollow(FOLLOW_equiv_key_in_lhs_or2415);
                     equiv=equiv_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_equiv_key.add(equiv.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:7: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:7: ( constr_parameters )?
                     int alt48=2;
                     int LA48_0 = input.LA(1);
 
@@ -6244,9 +6262,9 @@
                     }
                     switch (alt48) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:7: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:7: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2421);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2429);
                             constr_parameters136=constr_parameters();
 
                             state._fsp--;
@@ -6261,19 +6279,19 @@
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
                     }
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2434);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2442);
                     lhs_and137=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and137.getTree());
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2442);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2450);
                     lhs_and138=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and138.getTree());
-                    RIGHT_PAREN139=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2454); if (state.failed) return retval; 
+                    RIGHT_PAREN139=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2462); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN139);
 
                     if ( state.backtracking==0 ) {
@@ -6282,7 +6300,7 @@
 
 
                     // AST REWRITE
-                    // elements: RIGHT_PAREN, constr_parameters, lhs_and, lhs_and
+                    // elements: constr_parameters, RIGHT_PAREN, lhs_and, lhs_and
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6292,14 +6310,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 887:5: -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                    // 889:5: -> ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:887:8: ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:8: ^( VT_EQUIV[$equiv.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EQUIV, (equiv!=null?((Token)equiv.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:887:33: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:33: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6318,21 +6336,21 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:4: ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:4: ( LEFT_PAREN xor_key ( constr_parameters )? )=> LEFT_PAREN xor= xor_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
                     {
-                    LEFT_PAREN140=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2499); if (state.failed) return retval; 
+                    LEFT_PAREN140=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2507); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN140);
 
                     if ( state.backtracking==0 ) {
                        emit(LEFT_PAREN140, DroolsEditorType.SYMBOL); 
                     }
-                    pushFollow(FOLLOW_xor_key_in_lhs_or2512);
+                    pushFollow(FOLLOW_xor_key_in_lhs_or2520);
                     xor=xor_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_xor_key.add(xor.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:892:7: ( constr_parameters )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:894:7: ( constr_parameters )?
                     int alt49=2;
                     int LA49_0 = input.LA(1);
 
@@ -6341,9 +6359,9 @@
                     }
                     switch (alt49) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:892:7: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:894:7: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2526);
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2534);
                             constr_parameters141=constr_parameters();
 
                             state._fsp--;
@@ -6358,19 +6376,19 @@
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
                     }
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2539);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2547);
                     lhs_and142=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and142.getTree());
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2547);
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2555);
                     lhs_and143=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and143.getTree());
-                    RIGHT_PAREN144=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2559); if (state.failed) return retval; 
+                    RIGHT_PAREN144=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2567); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN144);
 
                     if ( state.backtracking==0 ) {
@@ -6379,7 +6397,7 @@
 
 
                     // AST REWRITE
-                    // elements: lhs_and, constr_parameters, lhs_and, RIGHT_PAREN
+                    // elements: lhs_and, lhs_and, constr_parameters, RIGHT_PAREN
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6389,14 +6407,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 897:5: -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                    // 899:5: -> ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:8: ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:8: ^( VT_XOR[$xor.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_XOR, (xor!=null?((Token)xor.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:897:29: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:29: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6415,17 +6433,114 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:4: ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:5: ( LEFT_PAREN implies_key ( constr_parameters )? )=> LEFT_PAREN implies= implies_key ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:4: ( lhs_and -> lhs_and )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:5: lhs_and
+                    LEFT_PAREN145=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2616); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN145);
+
+                    if ( state.backtracking==0 ) {
+                       emit(LEFT_PAREN145, DroolsEditorType.SYMBOL); 
+                    }
+                    pushFollow(FOLLOW_implies_key_in_lhs_or2629);
+                    implies=implies_key();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_implies_key.add(implies.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:7: ( constr_parameters )?
+                    int alt50=2;
+                    int LA50_0 = input.LA(1);
+
+                    if ( (LA50_0==AT) ) {
+                        alt50=1;
+                    }
+                    switch (alt50) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:7: constr_parameters
+                            {
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_or2643);
+                            constr_parameters146=constr_parameters();
+
+                            state._fsp--;
+                            if (state.failed) return retval;
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters146.getTree());
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  
+                    }
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2656);
+                    lhs_and147=lhs_and();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and147.getTree());
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2664);
+                    lhs_and148=lhs_and();
+
+                    state._fsp--;
+                    if (state.failed) return retval;
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and148.getTree());
+                    RIGHT_PAREN149=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2676); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN149);
+
+                    if ( state.backtracking==0 ) {
+                       emit(RIGHT_PAREN149, DroolsEditorType.SYMBOL);  
+                    }
+
+
+                    // AST REWRITE
+                    // elements: lhs_and, RIGHT_PAREN, lhs_and, constr_parameters
+                    // token labels: 
+                    // rule labels: retval
+                    // token list labels: 
+                    // rule list labels: 
+                    if ( state.backtracking==0 ) {
+                    retval.tree = root_0;
+                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+                    root_0 = (Object)adaptor.nil();
+                    // 909:5: -> ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2592);
-                    lhs_and145=lhs_and();
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:8: ^( VT_IMPLIES[$implies.start] ( constr_parameters )? lhs_and lhs_and RIGHT_PAREN )
+                        {
+                        Object root_1 = (Object)adaptor.nil();
+                        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_IMPLIES, (implies!=null?((Token)implies.start):null)), root_1);
 
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:909:37: ( constr_parameters )?
+                        if ( stream_constr_parameters.hasNext() ) {
+                            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
+
+                        }
+                        stream_constr_parameters.reset();
+                        adaptor.addChild(root_1, stream_lhs_and.nextTree());
+                        adaptor.addChild(root_1, stream_lhs_and.nextTree());
+                        adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
+
+                        adaptor.addChild(root_0, root_1);
+                        }
+
+                    }
+
+                    retval.tree = root_0;}
+                    }
+                    break;
+                case 5 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:4: ( lhs_and -> lhs_and ) ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
+                    {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:4: ( lhs_and -> lhs_and )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:5: lhs_and
+                    {
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2711);
+                    lhs_and150=lhs_and();
+
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and145.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and150.getTree());
 
 
                     // AST REWRITE
@@ -6439,7 +6554,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 900:13: -> lhs_and
+                    // 912:13: -> lhs_and
                     {
                         adaptor.addChild(root_0, stream_lhs_and.nextTree());
 
@@ -6448,80 +6563,80 @@
                     retval.tree = root_0;}
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:3: ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
-                    loop52:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:3: ( ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and ) )*
+                    loop53:
                     do {
-                        int alt52=2;
-                        int LA52_0 = input.LA(1);
+                        int alt53=2;
+                        int LA53_0 = input.LA(1);
 
-                        if ( (LA52_0==ID) ) {
-                            int LA52_1 = input.LA(2);
+                        if ( (LA53_0==ID) ) {
+                            int LA53_1 = input.LA(2);
 
-                            if ( ((synpred4_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
-                                alt52=1;
+                            if ( ((synpred5_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
+                                alt53=1;
                             }
 
 
                         }
-                        else if ( (LA52_0==DOUBLE_PIPE) ) {
-                            int LA52_3 = input.LA(2);
+                        else if ( (LA53_0==DOUBLE_PIPE) ) {
+                            int LA53_3 = input.LA(2);
 
-                            if ( (synpred4_DRL()) ) {
-                                alt52=1;
+                            if ( (synpred5_DRL()) ) {
+                                alt53=1;
                             }
 
 
                         }
 
 
-                        switch (alt52) {
+                        switch (alt53) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )=> (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE ) lhs_and
                     	    {
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:49: (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE )
-                    	    int alt51=2;
-                    	    int LA51_0 = input.LA(1);
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:49: (value= or_key ( square_chunk )? | pipe= DOUBLE_PIPE )
+                    	    int alt52=2;
+                    	    int LA52_0 = input.LA(1);
 
-                    	    if ( (LA51_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-                    	        alt51=1;
+                    	    if ( (LA52_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                    	        alt52=1;
                     	    }
-                    	    else if ( (LA51_0==DOUBLE_PIPE) ) {
-                    	        alt51=2;
+                    	    else if ( (LA52_0==DOUBLE_PIPE) ) {
+                    	        alt52=2;
                     	    }
                     	    else {
                     	        if (state.backtracking>0) {state.failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("", 51, 0, input);
+                    	            new NoViableAltException("", 52, 0, input);
 
                     	        throw nvae;
                     	    }
-                    	    switch (alt51) {
+                    	    switch (alt52) {
                     	        case 1 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:50: value= or_key ( square_chunk )?
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:50: value= or_key ( square_chunk )?
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2619);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2738);
                     	            value=or_key();
 
                     	            state._fsp--;
                     	            if (state.failed) return retval;
                     	            if ( state.backtracking==0 ) stream_or_key.add(value.getTree());
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:63: ( square_chunk )?
-                    	            int alt50=2;
-                    	            int LA50_0 = input.LA(1);
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:63: ( square_chunk )?
+                    	            int alt51=2;
+                    	            int LA51_0 = input.LA(1);
 
-                    	            if ( (LA50_0==LEFT_SQUARE) ) {
-                    	                alt50=1;
+                    	            if ( (LA51_0==LEFT_SQUARE) ) {
+                    	                alt51=1;
                     	            }
-                    	            switch (alt50) {
+                    	            switch (alt51) {
                     	                case 1 :
-                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:63: square_chunk
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:63: square_chunk
                     	                    {
-                    	                    pushFollow(FOLLOW_square_chunk_in_lhs_or2621);
-                    	                    square_chunk146=square_chunk();
+                    	                    pushFollow(FOLLOW_square_chunk_in_lhs_or2740);
+                    	                    square_chunk151=square_chunk();
 
                     	                    state._fsp--;
                     	                    if (state.failed) return retval;
-                    	                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk146.getTree());
+                    	                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk151.getTree());
 
                     	                    }
                     	                    break;
@@ -6535,9 +6650,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:902:6: pipe= DOUBLE_PIPE
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:914:6: pipe= DOUBLE_PIPE
                     	            {
-                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2634); if (state.failed) return retval; 
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2753); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
                     	            if ( state.backtracking==0 ) {
@@ -6552,16 +6667,16 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2645);
-                    	    lhs_and147=lhs_and();
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2764);
+                    	    lhs_and152=lhs_and();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and147.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and152.getTree());
 
 
                     	    // AST REWRITE
-                    	    // elements: constr_parameters, lhs_and, lhs_or
+                    	    // elements: lhs_and, lhs_or, constr_parameters
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -6571,14 +6686,14 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 905:3: -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
+                    	    // 917:3: -> ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
                     	    {
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:6: ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:6: ^( VT_OR_INFIX[orToken] ( constr_parameters )? $lhs_or lhs_and )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_INFIX, orToken), root_1);
 
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:905:30: ( constr_parameters )?
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:30: ( constr_parameters )?
                     	        if ( stream_constr_parameters.hasNext() ) {
                     	        }
                     	        stream_constr_parameters.reset();
@@ -6595,32 +6710,32 @@
                     	    break;
 
                     	default :
-                    	    break loop52;
+                    	    break loop53;
                         }
                     } while (true);
 
 
                     }
                     break;
-                case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:5: hedge lhs_or
+                case 6 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:919:5: hedge lhs_or
                     {
-                    pushFollow(FOLLOW_hedge_in_lhs_or2675);
-                    hedge148=hedge();
+                    pushFollow(FOLLOW_hedge_in_lhs_or2794);
+                    hedge153=hedge();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_hedge.add(hedge148.getTree());
-                    pushFollow(FOLLOW_lhs_or_in_lhs_or2677);
-                    lhs_or149=lhs_or();
+                    if ( state.backtracking==0 ) stream_hedge.add(hedge153.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_or2796);
+                    lhs_or154=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or149.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or154.getTree());
 
 
                     // AST REWRITE
-                    // elements: lhs_or, hedge
+                    // elements: hedge, lhs_or
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6630,9 +6745,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 908:5: -> ^( hedge lhs_or )
+                    // 920:5: -> ^( hedge lhs_or )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908:8: ^( hedge lhs_or )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:8: ^( hedge lhs_or )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_hedge.nextNode(), root_1);
@@ -6675,7 +6790,7 @@
     };
 
     // $ANTLR start "hedge"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:1: hedge : value= very_key -> VT_HEDGE[type] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:925:1: hedge : value= very_key -> VT_HEDGE[type] ;
     public final DRLParser.hedge_return hedge() throws RecognitionException {
         DRLParser.hedge_return retval = new DRLParser.hedge_return();
         retval.start = input.LT(1);
@@ -6690,10 +6805,10 @@
           Token type = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:3: (value= very_key -> VT_HEDGE[type] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:917:5: value= very_key
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:929:3: (value= very_key -> VT_HEDGE[type] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:929:5: value= very_key
             {
-            pushFollow(FOLLOW_very_key_in_hedge2719);
+            pushFollow(FOLLOW_very_key_in_hedge2838);
             value=very_key();
 
             state._fsp--;
@@ -6715,7 +6830,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 917:44: -> VT_HEDGE[type]
+            // 929:44: -> VT_HEDGE[type]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_HEDGE, type));
 
@@ -6750,7 +6865,7 @@
     };
 
     // $ANTLR start "lhs_and"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:921:1: lhs_and : ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )* );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:933:1: lhs_and : ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )* );
     public final DRLParser.lhs_and_return lhs_and() throws RecognitionException {
         DRLParser.lhs_and_return retval = new DRLParser.lhs_and_return();
         retval.start = input.LT(1);
@@ -6758,30 +6873,30 @@
         Object root_0 = null;
 
         Token amper=null;
-        Token LEFT_PAREN150=null;
-        Token RIGHT_PAREN154=null;
+        Token LEFT_PAREN155=null;
+        Token RIGHT_PAREN159=null;
         DRLParser.and_key_return and = null;
 
         DRLParser.and_key_return value = null;
 
-        DRLParser.square_chunk_return square_chunk151 = null;
+        DRLParser.square_chunk_return square_chunk156 = null;
 
-        DRLParser.constr_parameters_return constr_parameters152 = null;
+        DRLParser.constr_parameters_return constr_parameters157 = null;
 
-        DRLParser.lhs_unary_return lhs_unary153 = null;
+        DRLParser.lhs_unary_return lhs_unary158 = null;
 
-        DRLParser.lhs_unary_return lhs_unary155 = null;
+        DRLParser.lhs_unary_return lhs_unary160 = null;
 
-        DRLParser.constr_parameters_return constr_parameters156 = null;
+        DRLParser.constr_parameters_return constr_parameters161 = null;
 
-        DRLParser.square_chunk_return square_chunk157 = null;
+        DRLParser.square_chunk_return square_chunk162 = null;
 
-        DRLParser.lhs_unary_return lhs_unary158 = null;
+        DRLParser.lhs_unary_return lhs_unary163 = null;
 
 
         Object amper_tree=null;
-        Object LEFT_PAREN150_tree=null;
-        Object RIGHT_PAREN154_tree=null;
+        Object LEFT_PAREN155_tree=null;
+        Object RIGHT_PAREN159_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleTokenStream stream_DOUBLE_AMPER=new RewriteRuleTokenStream(adaptor,"token DOUBLE_AMPER");
@@ -6793,93 +6908,93 @@
         	Token andToken = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:3: ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )* )
-            int alt61=2;
-            int LA61_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:3: ( ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )* )
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            if ( (LA61_0==LEFT_PAREN) ) {
-                int LA61_1 = input.LA(2);
+            if ( (LA62_0==LEFT_PAREN) ) {
+                int LA62_1 = input.LA(2);
 
-                if ( (synpred5_DRL()) ) {
-                    alt61=1;
+                if ( (synpred6_DRL()) ) {
+                    alt62=1;
                 }
                 else if ( (true) ) {
-                    alt61=2;
+                    alt62=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 61, 1, input);
+                        new NoViableAltException("", 62, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA61_0==ID) ) {
-                alt61=2;
+            else if ( (LA62_0==ID) ) {
+                alt62=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 61, 0, input);
+                    new NoViableAltException("", 62, 0, input);
 
                 throw nvae;
             }
-            switch (alt61) {
+            switch (alt62) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:5: ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:5: ( LEFT_PAREN and_key ( square_chunk )? )=> LEFT_PAREN and= and_key ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN150=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2755); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN150);
+                    LEFT_PAREN155=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2874); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN155);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN150, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN155, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_and_key_in_lhs_and2765);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2884);
                     and=and_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_and_key.add(and.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:4: ( square_chunk )?
-                    int alt54=2;
-                    int LA54_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:4: ( square_chunk )?
+                    int alt55=2;
+                    int LA55_0 = input.LA(1);
 
-                    if ( (LA54_0==LEFT_SQUARE) ) {
-                        alt54=1;
+                    if ( (LA55_0==LEFT_SQUARE) ) {
+                        alt55=1;
                     }
-                    switch (alt54) {
+                    switch (alt55) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:4: square_chunk
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:4: square_chunk
                             {
-                            pushFollow(FOLLOW_square_chunk_in_lhs_and2770);
-                            square_chunk151=square_chunk();
+                            pushFollow(FOLLOW_square_chunk_in_lhs_and2889);
+                            square_chunk156=square_chunk();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk151.getTree());
+                            if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk156.getTree());
 
                             }
                             break;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:928:4: ( constr_parameters )?
-                    int alt55=2;
-                    int LA55_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:4: ( constr_parameters )?
+                    int alt56=2;
+                    int LA56_0 = input.LA(1);
 
-                    if ( (LA55_0==AT) ) {
-                        alt55=1;
+                    if ( (LA56_0==AT) ) {
+                        alt56=1;
                     }
-                    switch (alt55) {
+                    switch (alt56) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:928:4: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:4: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_lhs_and2776);
-                            constr_parameters152=constr_parameters();
+                            pushFollow(FOLLOW_constr_parameters_in_lhs_and2895);
+                            constr_parameters157=constr_parameters();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters152.getTree());
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters157.getTree());
 
                             }
                             break;
@@ -6889,52 +7004,52 @@
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:930:4: ( lhs_unary )+
-                    int cnt56=0;
-                    loop56:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:4: ( lhs_unary )+
+                    int cnt57=0;
+                    loop57:
                     do {
-                        int alt56=2;
-                        int LA56_0 = input.LA(1);
+                        int alt57=2;
+                        int LA57_0 = input.LA(1);
 
-                        if ( (LA56_0==ID||LA56_0==LEFT_PAREN) ) {
-                            alt56=1;
+                        if ( (LA57_0==ID||LA57_0==LEFT_PAREN) ) {
+                            alt57=1;
                         }
 
 
-                        switch (alt56) {
+                        switch (alt57) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:930:4: lhs_unary
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2785);
-                    	    lhs_unary153=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2904);
+                    	    lhs_unary158=lhs_unary();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary153.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary158.getTree());
 
                     	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt56 >= 1 ) break loop56;
+                    	    if ( cnt57 >= 1 ) break loop57;
                     	    if (state.backtracking>0) {state.failed=true; return retval;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(56, input);
+                                    new EarlyExitException(57, input);
                                 throw eee;
                         }
-                        cnt56++;
+                        cnt57++;
                     } while (true);
 
-                    RIGHT_PAREN154=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2791); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN154);
+                    RIGHT_PAREN159=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2910); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN159);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN154, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN159, DroolsEditorType.SYMBOL);	
                     }
 
 
                     // AST REWRITE
-                    // elements: square_chunk, constr_parameters, RIGHT_PAREN, lhs_unary
+                    // elements: square_chunk, lhs_unary, constr_parameters, RIGHT_PAREN
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6944,20 +7059,20 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 932:3: -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
+                    // 944:3: -> ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:6: ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:6: ^( VT_AND_PREFIX[$and.start] ( square_chunk )? ( constr_parameters )? ( lhs_unary )+ RIGHT_PAREN )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_PREFIX, (and!=null?((Token)and.start):null)), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:34: ( square_chunk )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:34: ( square_chunk )?
                         if ( stream_square_chunk.hasNext() ) {
                             adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                         }
                         stream_square_chunk.reset();
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:48: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:48: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -6982,17 +7097,17 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:2: ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )*
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:2: ( lhs_unary -> lhs_unary ) ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )*
                     {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:2: ( lhs_unary -> lhs_unary )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:3: lhs_unary
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:2: ( lhs_unary -> lhs_unary )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:3: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2828);
-                    lhs_unary155=lhs_unary();
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2947);
+                    lhs_unary160=lhs_unary();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary155.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary160.getTree());
 
 
                     // AST REWRITE
@@ -7006,7 +7121,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 936:13: -> lhs_unary
+                    // 948:13: -> lhs_unary
                     {
                         adaptor.addChild(root_0, stream_lhs_unary.nextTree());
 
@@ -7015,103 +7130,103 @@
                     retval.tree = root_0;}
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:3: ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )*
-                    loop60:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:3: ( ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary ) )*
+                    loop61:
                     do {
-                        int alt60=2;
-                        int LA60_0 = input.LA(1);
+                        int alt61=2;
+                        int LA61_0 = input.LA(1);
 
-                        if ( (LA60_0==ID) ) {
-                            int LA60_2 = input.LA(2);
+                        if ( (LA61_0==ID) ) {
+                            int LA61_2 = input.LA(2);
 
-                            if ( ((synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.AND))))) ) {
-                                alt60=1;
+                            if ( ((synpred7_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.AND))))) ) {
+                                alt61=1;
                             }
 
 
                         }
-                        else if ( (LA60_0==DOUBLE_AMPER) ) {
-                            int LA60_3 = input.LA(2);
+                        else if ( (LA61_0==DOUBLE_AMPER) ) {
+                            int LA61_3 = input.LA(2);
 
-                            if ( (synpred6_DRL()) ) {
-                                alt60=1;
+                            if ( (synpred7_DRL()) ) {
+                                alt61=1;
                             }
 
 
                         }
 
 
-                        switch (alt60) {
+                        switch (alt61) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:5: ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:5: ( and_key ( square_chunk )? | DOUBLE_AMPER )=> (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER ) lhs_unary
                     	    {
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:3: (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER )
-                    	    int alt59=2;
-                    	    int LA59_0 = input.LA(1);
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:3: (value= and_key ( constr_parameters )? ( square_chunk )? | amper= DOUBLE_AMPER )
+                    	    int alt60=2;
+                    	    int LA60_0 = input.LA(1);
 
-                    	    if ( (LA59_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
-                    	        alt59=1;
+                    	    if ( (LA60_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
+                    	        alt60=1;
                     	    }
-                    	    else if ( (LA59_0==DOUBLE_AMPER) ) {
-                    	        alt59=2;
+                    	    else if ( (LA60_0==DOUBLE_AMPER) ) {
+                    	        alt60=2;
                     	    }
                     	    else {
                     	        if (state.backtracking>0) {state.failed=true; return retval;}
                     	        NoViableAltException nvae =
-                    	            new NoViableAltException("", 59, 0, input);
+                    	            new NoViableAltException("", 60, 0, input);
 
                     	        throw nvae;
                     	    }
-                    	    switch (alt59) {
+                    	    switch (alt60) {
                     	        case 1 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:5: value= and_key ( constr_parameters )? ( square_chunk )?
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:5: value= and_key ( constr_parameters )? ( square_chunk )?
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2858);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2977);
                     	            value=and_key();
 
                     	            state._fsp--;
                     	            if (state.failed) return retval;
                     	            if ( state.backtracking==0 ) stream_and_key.add(value.getTree());
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:19: ( constr_parameters )?
-                    	            int alt57=2;
-                    	            int LA57_0 = input.LA(1);
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:19: ( constr_parameters )?
+                    	            int alt58=2;
+                    	            int LA58_0 = input.LA(1);
 
-                    	            if ( (LA57_0==AT) ) {
-                    	                alt57=1;
+                    	            if ( (LA58_0==AT) ) {
+                    	                alt58=1;
                     	            }
-                    	            switch (alt57) {
+                    	            switch (alt58) {
                     	                case 1 :
-                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:19: constr_parameters
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:19: constr_parameters
                     	                    {
-                    	                    pushFollow(FOLLOW_constr_parameters_in_lhs_and2860);
-                    	                    constr_parameters156=constr_parameters();
+                    	                    pushFollow(FOLLOW_constr_parameters_in_lhs_and2979);
+                    	                    constr_parameters161=constr_parameters();
 
                     	                    state._fsp--;
                     	                    if (state.failed) return retval;
-                    	                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters156.getTree());
+                    	                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters161.getTree());
 
                     	                    }
                     	                    break;
 
                     	            }
 
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:38: ( square_chunk )?
-                    	            int alt58=2;
-                    	            int LA58_0 = input.LA(1);
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:38: ( square_chunk )?
+                    	            int alt59=2;
+                    	            int LA59_0 = input.LA(1);
 
-                    	            if ( (LA58_0==LEFT_SQUARE) ) {
-                    	                alt58=1;
+                    	            if ( (LA59_0==LEFT_SQUARE) ) {
+                    	                alt59=1;
                     	            }
-                    	            switch (alt58) {
+                    	            switch (alt59) {
                     	                case 1 :
-                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:38: square_chunk
+                    	                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:38: square_chunk
                     	                    {
-                    	                    pushFollow(FOLLOW_square_chunk_in_lhs_and2863);
-                    	                    square_chunk157=square_chunk();
+                    	                    pushFollow(FOLLOW_square_chunk_in_lhs_and2982);
+                    	                    square_chunk162=square_chunk();
 
                     	                    state._fsp--;
                     	                    if (state.failed) return retval;
-                    	                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk157.getTree());
+                    	                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk162.getTree());
 
                     	                    }
                     	                    break;
@@ -7125,9 +7240,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:6: amper= DOUBLE_AMPER
+                    	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:6: amper= DOUBLE_AMPER
                     	            {
-                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2876); if (state.failed) return retval; 
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2995); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
                     	            if ( state.backtracking==0 ) {
@@ -7142,16 +7257,16 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2890);
-                    	    lhs_unary158=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and3009);
+                    	    lhs_unary163=lhs_unary();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary158.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary163.getTree());
 
 
                     	    // AST REWRITE
-                    	    // elements: lhs_and, lhs_unary, constr_parameters, square_chunk
+                    	    // elements: lhs_and, constr_parameters, square_chunk, lhs_unary
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -7161,20 +7276,20 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 943:3: -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary )
+                    	    // 955:3: -> ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary )
                     	    {
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:6: ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary )
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:6: ^( VT_AND_INFIX[andToken] ( square_chunk )? ( constr_parameters )? $lhs_and lhs_unary )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_INFIX, andToken), root_1);
 
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:31: ( square_chunk )?
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:31: ( square_chunk )?
                     	        if ( stream_square_chunk.hasNext() ) {
                     	            adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                     	        }
                     	        stream_square_chunk.reset();
-                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:45: ( constr_parameters )?
+                    	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:45: ( constr_parameters )?
                     	        if ( stream_constr_parameters.hasNext() ) {
                     	            adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -7193,7 +7308,7 @@
                     	    break;
 
                     	default :
-                    	    break loop60;
+                    	    break loop61;
                         }
                     } while (true);
 
@@ -7228,180 +7343,180 @@
     };
 
     // $ANTLR start "lhs_unary"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
     public final DRLParser.lhs_unary_return lhs_unary() throws RecognitionException {
         DRLParser.lhs_unary_return retval = new DRLParser.lhs_unary_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN165=null;
-        Token RIGHT_PAREN167=null;
-        Token SEMICOLON169=null;
-        DRLParser.lhs_exist_return lhs_exist159 = null;
+        Token LEFT_PAREN170=null;
+        Token RIGHT_PAREN172=null;
+        Token SEMICOLON174=null;
+        DRLParser.lhs_exist_return lhs_exist164 = null;
 
-        DRLParser.lhs_not_binding_return lhs_not_binding160 = null;
+        DRLParser.lhs_not_binding_return lhs_not_binding165 = null;
 
-        DRLParser.lhs_not_return lhs_not161 = null;
+        DRLParser.lhs_not_return lhs_not166 = null;
 
-        DRLParser.lhs_eval_return lhs_eval162 = null;
+        DRLParser.lhs_eval_return lhs_eval167 = null;
 
-        DRLParser.lhs_forall_return lhs_forall163 = null;
+        DRLParser.lhs_forall_return lhs_forall168 = null;
 
-        DRLParser.lhs_forany_return lhs_forany164 = null;
+        DRLParser.lhs_forany_return lhs_forany169 = null;
 
-        DRLParser.lhs_or_return lhs_or166 = null;
+        DRLParser.lhs_or_return lhs_or171 = null;
 
-        DRLParser.pattern_source_return pattern_source168 = null;
+        DRLParser.pattern_source_return pattern_source173 = null;
 
 
-        Object LEFT_PAREN165_tree=null;
-        Object RIGHT_PAREN167_tree=null;
-        Object SEMICOLON169_tree=null;
+        Object LEFT_PAREN170_tree=null;
+        Object RIGHT_PAREN172_tree=null;
+        Object SEMICOLON174_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
-            int alt62=8;
-            alt62 = dfa62.predict(input);
-            switch (alt62) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            int alt63=8;
+            alt63 = dfa63.predict(input);
+            switch (alt63) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:6: lhs_exist
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2934);
-                    lhs_exist159=lhs_exist();
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary3053);
+                    lhs_exist164=lhs_exist();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist159.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist164.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:4: {...}? => lhs_not_binding
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:960:4: {...}? => lhs_not_binding
                     {
                     if ( !((validateNotWithBinding())) ) {
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "lhs_unary", "validateNotWithBinding()");
                     }
-                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2942);
-                    lhs_not_binding160=lhs_not_binding();
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary3061);
+                    lhs_not_binding165=lhs_not_binding();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding160.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding165.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:5: lhs_not
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2948);
-                    lhs_not161=lhs_not();
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary3067);
+                    lhs_not166=lhs_not();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not161.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not166.getTree());
 
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:5: lhs_eval
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2954);
-                    lhs_eval162=lhs_eval();
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary3073);
+                    lhs_eval167=lhs_eval();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval162.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval167.getTree());
 
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:5: lhs_forall
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:963:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2960);
-                    lhs_forall163=lhs_forall();
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary3079);
+                    lhs_forall168=lhs_forall();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall163.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall168.getTree());
 
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:5: lhs_forany
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:5: lhs_forany
                     {
-                    pushFollow(FOLLOW_lhs_forany_in_lhs_unary2966);
-                    lhs_forany164=lhs_forany();
+                    pushFollow(FOLLOW_lhs_forany_in_lhs_unary3085);
+                    lhs_forany169=lhs_forany();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forany164.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forany169.getTree());
 
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:953:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN165=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2972); if (state.failed) return retval;
+                    LEFT_PAREN170=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary3091); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN165, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN170, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2983);
-                    lhs_or166=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary3102);
+                    lhs_or171=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or166.getTree());
-                    RIGHT_PAREN167=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2989); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or171.getTree());
+                    RIGHT_PAREN172=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary3108); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN167_tree = (Object)adaptor.create(RIGHT_PAREN167);
-                    adaptor.addChild(root_0, RIGHT_PAREN167_tree);
+                    RIGHT_PAREN172_tree = (Object)adaptor.create(RIGHT_PAREN172);
+                    adaptor.addChild(root_0, RIGHT_PAREN172_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN167, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN172, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:5: pattern_source
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:968:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2997);
-                    pattern_source168=pattern_source();
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary3116);
+                    pattern_source173=pattern_source();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source168.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source173.getTree());
 
                     }
                     break;
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:3: ( ( SEMICOLON )=> SEMICOLON )?
-            int alt63=2;
-            int LA63_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:3: ( ( SEMICOLON )=> SEMICOLON )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
 
-            if ( (LA63_0==SEMICOLON) ) {
-                int LA63_1 = input.LA(2);
+            if ( (LA64_0==SEMICOLON) ) {
+                int LA64_1 = input.LA(2);
 
-                if ( (synpred7_DRL()) ) {
-                    alt63=1;
+                if ( (synpred8_DRL()) ) {
+                    alt64=1;
                 }
             }
-            switch (alt63) {
+            switch (alt64) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:4: ( SEMICOLON )=> SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON169=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary3011); if (state.failed) return retval;
+                    SEMICOLON174=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary3130); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(SEMICOLON169, DroolsEditorType.SYMBOL);	
+                      	emit(SEMICOLON174, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -7438,78 +7553,78 @@
     };
 
     // $ANTLR start "lhs_exist"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:1: lhs_exist : exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.lhs_exist_return lhs_exist() throws RecognitionException {
         DRLParser.lhs_exist_return retval = new DRLParser.lhs_exist_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN172=null;
-        Token RIGHT_PAREN174=null;
-        DRLParser.exists_key_return exists_key170 = null;
+        Token LEFT_PAREN177=null;
+        Token RIGHT_PAREN179=null;
+        DRLParser.exists_key_return exists_key175 = null;
 
-        DRLParser.lhs_or_return lhs_or171 = null;
+        DRLParser.lhs_or_return lhs_or176 = null;
 
-        DRLParser.lhs_or_return lhs_or173 = null;
+        DRLParser.lhs_or_return lhs_or178 = null;
 
-        DRLParser.lhs_pattern_return lhs_pattern175 = null;
+        DRLParser.lhs_pattern_return lhs_pattern180 = null;
 
 
-        Object LEFT_PAREN172_tree=null;
-        Object RIGHT_PAREN174_tree=null;
+        Object LEFT_PAREN177_tree=null;
+        Object RIGHT_PAREN179_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         RewriteRuleSubtreeStream stream_exists_key=new RewriteRuleSubtreeStream(adaptor,"rule exists_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:2: ( exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_exists_key_in_lhs_exist3027);
-            exists_key170=exists_key();
+            pushFollow(FOLLOW_exists_key_in_lhs_exist3146);
+            exists_key175=exists_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_exists_key.add(exists_key170.getTree());
+            if ( state.backtracking==0 ) stream_exists_key.add(exists_key175.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
-            int alt64=3;
-            int LA64_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            int alt65=3;
+            int LA65_0 = input.LA(1);
 
-            if ( (LA64_0==LEFT_PAREN) ) {
-                int LA64_1 = input.LA(2);
+            if ( (LA65_0==LEFT_PAREN) ) {
+                int LA65_1 = input.LA(2);
 
-                if ( (synpred8_DRL()) ) {
-                    alt64=1;
+                if ( (synpred9_DRL()) ) {
+                    alt65=1;
                 }
                 else if ( (true) ) {
-                    alt64=2;
+                    alt65=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 64, 1, input);
+                        new NoViableAltException("", 65, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA64_0==ID) ) {
-                int LA64_2 = input.LA(2);
+            else if ( (LA65_0==ID) ) {
+                int LA65_2 = input.LA(2);
 
-                if ( (((synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.VERY))))||synpred8_DRL()||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORANY))))||(synpred8_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||((synpred8_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) ) {
-                    alt64=1;
+                if ( (((synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.VERY))))||synpred9_DRL()||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORANY))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||((synpred9_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred9_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL)))))) ) {
+                    alt65=1;
                 }
                 else if ( (true) ) {
-                    alt64=3;
+                    alt65=3;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 64, 2, input);
+                        new NoViableAltException("", 65, 2, input);
 
                     throw nvae;
                 }
@@ -7517,56 +7632,56 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 64, 0, input);
+                    new NoViableAltException("", 65, 0, input);
 
                 throw nvae;
             }
-            switch (alt64) {
+            switch (alt65) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3054);
-                    lhs_or171=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3173);
+                    lhs_or176=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or171.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or176.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN172=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3061); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN172);
+                    LEFT_PAREN177=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist3180); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN177);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN172, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN177, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3069);
-                    lhs_or173=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist3188);
+                    lhs_or178=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or173.getTree());
-                    RIGHT_PAREN174=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3076); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN174);
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or178.getTree());
+                    RIGHT_PAREN179=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist3195); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN179);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN174, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN179, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:968:12: lhs_pattern
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3091);
-                    lhs_pattern175=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist3210);
+                    lhs_pattern180=lhs_pattern();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern175.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern180.getTree());
 
                     }
                     break;
@@ -7576,7 +7691,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, lhs_pattern, exists_key, lhs_or
+            // elements: lhs_or, RIGHT_PAREN, lhs_pattern, exists_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7586,26 +7701,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 970:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 982:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_exists_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:26: ( lhs_or )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:34: ( lhs_pattern )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:47: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -7646,40 +7761,40 @@
     };
 
     // $ANTLR start "lhs_not_binding"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
     public final DRLParser.lhs_not_binding_return lhs_not_binding() throws RecognitionException {
         DRLParser.lhs_not_binding_return retval = new DRLParser.lhs_not_binding_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        DRLParser.not_key_return not_key176 = null;
+        DRLParser.not_key_return not_key181 = null;
 
-        DRLParser.fact_binding_return fact_binding177 = null;
+        DRLParser.fact_binding_return fact_binding182 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:4: not_key fact_binding
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding3137);
-            not_key176=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding3256);
+            not_key181=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_not_key.add(not_key176.getTree());
-            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding3139);
-            fact_binding177=fact_binding();
+            if ( state.backtracking==0 ) stream_not_key.add(not_key181.getTree());
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding3258);
+            fact_binding182=fact_binding();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding177.getTree());
+            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding182.getTree());
 
 
             // AST REWRITE
-            // elements: fact_binding, not_key
+            // elements: not_key, fact_binding
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7689,14 +7804,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 975:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            // 987:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:5: ^( not_key ^( VT_PATTERN fact_binding ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:15: ^( VT_PATTERN fact_binding )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:15: ^( VT_PATTERN fact_binding )
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_2);
@@ -7740,78 +7855,78 @@
     };
 
     // $ANTLR start "lhs_not"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:1: lhs_not : not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.lhs_not_return lhs_not() throws RecognitionException {
         DRLParser.lhs_not_return retval = new DRLParser.lhs_not_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN180=null;
-        Token RIGHT_PAREN182=null;
-        DRLParser.not_key_return not_key178 = null;
+        Token LEFT_PAREN185=null;
+        Token RIGHT_PAREN187=null;
+        DRLParser.not_key_return not_key183 = null;
 
-        DRLParser.lhs_or_return lhs_or179 = null;
+        DRLParser.lhs_or_return lhs_or184 = null;
 
-        DRLParser.lhs_or_return lhs_or181 = null;
+        DRLParser.lhs_or_return lhs_or186 = null;
 
-        DRLParser.lhs_pattern_return lhs_pattern183 = null;
+        DRLParser.lhs_pattern_return lhs_pattern188 = null;
 
 
-        Object LEFT_PAREN180_tree=null;
-        Object RIGHT_PAREN182_tree=null;
+        Object LEFT_PAREN185_tree=null;
+        Object RIGHT_PAREN187_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:9: ( not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern ) -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not3162);
-            not_key178=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not3281);
+            not_key183=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_not_key.add(not_key178.getTree());
+            if ( state.backtracking==0 ) stream_not_key.add(not_key183.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
-            int alt65=3;
-            int LA65_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            int alt66=3;
+            int LA66_0 = input.LA(1);
 
-            if ( (LA65_0==LEFT_PAREN) ) {
-                int LA65_1 = input.LA(2);
+            if ( (LA66_0==LEFT_PAREN) ) {
+                int LA66_1 = input.LA(2);
 
-                if ( (synpred9_DRL()) ) {
-                    alt65=1;
+                if ( (synpred10_DRL()) ) {
+                    alt66=1;
                 }
                 else if ( (true) ) {
-                    alt65=2;
+                    alt66=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 65, 1, input);
+                        new NoViableAltException("", 66, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA65_0==ID) ) {
-                int LA65_2 = input.LA(2);
+            else if ( (LA66_0==ID) ) {
+                int LA66_2 = input.LA(2);
 
-                if ( (synpred9_DRL()) ) {
-                    alt65=1;
+                if ( (synpred10_DRL()) ) {
+                    alt66=1;
                 }
                 else if ( (true) ) {
-                    alt65=3;
+                    alt66=3;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 65, 2, input);
+                        new NoViableAltException("", 66, 2, input);
 
                     throw nvae;
                 }
@@ -7819,59 +7934,59 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 65, 0, input);
+                    new NoViableAltException("", 66, 0, input);
 
                 throw nvae;
             }
-            switch (alt65) {
+            switch (alt66) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not3184);
-                    lhs_or179=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3303);
+                    lhs_or184=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or179.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or184.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:981:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN180=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3191); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN180);
+                    LEFT_PAREN185=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not3310); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN185);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN180, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN185, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not3200);
-                    lhs_or181=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not3319);
+                    lhs_or186=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or181.getTree());
-                    RIGHT_PAREN182=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3206); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN182);
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or186.getTree());
+                    RIGHT_PAREN187=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not3325); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN187);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN182, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN187, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:984:6: lhs_pattern
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:996:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3216);
-                    lhs_pattern183=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not3335);
+                    lhs_pattern188=lhs_pattern();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern183.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern188.getTree());
 
                     }
                     break;
@@ -7881,7 +7996,7 @@
 
 
             // AST REWRITE
-            // elements: not_key, lhs_pattern, lhs_or, RIGHT_PAREN
+            // elements: RIGHT_PAREN, lhs_pattern, lhs_or, not_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7891,26 +8006,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 985:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 997:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:997:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:23: ( lhs_or )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:997:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:31: ( lhs_pattern )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:997:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:44: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:997:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -7951,7 +8066,7 @@
     };
 
     // $ANTLR start "lhs_eval"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:988:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
     public final DRLParser.lhs_eval_return lhs_eval() throws RecognitionException {
         DRLParser.lhs_eval_return retval = new DRLParser.lhs_eval_return();
         retval.start = input.LT(1);
@@ -7966,10 +8081,10 @@
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_eval_key=new RewriteRuleSubtreeStream(adaptor,"rule eval_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:4: ev= eval_key pc= paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1001:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1001:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval3255);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval3374);
             ev=eval_key();
 
             state._fsp--;
@@ -7978,7 +8093,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3264);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval3383);
             pc=paren_chunk();
 
             state._fsp--;
@@ -8007,9 +8122,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 998:3: -> ^( eval_key paren_chunk )
+            // 1010:3: -> ^( eval_key paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:998:6: ^( eval_key paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
@@ -8050,88 +8165,88 @@
     };
 
     // $ANTLR start "lhs_forall"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1001:1: lhs_forall : forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1013:1: lhs_forall : forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) ;
     public final DRLParser.lhs_forall_return lhs_forall() throws RecognitionException {
         DRLParser.lhs_forall_return retval = new DRLParser.lhs_forall_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN185=null;
-        Token RIGHT_PAREN187=null;
-        DRLParser.forall_key_return forall_key184 = null;
+        Token LEFT_PAREN190=null;
+        Token RIGHT_PAREN192=null;
+        DRLParser.forall_key_return forall_key189 = null;
 
-        DRLParser.pattern_source_return pattern_source186 = null;
+        DRLParser.pattern_source_return pattern_source191 = null;
 
 
-        Object LEFT_PAREN185_tree=null;
-        Object RIGHT_PAREN187_tree=null;
+        Object LEFT_PAREN190_tree=null;
+        Object RIGHT_PAREN192_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
         RewriteRuleSubtreeStream stream_forall_key=new RewriteRuleSubtreeStream(adaptor,"rule forall_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1002:2: ( forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1002:4: forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:2: ( forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN -> ^( forall_key ( pattern_source )+ RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:4: forall_key LEFT_PAREN ( pattern_source )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall3291);
-            forall_key184=forall_key();
+            pushFollow(FOLLOW_forall_key_in_lhs_forall3410);
+            forall_key189=forall_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_forall_key.add(forall_key184.getTree());
-            LEFT_PAREN185=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3296); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN185);
+            if ( state.backtracking==0 ) stream_forall_key.add(forall_key189.getTree());
+            LEFT_PAREN190=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall3415); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN190);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN185, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN190, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1004:4: ( pattern_source )+
-            int cnt66=0;
-            loop66:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:4: ( pattern_source )+
+            int cnt67=0;
+            loop67:
             do {
-                int alt66=2;
-                int LA66_0 = input.LA(1);
+                int alt67=2;
+                int LA67_0 = input.LA(1);
 
-                if ( (LA66_0==ID) ) {
-                    alt66=1;
+                if ( (LA67_0==ID) ) {
+                    alt67=1;
                 }
 
 
-                switch (alt66) {
+                switch (alt67) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1004:4: pattern_source
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:4: pattern_source
             	    {
-            	    pushFollow(FOLLOW_pattern_source_in_lhs_forall3304);
-            	    pattern_source186=pattern_source();
+            	    pushFollow(FOLLOW_pattern_source_in_lhs_forall3423);
+            	    pattern_source191=pattern_source();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source186.getTree());
+            	    if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source191.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    if ( cnt66 >= 1 ) break loop66;
+            	    if ( cnt67 >= 1 ) break loop67;
             	    if (state.backtracking>0) {state.failed=true; return retval;}
                         EarlyExitException eee =
-                            new EarlyExitException(66, input);
+                            new EarlyExitException(67, input);
                         throw eee;
                 }
-                cnt66++;
+                cnt67++;
             } while (true);
 
-            RIGHT_PAREN187=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3310); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN187);
+            RIGHT_PAREN192=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall3429); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN192);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN187, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN192, DroolsEditorType.SYMBOL);	
             }
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, pattern_source, forall_key
+            // elements: RIGHT_PAREN, forall_key, pattern_source
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8141,9 +8256,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1006:3: -> ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+            // 1018:3: -> ^( forall_key ( pattern_source )+ RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:6: ^( forall_key ( pattern_source )+ RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1018:6: ^( forall_key ( pattern_source )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -8192,30 +8307,30 @@
     };
 
     // $ANTLR start "lhs_forany"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:1: lhs_forany : forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023:1: lhs_forany : forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) ;
     public final DRLParser.lhs_forany_return lhs_forany() throws RecognitionException {
         DRLParser.lhs_forany_return retval = new DRLParser.lhs_forany_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN189=null;
-        Token RIGHT_PAREN193=null;
+        Token LEFT_PAREN194=null;
+        Token RIGHT_PAREN198=null;
         DRLParser.lhs_or_return s = null;
 
         DRLParser.lhs_or_return w = null;
 
-        DRLParser.forany_key_return forany_key188 = null;
+        DRLParser.forany_key_return forany_key193 = null;
 
-        DRLParser.lhs_or_return lhs_or190 = null;
+        DRLParser.lhs_or_return lhs_or195 = null;
 
-        DRLParser.subject_key_return subject_key191 = null;
+        DRLParser.subject_key_return subject_key196 = null;
 
-        DRLParser.weight_key_return weight_key192 = null;
+        DRLParser.weight_key_return weight_key197 = null;
 
 
-        Object LEFT_PAREN189_tree=null;
-        Object RIGHT_PAREN193_tree=null;
+        Object LEFT_PAREN194_tree=null;
+        Object RIGHT_PAREN198_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_weight_key=new RewriteRuleSubtreeStream(adaptor,"rule weight_key");
@@ -8223,52 +8338,52 @@
         RewriteRuleSubtreeStream stream_subject_key=new RewriteRuleSubtreeStream(adaptor,"rule subject_key");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1012:3: ( forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1012:5: forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:3: ( forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:5: forany_key LEFT_PAREN lhs_or ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? ) RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forany_key_in_lhs_forany3341);
-            forany_key188=forany_key();
+            pushFollow(FOLLOW_forany_key_in_lhs_forany3460);
+            forany_key193=forany_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_forany_key.add(forany_key188.getTree());
-            LEFT_PAREN189=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forany3348); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN189);
+            if ( state.backtracking==0 ) stream_forany_key.add(forany_key193.getTree());
+            LEFT_PAREN194=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forany3467); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN194);
 
             if ( state.backtracking==0 ) {
-                emit(LEFT_PAREN189, DroolsEditorType.SYMBOL); 
+                emit(LEFT_PAREN194, DroolsEditorType.SYMBOL); 
             }
-            pushFollow(FOLLOW_lhs_or_in_lhs_forany3359);
-            lhs_or190=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_lhs_forany3478);
+            lhs_or195=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or190.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:7: ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:7: ( subject_key s= lhs_or )? ( weight_key w= lhs_or )?
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or195.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:7: ( ( subject_key s= lhs_or )? ( weight_key w= lhs_or )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:7: ( subject_key s= lhs_or )? ( weight_key w= lhs_or )?
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:7: ( subject_key s= lhs_or )?
-            int alt67=2;
-            int LA67_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:7: ( subject_key s= lhs_or )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
 
-            if ( (LA67_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))||((validateIdentifierKey(DroolsSoftKeywords.WEIGHT)))))) {
-                int LA67_1 = input.LA(2);
+            if ( (LA68_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))||((validateIdentifierKey(DroolsSoftKeywords.WEIGHT)))))) {
+                int LA68_1 = input.LA(2);
 
                 if ( (((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))) ) {
-                    alt67=1;
+                    alt68=1;
                 }
             }
-            switch (alt67) {
+            switch (alt68) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:8: subject_key s= lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:8: subject_key s= lhs_or
                     {
-                    pushFollow(FOLLOW_subject_key_in_lhs_forany3378);
-                    subject_key191=subject_key();
+                    pushFollow(FOLLOW_subject_key_in_lhs_forany3497);
+                    subject_key196=subject_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_subject_key.add(subject_key191.getTree());
-                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3382);
+                    if ( state.backtracking==0 ) stream_subject_key.add(subject_key196.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3501);
                     s=lhs_or();
 
                     state._fsp--;
@@ -8280,24 +8395,24 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:7: ( weight_key w= lhs_or )?
-            int alt68=2;
-            int LA68_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:7: ( weight_key w= lhs_or )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
 
-            if ( (LA68_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WEIGHT))))) {
-                alt68=1;
+            if ( (LA69_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WEIGHT))))) {
+                alt69=1;
             }
-            switch (alt68) {
+            switch (alt69) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1017:8: weight_key w= lhs_or
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:8: weight_key w= lhs_or
                     {
-                    pushFollow(FOLLOW_weight_key_in_lhs_forany3393);
-                    weight_key192=weight_key();
+                    pushFollow(FOLLOW_weight_key_in_lhs_forany3512);
+                    weight_key197=weight_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_weight_key.add(weight_key192.getTree());
-                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3397);
+                    if ( state.backtracking==0 ) stream_weight_key.add(weight_key197.getTree());
+                    pushFollow(FOLLOW_lhs_or_in_lhs_forany3516);
                     w=lhs_or();
 
                     state._fsp--;
@@ -8312,16 +8427,16 @@
 
             }
 
-            RIGHT_PAREN193=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forany3413); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN193);
+            RIGHT_PAREN198=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forany3532); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN198);
 
             if ( state.backtracking==0 ) {
-               emit(RIGHT_PAREN193, DroolsEditorType.SYMBOL);  
+               emit(RIGHT_PAREN198, DroolsEditorType.SYMBOL);  
             }
 
 
             // AST REWRITE
-            // elements: forany_key, w, lhs_or, RIGHT_PAREN, weight_key, subject_key, s
+            // elements: lhs_or, RIGHT_PAREN, s, forany_key, w, weight_key, subject_key
             // token labels: 
             // rule labels: w, retval, s
             // token list labels: 
@@ -8333,23 +8448,23 @@
             RewriteRuleSubtreeStream stream_s=new RewriteRuleSubtreeStream(adaptor,"token s",s!=null?s.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1020:5: -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
+            // 1032:5: -> ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:8: ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:8: ^( forany_key lhs_or ( subject_key $s)? ( weight_key $w)? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forany_key.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_lhs_or.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:28: ( subject_key $s)?
-                if ( stream_subject_key.hasNext()||stream_s.hasNext() ) {
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:28: ( subject_key $s)?
+                if ( stream_s.hasNext()||stream_subject_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_subject_key.nextTree());
                     adaptor.addChild(root_1, stream_s.nextTree());
 
                 }
+                stream_s.reset();
                 stream_subject_key.reset();
-                stream_s.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:46: ( weight_key $w)?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1032:46: ( weight_key $w)?
                 if ( stream_w.hasNext()||stream_weight_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_weight_key.nextTree());
                     adaptor.addChild(root_1, stream_w.nextTree());
@@ -8393,112 +8508,112 @@
     };
 
     // $ANTLR start "pattern_source"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
     public final DRLParser.pattern_source_return pattern_source() throws RecognitionException {
         DRLParser.pattern_source_return retval = new DRLParser.pattern_source_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token FROM196=null;
-        DRLParser.lhs_pattern_return lhs_pattern194 = null;
+        Token FROM201=null;
+        DRLParser.lhs_pattern_return lhs_pattern199 = null;
 
-        DRLParser.over_clause_return over_clause195 = null;
+        DRLParser.over_clause_return over_clause200 = null;
 
-        DRLParser.accumulate_statement_return accumulate_statement197 = null;
+        DRLParser.accumulate_statement_return accumulate_statement202 = null;
 
-        DRLParser.collect_statement_return collect_statement198 = null;
+        DRLParser.collect_statement_return collect_statement203 = null;
 
-        DRLParser.entrypoint_statement_return entrypoint_statement199 = null;
+        DRLParser.entrypoint_statement_return entrypoint_statement204 = null;
 
-        DRLParser.from_source_return from_source200 = null;
+        DRLParser.from_source_return from_source205 = null;
 
 
-        Object FROM196_tree=null;
+        Object FROM201_tree=null;
 
          boolean isFailed = true;	
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1039:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1040:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_pattern_in_pattern_source3474);
-            lhs_pattern194=lhs_pattern();
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source3593);
+            lhs_pattern199=lhs_pattern();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern194.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:3: ( over_clause )?
-            int alt69=2;
-            int LA69_0 = input.LA(1);
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern199.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:3: ( over_clause )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
 
-            if ( (LA69_0==OVER) ) {
-                alt69=1;
+            if ( (LA70_0==OVER) ) {
+                alt70=1;
             }
-            switch (alt69) {
+            switch (alt70) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:3: over_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source3478);
-                    over_clause195=over_clause();
+                    pushFollow(FOLLOW_over_clause_in_pattern_source3597);
+                    over_clause200=over_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause195.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause200.getTree());
 
                     }
                     break;
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1030:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
-            int alt71=2;
-            int LA71_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1042:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
 
-            if ( (LA71_0==FROM) ) {
-                alt71=1;
+            if ( (LA72_0==FROM) ) {
+                alt72=1;
             }
-            switch (alt71) {
+            switch (alt72) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1031:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1043:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM196=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source3488); if (state.failed) return retval;
+                    FROM201=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source3607); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    FROM196_tree = (Object)adaptor.create(FROM196);
-                    root_0 = (Object)adaptor.becomeRoot(FROM196_tree, root_0);
+                    FROM201_tree = (Object)adaptor.create(FROM201);
+                    root_0 = (Object)adaptor.becomeRoot(FROM201_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(FROM196, DroolsEditorType.KEYWORD);
+                      	emit(FROM201, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
-                    int alt70=4;
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    int alt71=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
                         {
-                        alt70=1;
+                        alt71=1;
                         }
                         break;
                     case COLLECT:
                         {
-                        alt70=2;
+                        alt71=2;
                         }
                         break;
                     case ID:
                         {
-                        int LA70_3 = input.LA(2);
+                        int LA71_3 = input.LA(2);
 
-                        if ( (LA70_3==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))))) {
-                            alt70=3;
+                        if ( (LA71_3==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))))) {
+                            alt71=3;
                         }
-                        else if ( ((LA70_3>=SEMICOLON && LA70_3<=DOT)||(LA70_3>=LEFT_PAREN && LA70_3<=RIGHT_PAREN)||(LA70_3>=DOUBLE_PIPE && LA70_3<=DOUBLE_AMPER)||LA70_3==THEN) ) {
-                            alt70=4;
+                        else if ( ((LA71_3>=SEMICOLON && LA71_3<=DOT)||(LA71_3>=LEFT_PAREN && LA71_3<=RIGHT_PAREN)||(LA71_3>=DOUBLE_PIPE && LA71_3<=DOUBLE_AMPER)||LA71_3==THEN) ) {
+                            alt71=4;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 70, 3, input);
+                                new NoViableAltException("", 71, 3, input);
 
                             throw nvae;
                         }
@@ -8507,57 +8622,57 @@
                     default:
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 70, 0, input);
+                            new NoViableAltException("", 71, 0, input);
 
                         throw nvae;
                     }
 
-                    switch (alt70) {
+                    switch (alt71) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:14: accumulate_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1046:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source3508);
-                            accumulate_statement197=accumulate_statement();
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source3627);
+                            accumulate_statement202=accumulate_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement197.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement202.getTree());
 
                             }
                             break;
                         case 2 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:15: collect_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source3524);
-                            collect_statement198=collect_statement();
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source3643);
+                            collect_statement203=collect_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement198.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement203.getTree());
 
                             }
                             break;
                         case 3 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:15: entrypoint_statement
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1048:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source3541);
-                            entrypoint_statement199=entrypoint_statement();
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source3660);
+                            entrypoint_statement204=entrypoint_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement199.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement204.getTree());
 
                             }
                             break;
                         case 4 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1037:15: from_source
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1049:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source3557);
-                            from_source200=from_source();
+                            pushFollow(FOLLOW_from_source_in_pattern_source3676);
+                            from_source205=from_source();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source200.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source205.getTree());
 
                             }
                             break;
@@ -8615,57 +8730,57 @@
     };
 
     // $ANTLR start "over_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1055:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
     public final DRLParser.over_clause_return over_clause() throws RecognitionException {
         DRLParser.over_clause_return retval = new DRLParser.over_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token OVER201=null;
-        Token COMMA203=null;
-        DRLParser.over_elements_return over_elements202 = null;
+        Token OVER206=null;
+        Token COMMA208=null;
+        DRLParser.over_elements_return over_elements207 = null;
 
-        DRLParser.over_elements_return over_elements204 = null;
+        DRLParser.over_elements_return over_elements209 = null;
 
 
-        Object OVER201_tree=null;
-        Object COMMA203_tree=null;
+        Object OVER206_tree=null;
+        Object COMMA208_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:2: ( OVER over_elements ( COMMA over_elements )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1056:4: OVER over_elements ( COMMA over_elements )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:2: ( OVER over_elements ( COMMA over_elements )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER201=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause3589); if (state.failed) return retval;
+            OVER206=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause3708); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            OVER201_tree = (Object)adaptor.create(OVER201);
-            root_0 = (Object)adaptor.becomeRoot(OVER201_tree, root_0);
+            OVER206_tree = (Object)adaptor.create(OVER206);
+            root_0 = (Object)adaptor.becomeRoot(OVER206_tree, root_0);
             }
             if ( state.backtracking==0 ) {
-              	emit(OVER201, DroolsEditorType.KEYWORD);	
+              	emit(OVER206, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause3594);
-            over_elements202=over_elements();
+            pushFollow(FOLLOW_over_elements_in_over_clause3713);
+            over_elements207=over_elements();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements202.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:4: ( COMMA over_elements )*
-            loop72:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements207.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:4: ( COMMA over_elements )*
+            loop73:
             do {
-                int alt72=2;
-                int LA72_0 = input.LA(1);
+                int alt73=2;
+                int LA73_0 = input.LA(1);
 
-                if ( (LA72_0==COMMA) ) {
-                    int LA72_2 = input.LA(2);
+                if ( (LA73_0==COMMA) ) {
+                    int LA73_2 = input.LA(2);
 
-                    if ( (LA72_2==ID) ) {
-                        int LA72_3 = input.LA(3);
+                    if ( (LA73_2==ID) ) {
+                        int LA73_3 = input.LA(3);
 
-                        if ( (LA72_3==COLON) ) {
-                            alt72=1;
+                        if ( (LA73_3==COLON) ) {
+                            alt73=1;
                         }
 
 
@@ -8675,26 +8790,26 @@
                 }
 
 
-                switch (alt72) {
+                switch (alt73) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1057:5: COMMA over_elements
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:5: COMMA over_elements
             	    {
-            	    COMMA203=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause3601); if (state.failed) return retval;
+            	    COMMA208=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause3720); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA203, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA208, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause3606);
-            	    over_elements204=over_elements();
+            	    pushFollow(FOLLOW_over_elements_in_over_clause3725);
+            	    over_elements209=over_elements();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements204.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements209.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop72;
+            	    break loop73;
                 }
             } while (true);
 
@@ -8727,7 +8842,7 @@
     };
 
     // $ANTLR start "over_elements"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1060:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1072:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
     public final DRLParser.over_elements_return over_elements() throws RecognitionException {
         DRLParser.over_elements_return retval = new DRLParser.over_elements_return();
         retval.start = input.LT(1);
@@ -8736,44 +8851,44 @@
 
         Token id1=null;
         Token id2=null;
-        Token COLON205=null;
-        DRLParser.paren_chunk_return paren_chunk206 = null;
+        Token COLON210=null;
+        DRLParser.paren_chunk_return paren_chunk211 = null;
 
 
         Object id1_tree=null;
         Object id2_tree=null;
-        Object COLON205_tree=null;
+        Object COLON210_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1061:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1061:4: id1= ID COLON id2= ID paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:4: id1= ID COLON id2= ID paren_chunk
             {
-            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements3621); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements3740); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
             if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.IDENTIFIER);	
             }
-            COLON205=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements3628); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLON.add(COLON205);
+            COLON210=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements3747); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON210);
 
             if ( state.backtracking==0 ) {
-              	emit(COLON205, DroolsEditorType.SYMBOL);	
+              	emit(COLON210, DroolsEditorType.SYMBOL);	
             }
-            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements3637); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements3756); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
               	emit(id2, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_over_elements3644);
-            paren_chunk206=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_over_elements3763);
+            paren_chunk211=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk206.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk211.getTree());
 
 
             // AST REWRITE
@@ -8789,9 +8904,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1065:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            // 1077:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1065:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1077:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BEHAVIOR, "VT_BEHAVIOR"), root_1);
@@ -8834,28 +8949,28 @@
     };
 
     // $ANTLR start "accumulate_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1068:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:1: accumulate_statement : ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) ;
     public final DRLParser.accumulate_statement_return accumulate_statement() throws RecognitionException {
         DRLParser.accumulate_statement_return retval = new DRLParser.accumulate_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ACCUMULATE207=null;
-        Token LEFT_PAREN208=null;
-        Token COMMA210=null;
-        Token RIGHT_PAREN213=null;
-        DRLParser.lhs_or_return lhs_or209 = null;
+        Token ACCUMULATE212=null;
+        Token LEFT_PAREN213=null;
+        Token COMMA215=null;
+        Token RIGHT_PAREN218=null;
+        DRLParser.lhs_or_return lhs_or214 = null;
 
-        DRLParser.accumulate_init_clause_return accumulate_init_clause211 = null;
+        DRLParser.accumulate_init_clause_return accumulate_init_clause216 = null;
 
-        DRLParser.accumulate_id_clause_return accumulate_id_clause212 = null;
+        DRLParser.accumulate_id_clause_return accumulate_id_clause217 = null;
 
 
-        Object ACCUMULATE207_tree=null;
-        Object LEFT_PAREN208_tree=null;
-        Object COMMA210_tree=null;
-        Object RIGHT_PAREN213_tree=null;
+        Object ACCUMULATE212_tree=null;
+        Object LEFT_PAREN213_tree=null;
+        Object COMMA215_tree=null;
+        Object RIGHT_PAREN218_tree=null;
         RewriteRuleTokenStream stream_ACCUMULATE=new RewriteRuleTokenStream(adaptor,"token ACCUMULATE");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
@@ -8864,43 +8979,43 @@
         RewriteRuleSubtreeStream stream_accumulate_id_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_id_clause");
         RewriteRuleSubtreeStream stream_lhs_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1069:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:2: ( ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1081:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE207=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement3670); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE207);
+            ACCUMULATE212=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement3789); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE212);
 
             if ( state.backtracking==0 ) {
-              	emit(ACCUMULATE207, DroolsEditorType.KEYWORD);	
+              	emit(ACCUMULATE212, DroolsEditorType.KEYWORD);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
             }
-            LEFT_PAREN208=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement3679); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN208);
+            LEFT_PAREN213=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement3798); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN213);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN208, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN213, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement3687);
-            lhs_or209=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement3806);
+            lhs_or214=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or209.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:3: ( COMMA )?
-            int alt73=2;
-            int LA73_0 = input.LA(1);
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or214.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:3: ( COMMA )?
+            int alt74=2;
+            int LA74_0 = input.LA(1);
 
-            if ( (LA73_0==COMMA) ) {
-                alt73=1;
+            if ( (LA74_0==COMMA) ) {
+                alt74=1;
             }
-            switch (alt73) {
+            switch (alt74) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1073:3: COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1085:3: COMMA
                     {
-                    COMMA210=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement3692); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA210);
+                    COMMA215=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement3811); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA215);
 
 
                     }
@@ -8909,25 +9024,25 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(COMMA210, DroolsEditorType.SYMBOL);	
+              	emit(COMMA215, DroolsEditorType.SYMBOL);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:3: ( accumulate_init_clause | accumulate_id_clause )
-            int alt74=2;
-            int LA74_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1086:3: ( accumulate_init_clause | accumulate_id_clause )
+            int alt75=2;
+            int LA75_0 = input.LA(1);
 
-            if ( (LA74_0==ID) ) {
-                int LA74_1 = input.LA(2);
+            if ( (LA75_0==ID) ) {
+                int LA75_1 = input.LA(2);
 
                 if ( (((validateIdentifierKey(DroolsSoftKeywords.INIT)))) ) {
-                    alt74=1;
+                    alt75=1;
                 }
                 else if ( (true) ) {
-                    alt74=2;
+                    alt75=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 74, 1, input);
+                        new NoViableAltException("", 75, 1, input);
 
                     throw nvae;
                 }
@@ -8935,43 +9050,43 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 74, 0, input);
+                    new NoViableAltException("", 75, 0, input);
 
                 throw nvae;
             }
-            switch (alt74) {
+            switch (alt75) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1074:5: accumulate_init_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1086:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement3702);
-                    accumulate_init_clause211=accumulate_init_clause();
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement3821);
+                    accumulate_init_clause216=accumulate_init_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause211.getTree());
+                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause216.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:5: accumulate_id_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement3708);
-                    accumulate_id_clause212=accumulate_id_clause();
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement3827);
+                    accumulate_id_clause217=accumulate_id_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause212.getTree());
+                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause217.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN213=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement3716); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN213);
+            RIGHT_PAREN218=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement3835); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN218);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN213, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN218, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
@@ -8979,7 +9094,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, ACCUMULATE, accumulate_id_clause, lhs_or, accumulate_init_clause
+            // elements: accumulate_id_clause, ACCUMULATE, RIGHT_PAREN, accumulate_init_clause, lhs_or
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8989,21 +9104,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1079:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            // 1091:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_ACCUMULATE.nextNode(), root_1);
 
                 adaptor.addChild(root_1, stream_lhs_or.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:26: ( accumulate_init_clause )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:50: ( accumulate_id_clause )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_id_clause.nextTree());
 
@@ -9045,7 +9160,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1083:1: accumulate_init_clause : init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1095:1: accumulate_init_clause : init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
     public final DRLParser.accumulate_init_clause_return accumulate_init_clause() throws RecognitionException {
         DRLParser.accumulate_init_clause_return retval = new DRLParser.accumulate_init_clause_return();
         retval.start = input.LT(1);
@@ -9065,11 +9180,11 @@
 
         DRLParser.accumulate_paren_chunk_return pc4 = null;
 
-        DRLParser.init_key_return init_key214 = null;
+        DRLParser.init_key_return init_key219 = null;
 
-        DRLParser.action_key_return action_key215 = null;
+        DRLParser.action_key_return action_key220 = null;
 
-        DRLParser.reverse_key_return reverse_key216 = null;
+        DRLParser.reverse_key_return reverse_key221 = null;
 
 
         Object cm1_tree=null;
@@ -9083,36 +9198,36 @@
         RewriteRuleSubtreeStream stream_init_key=new RewriteRuleSubtreeStream(adaptor,"rule init_key");
          boolean isFailed = true;	
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1086:2: ( init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1086:4: init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:2: ( init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE] -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1098:4: init_key pc1= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] (cm1= COMMA )? action_key pc2= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] (cm2= COMMA )? ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )? res1= result_key pc4= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
             {
-            pushFollow(FOLLOW_init_key_in_accumulate_init_clause3762);
-            init_key214=init_key();
+            pushFollow(FOLLOW_init_key_in_accumulate_init_clause3881);
+            init_key219=init_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_init_key.add(init_key214.getTree());
+            if ( state.backtracking==0 ) stream_init_key.add(init_key219.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3772);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3891);
             pc1=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc1.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:84: (cm1= COMMA )?
-            int alt75=2;
-            int LA75_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:84: (cm1= COMMA )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
 
-            if ( (LA75_0==COMMA) ) {
-                alt75=1;
+            if ( (LA76_0==COMMA) ) {
+                alt76=1;
             }
-            switch (alt75) {
+            switch (alt76) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:84: cm1= COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:84: cm1= COMMA
                     {
-                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3777); if (state.failed) return retval; 
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3896); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm1);
 
 
@@ -9127,30 +9242,30 @@
             if ( state.backtracking==0 ) {
               	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	
             }
-            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3788);
-            action_key215=action_key();
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3907);
+            action_key220=action_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_action_key.add(action_key215.getTree());
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3792);
+            if ( state.backtracking==0 ) stream_action_key.add(action_key220.getTree());
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3911);
             pc2=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc2.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:97: (cm2= COMMA )?
-            int alt76=2;
-            int LA76_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1102:97: (cm2= COMMA )?
+            int alt77=2;
+            int LA77_0 = input.LA(1);
 
-            if ( (LA76_0==COMMA) ) {
-                alt76=1;
+            if ( (LA77_0==COMMA) ) {
+                alt77=1;
             }
-            switch (alt76) {
+            switch (alt77) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1090:97: cm2= COMMA
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1102:97: cm2= COMMA
                     {
-                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3797); if (state.failed) return retval; 
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3916); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm2);
 
 
@@ -9165,45 +9280,45 @@
             if ( state.backtracking==0 ) {
               	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
-            int alt78=2;
-            int LA78_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1104:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
 
-            if ( (LA78_0==ID) ) {
-                int LA78_1 = input.LA(2);
+            if ( (LA79_0==ID) ) {
+                int LA79_1 = input.LA(2);
 
                 if ( (((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
-                    alt78=1;
+                    alt79=1;
                 }
             }
-            switch (alt78) {
+            switch (alt79) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1104:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3809);
-                    reverse_key216=reverse_key();
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3928);
+                    reverse_key221=reverse_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key216.getTree());
-                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3813);
+                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key221.getTree());
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3932);
                     pc3=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE);
 
                     state._fsp--;
                     if (state.failed) return retval;
                     if ( state.backtracking==0 ) stream_accumulate_paren_chunk.add(pc3.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:100: (cm3= COMMA )?
-                    int alt77=2;
-                    int LA77_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1104:100: (cm3= COMMA )?
+                    int alt78=2;
+                    int LA78_0 = input.LA(1);
 
-                    if ( (LA77_0==COMMA) ) {
-                        alt77=1;
+                    if ( (LA78_0==COMMA) ) {
+                        alt78=1;
                     }
-                    switch (alt77) {
+                    switch (alt78) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:100: cm3= COMMA
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1104:100: cm3= COMMA
                             {
-                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3818); if (state.failed) return retval; 
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3937); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_COMMA.add(cm3);
 
 
@@ -9229,7 +9344,7 @@
               		}	
               	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3834);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3953);
             res1=result_key();
 
             state._fsp--;
@@ -9238,7 +9353,7 @@
             if ( state.backtracking==0 ) {
               	emit((res1!=null?((Token)res1.start):null), DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3840);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3959);
             pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
 
             state._fsp--;
@@ -9247,7 +9362,7 @@
 
 
             // AST REWRITE
-            // elements: action_key, result_key, pc2, pc4, pc3, pc1, reverse_key, init_key
+            // elements: result_key, reverse_key, action_key, init_key, pc2, pc3, pc1, pc4
             // token labels: 
             // rule labels: pc4, pc3, retval, pc1, pc2
             // token list labels: 
@@ -9261,14 +9376,14 @@
             RewriteRuleSubtreeStream stream_pc2=new RewriteRuleSubtreeStream(adaptor,"token pc2",pc2!=null?pc2.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1101:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            // 1113:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_INIT_CLAUSE, "VT_ACCUMULATE_INIT_CLAUSE"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:33: ^( init_key $pc1)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:33: ^( init_key $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_init_key.nextNode(), root_2);
@@ -9277,7 +9392,7 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:50: ^( action_key $pc2)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:50: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
@@ -9286,9 +9401,9 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:69: ( ^( reverse_key $pc3) )?
-                if ( stream_pc3.hasNext()||stream_reverse_key.hasNext() ) {
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:69: ^( reverse_key $pc3)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:69: ( ^( reverse_key $pc3) )?
+                if ( stream_reverse_key.hasNext()||stream_pc3.hasNext() ) {
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:69: ^( reverse_key $pc3)
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
@@ -9299,9 +9414,9 @@
                     }
 
                 }
+                stream_reverse_key.reset();
                 stream_pc3.reset();
-                stream_reverse_key.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1101:90: ^( result_key $pc4)
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1113:90: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
@@ -9358,7 +9473,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1114:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final DRLParser.accumulate_paren_chunk_return accumulate_paren_chunk(int locationType) throws RecognitionException {
         DRLParser.accumulate_paren_chunk_return retval = new DRLParser.accumulate_paren_chunk_return();
         retval.start = input.LT(1);
@@ -9373,10 +9488,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1117:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3898);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk4017);
             pc=accumulate_paren_chunk_data(false, locationType);
 
             state._fsp--;
@@ -9398,7 +9513,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1118:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1130:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -9433,7 +9548,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1121:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:1: accumulate_paren_chunk_data[boolean isRecursive, int locationType] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN ;
     public final DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data(boolean isRecursive, int locationType) throws RecognitionException {
         DRLParser.accumulate_paren_chunk_data_return retval = new DRLParser.accumulate_paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -9443,7 +9558,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data217 = null;
+        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data222 = null;
 
 
         Object lp1_tree=null;
@@ -9451,12 +9566,12 @@
         Object rp1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1122:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1122:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1134:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1134:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3922); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data4041); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -9470,23 +9585,23 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1130:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
-            loop79:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            loop80:
             do {
-                int alt79=3;
-                int LA79_0 = input.LA(1);
+                int alt80=3;
+                int LA80_0 = input.LA(1);
 
-                if ( ((LA79_0>=VT_COMPILATION_UNIT && LA79_0<=STRING)||LA79_0==COMMA||(LA79_0>=AT && LA79_0<=MULTI_LINE_COMMENT)) ) {
-                    alt79=1;
+                if ( ((LA80_0>=VT_COMPILATION_UNIT && LA80_0<=STRING)||LA80_0==COMMA||(LA80_0>=AT && LA80_0<=MULTI_LINE_COMMENT)) ) {
+                    alt80=1;
                 }
-                else if ( (LA79_0==LEFT_PAREN) ) {
-                    alt79=2;
+                else if ( (LA80_0==LEFT_PAREN) ) {
+                    alt80=2;
                 }
 
 
-                switch (alt79) {
+                switch (alt80) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1130:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -9507,24 +9622,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1130:87: accumulate_paren_chunk_data[true,-1]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3950);
-            	    accumulate_paren_chunk_data217=accumulate_paren_chunk_data(true, -1);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data4069);
+            	    accumulate_paren_chunk_data222=accumulate_paren_chunk_data(true, -1);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data217.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data222.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop79;
+            	    break loop80;
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3961); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data4080); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -9566,36 +9681,36 @@
     };
 
     // $ANTLR start "accumulate_id_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1140:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
     public final DRLParser.accumulate_id_clause_return accumulate_id_clause() throws RecognitionException {
         DRLParser.accumulate_id_clause_return retval = new DRLParser.accumulate_id_clause_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID218=null;
-        DRLParser.paren_chunk_return paren_chunk219 = null;
+        Token ID223=null;
+        DRLParser.paren_chunk_return paren_chunk224 = null;
 
 
-        Object ID218_tree=null;
+        Object ID223_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:4: ID paren_chunk
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1153:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1153:4: ID paren_chunk
             {
-            ID218=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3977); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID218);
+            ID223=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause4096); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID223);
 
             if ( state.backtracking==0 ) {
-              	emit(ID218, DroolsEditorType.IDENTIFIER);	
+              	emit(ID223, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3983);
-            paren_chunk219=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause4102);
+            paren_chunk224=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk219.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk224.getTree());
 
 
             // AST REWRITE
@@ -9609,9 +9724,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1143:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            // 1155:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1143:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1155:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCUMULATE_ID_CLAUSE, "VT_ACCUMULATE_ID_CLAUSE"), root_1);
@@ -9653,56 +9768,56 @@
     };
 
     // $ANTLR start "collect_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1146:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1158:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
     public final DRLParser.collect_statement_return collect_statement() throws RecognitionException {
         DRLParser.collect_statement_return retval = new DRLParser.collect_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token COLLECT220=null;
-        Token LEFT_PAREN221=null;
-        Token RIGHT_PAREN223=null;
-        DRLParser.pattern_source_return pattern_source222 = null;
+        Token COLLECT225=null;
+        Token LEFT_PAREN226=null;
+        Token RIGHT_PAREN228=null;
+        DRLParser.pattern_source_return pattern_source227 = null;
 
 
-        Object COLLECT220_tree=null;
-        Object LEFT_PAREN221_tree=null;
-        Object RIGHT_PAREN223_tree=null;
+        Object COLLECT225_tree=null;
+        Object LEFT_PAREN226_tree=null;
+        Object RIGHT_PAREN228_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleTokenStream stream_COLLECT=new RewriteRuleTokenStream(adaptor,"token COLLECT");
         RewriteRuleSubtreeStream stream_pattern_source=new RewriteRuleSubtreeStream(adaptor,"rule pattern_source");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1147:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1147:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1159:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT220=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement4005); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT220);
+            COLLECT225=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement4124); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT225);
 
             if ( state.backtracking==0 ) {
-              	emit(COLLECT220, DroolsEditorType.KEYWORD);	
+              	emit(COLLECT225, DroolsEditorType.KEYWORD);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            LEFT_PAREN221=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement4014); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN221);
+            LEFT_PAREN226=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement4133); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN226);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN221, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN226, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_pattern_source_in_collect_statement4021);
-            pattern_source222=pattern_source();
+            pushFollow(FOLLOW_pattern_source_in_collect_statement4140);
+            pattern_source227=pattern_source();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source222.getTree());
-            RIGHT_PAREN223=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement4026); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN223);
+            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source227.getTree());
+            RIGHT_PAREN228=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement4145); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN228);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN223, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN228, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
@@ -9710,7 +9825,7 @@
 
 
             // AST REWRITE
-            // elements: COLLECT, RIGHT_PAREN, pattern_source
+            // elements: RIGHT_PAREN, pattern_source, COLLECT
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9720,9 +9835,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1153:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            // 1165:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1153:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.nextNode(), root_1);
@@ -9764,39 +9879,39 @@
     };
 
     // $ANTLR start "entrypoint_statement"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1168:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
     public final DRLParser.entrypoint_statement_return entrypoint_statement() throws RecognitionException {
         DRLParser.entrypoint_statement_return retval = new DRLParser.entrypoint_statement_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        DRLParser.entry_point_key_return entry_point_key224 = null;
+        DRLParser.entry_point_key_return entry_point_key229 = null;
 
-        DRLParser.entrypoint_id_return entrypoint_id225 = null;
+        DRLParser.entrypoint_id_return entrypoint_id230 = null;
 
 
         RewriteRuleSubtreeStream stream_entrypoint_id=new RewriteRuleSubtreeStream(adaptor,"rule entrypoint_id");
         RewriteRuleSubtreeStream stream_entry_point_key=new RewriteRuleSubtreeStream(adaptor,"rule entry_point_key");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:4: entry_point_key entrypoint_id
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1169:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1169:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement4053);
-            entry_point_key224=entry_point_key();
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement4172);
+            entry_point_key229=entry_point_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key224.getTree());
+            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key229.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement4061);
-            entrypoint_id225=entrypoint_id();
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement4180);
+            entrypoint_id230=entrypoint_id();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id225.getTree());
+            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id230.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
@@ -9813,9 +9928,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1161:2: -> ^( entry_point_key entrypoint_id )
+            // 1173:2: -> ^( entry_point_key entrypoint_id )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:5: ^( entry_point_key entrypoint_id )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
@@ -9856,7 +9971,7 @@
     };
 
     // $ANTLR start "entrypoint_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1164:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1176:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
     public final DRLParser.entrypoint_id_return entrypoint_id() throws RecognitionException {
         DRLParser.entrypoint_id_return retval = new DRLParser.entrypoint_id_return();
         retval.start = input.LT(1);
@@ -9870,28 +9985,28 @@
         RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
-            int alt80=2;
-            int LA80_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1177:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            int alt81=2;
+            int LA81_0 = input.LA(1);
 
-            if ( (LA80_0==ID) ) {
-                alt80=1;
+            if ( (LA81_0==ID) ) {
+                alt81=1;
             }
-            else if ( (LA80_0==STRING) ) {
-                alt80=2;
+            else if ( (LA81_0==STRING) ) {
+                alt81=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 80, 0, input);
+                    new NoViableAltException("", 81, 0, input);
 
                 throw nvae;
             }
-            switch (alt80) {
+            switch (alt81) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1165:5: value= ID
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1177:5: value= ID
                     {
-                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id4087); if (state.failed) return retval; 
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id4206); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -9910,7 +10025,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1166:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1178:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -9920,9 +10035,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1167:5: value= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1179:5: value= STRING
                     {
-                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id4104); if (state.failed) return retval; 
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id4223); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -9941,7 +10056,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1168:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1180:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -9978,41 +10093,41 @@
     };
 
     // $ANTLR start "from_source"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1171:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1183:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
     public final DRLParser.from_source_return from_source() throws RecognitionException {
         DRLParser.from_source_return retval = new DRLParser.from_source_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID226=null;
+        Token ID231=null;
         DRLParser.paren_chunk_return args = null;
 
-        DRLParser.expression_chain_return expression_chain227 = null;
+        DRLParser.expression_chain_return expression_chain232 = null;
 
 
-        Object ID226_tree=null;
+        Object ID231_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1172:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1172:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID226=(Token)match(input,ID,FOLLOW_ID_in_from_source4124); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID226);
+            ID231=(Token)match(input,ID,FOLLOW_ID_in_from_source4243); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID231);
 
             if ( state.backtracking==0 ) {
-              	emit(ID226, DroolsEditorType.IDENTIFIER);	
+              	emit(ID231, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
-            int alt81=2;
-            alt81 = dfa81.predict(input);
-            switch (alt81) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            int alt82=2;
+            alt82 = dfa82.predict(input);
+            switch (alt82) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source4139);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source4258);
                     args=paren_chunk();
 
                     state._fsp--;
@@ -10024,23 +10139,23 @@
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:3: ( expression_chain )?
-            int alt82=2;
-            int LA82_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1186:3: ( expression_chain )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
 
-            if ( (LA82_0==DOT) ) {
-                alt82=1;
+            if ( (LA83_0==DOT) ) {
+                alt83=1;
             }
-            switch (alt82) {
+            switch (alt83) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1174:3: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1186:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source4146);
-                    expression_chain227=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_from_source4265);
+                    expression_chain232=expression_chain();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain227.getTree());
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain232.getTree());
 
                     }
                     break;
@@ -10057,7 +10172,7 @@
 
 
             // AST REWRITE
-            // elements: ID, paren_chunk, expression_chain
+            // elements: paren_chunk, ID, expression_chain
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10067,21 +10182,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1180:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            // 1192:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FROM_SOURCE, "VT_FROM_SOURCE"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:25: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1180:38: ( expression_chain )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -10122,97 +10237,97 @@
     };
 
     // $ANTLR start "expression_chain"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1183:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1195:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
     public final DRLParser.expression_chain_return expression_chain() throws RecognitionException {
         DRLParser.expression_chain_return retval = new DRLParser.expression_chain_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOT228=null;
-        Token ID229=null;
-        DRLParser.paren_chunk_return paren_chunk230 = null;
+        Token DOT233=null;
+        Token ID234=null;
+        DRLParser.paren_chunk_return paren_chunk235 = null;
 
-        DRLParser.square_chunk_return square_chunk231 = null;
+        DRLParser.square_chunk_return square_chunk236 = null;
 
-        DRLParser.expression_chain_return expression_chain232 = null;
+        DRLParser.expression_chain_return expression_chain237 = null;
 
 
-        Object DOT228_tree=null;
-        Object ID229_tree=null;
+        Object DOT233_tree=null;
+        Object ID234_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1184:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1196:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1197:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT228=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain4179); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_DOT.add(DOT228);
+            DOT233=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain4298); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_DOT.add(DOT233);
 
             if ( state.backtracking==0 ) {
-              	emit(DOT228, DroolsEditorType.IDENTIFIER);	
+              	emit(DOT233, DroolsEditorType.IDENTIFIER);	
             }
-            ID229=(Token)match(input,ID,FOLLOW_ID_in_expression_chain4186); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID229);
+            ID234=(Token)match(input,ID,FOLLOW_ID_in_expression_chain4305); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID234);
 
             if ( state.backtracking==0 ) {
-              	emit(ID229, DroolsEditorType.IDENTIFIER);	
+              	emit(ID234, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1187:4: ({...}? paren_chunk | square_chunk )?
-            int alt83=3;
-            alt83 = dfa83.predict(input);
-            switch (alt83) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:4: ({...}? paren_chunk | square_chunk )?
+            int alt84=3;
+            alt84 = dfa84.predict(input);
+            switch (alt84) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1188:6: {...}? paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1200:6: {...}? paren_chunk
                     {
                     if ( !((input.LA(1) == LEFT_PAREN)) ) {
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "expression_chain", "input.LA(1) == LEFT_PAREN");
                     }
-                    pushFollow(FOLLOW_paren_chunk_in_expression_chain4202);
-                    paren_chunk230=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain4321);
+                    paren_chunk235=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk230.getTree());
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk235.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1190:6: square_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1202:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain4216);
-                    square_chunk231=square_chunk();
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain4335);
+                    square_chunk236=square_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk231.getTree());
+                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk236.getTree());
 
                     }
                     break;
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:4: ( expression_chain )?
-            int alt84=2;
-            int LA84_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:4: ( expression_chain )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
 
-            if ( (LA84_0==DOT) ) {
-                alt84=1;
+            if ( (LA85_0==DOT) ) {
+                alt85=1;
             }
-            switch (alt84) {
+            switch (alt85) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1192:4: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain4227);
-                    expression_chain232=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain4346);
+                    expression_chain237=expression_chain();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain232.getTree());
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain237.getTree());
 
                     }
                     break;
@@ -10222,7 +10337,7 @@
 
 
             // AST REWRITE
-            // elements: paren_chunk, ID, expression_chain, square_chunk
+            // elements: expression_chain, ID, square_chunk, paren_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10232,27 +10347,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1193:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            // 1205:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
-                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT228), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT233), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:38: ( square_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:52: ( paren_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1193:65: ( expression_chain )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -10293,38 +10408,38 @@
     };
 
     // $ANTLR start "lhs_pattern"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1197:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1209:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
     public final DRLParser.lhs_pattern_return lhs_pattern() throws RecognitionException {
         DRLParser.lhs_pattern_return retval = new DRLParser.lhs_pattern_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        DRLParser.fact_binding_return fact_binding233 = null;
+        DRLParser.fact_binding_return fact_binding238 = null;
 
-        DRLParser.fact_return fact234 = null;
+        DRLParser.fact_return fact239 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:3: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
-            int alt85=2;
-            int LA85_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1210:3: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            int alt86=2;
+            int LA86_0 = input.LA(1);
 
-            if ( (LA85_0==ID) ) {
-                int LA85_1 = input.LA(2);
+            if ( (LA86_0==ID) ) {
+                int LA86_1 = input.LA(2);
 
-                if ( (LA85_1==COLON) ) {
-                    alt85=1;
+                if ( (LA86_1==COLON) ) {
+                    alt86=1;
                 }
-                else if ( (LA85_1==DOT||LA85_1==LEFT_PAREN||LA85_1==LEFT_SQUARE) ) {
-                    alt85=2;
+                else if ( (LA86_1==DOT||LA86_1==LEFT_PAREN||LA86_1==LEFT_SQUARE) ) {
+                    alt86=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 85, 1, input);
+                        new NoViableAltException("", 86, 1, input);
 
                     throw nvae;
                 }
@@ -10332,20 +10447,20 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 85, 0, input);
+                    new NoViableAltException("", 86, 0, input);
 
                 throw nvae;
             }
-            switch (alt85) {
+            switch (alt86) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:5: fact_binding
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1210:5: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern4263);
-                    fact_binding233=fact_binding();
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern4382);
+                    fact_binding238=fact_binding();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding233.getTree());
+                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding238.getTree());
 
 
                     // AST REWRITE
@@ -10359,9 +10474,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1198:18: -> ^( VT_PATTERN fact_binding )
+                    // 1210:18: -> ^( VT_PATTERN fact_binding )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1198:21: ^( VT_PATTERN fact_binding )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1210:21: ^( VT_PATTERN fact_binding )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -10377,14 +10492,14 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:5: fact
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern4278);
-                    fact234=fact();
+                    pushFollow(FOLLOW_fact_in_lhs_pattern4397);
+                    fact239=fact();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact.add(fact234.getTree());
+                    if ( state.backtracking==0 ) stream_fact.add(fact239.getTree());
 
 
                     // AST REWRITE
@@ -10398,9 +10513,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1199:11: -> ^( VT_PATTERN fact )
+                    // 1211:11: -> ^( VT_PATTERN fact )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1199:14: ^( VT_PATTERN fact )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:14: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -10443,89 +10558,89 @@
     };
 
     // $ANTLR start "fact_binding"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1204:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1216:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
     public final DRLParser.fact_binding_return fact_binding() throws RecognitionException {
         DRLParser.fact_binding_return retval = new DRLParser.fact_binding_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN237=null;
-        Token RIGHT_PAREN239=null;
-        DRLParser.label_return label235 = null;
+        Token LEFT_PAREN242=null;
+        Token RIGHT_PAREN244=null;
+        DRLParser.label_return label240 = null;
 
-        DRLParser.fact_return fact236 = null;
+        DRLParser.fact_return fact241 = null;
 
-        DRLParser.fact_binding_expression_return fact_binding_expression238 = null;
+        DRLParser.fact_binding_expression_return fact_binding_expression243 = null;
 
 
-        Object LEFT_PAREN237_tree=null;
-        Object RIGHT_PAREN239_tree=null;
+        Object LEFT_PAREN242_tree=null;
+        Object RIGHT_PAREN244_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
         RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1205:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding4306);
-            label235=label();
+            pushFollow(FOLLOW_label_in_fact_binding4425);
+            label240=label();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_label.add(label235.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
-            int alt86=2;
-            int LA86_0 = input.LA(1);
+            if ( state.backtracking==0 ) stream_label.add(label240.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1218:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            int alt87=2;
+            int LA87_0 = input.LA(1);
 
-            if ( (LA86_0==ID) ) {
-                alt86=1;
+            if ( (LA87_0==ID) ) {
+                alt87=1;
             }
-            else if ( (LA86_0==LEFT_PAREN) ) {
-                alt86=2;
+            else if ( (LA87_0==LEFT_PAREN) ) {
+                alt87=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 86, 0, input);
+                    new NoViableAltException("", 87, 0, input);
 
                 throw nvae;
             }
-            switch (alt86) {
+            switch (alt87) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1206:5: fact
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1218:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding4312);
-                    fact236=fact();
+                    pushFollow(FOLLOW_fact_in_fact_binding4431);
+                    fact241=fact();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact.add(fact236.getTree());
+                    if ( state.backtracking==0 ) stream_fact.add(fact241.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1207:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1219:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN237=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding4319); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN237);
+                    LEFT_PAREN242=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding4438); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN242);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN237, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN242, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding4327);
-                    fact_binding_expression238=fact_binding_expression();
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding4446);
+                    fact_binding_expression243=fact_binding_expression();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression238.getTree());
-                    RIGHT_PAREN239=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding4335); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN239);
+                    if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression243.getTree());
+                    RIGHT_PAREN244=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding4454); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN244);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN239, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN244, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -10536,7 +10651,7 @@
 
 
             // AST REWRITE
-            // elements: fact, RIGHT_PAREN, fact_binding_expression, label
+            // elements: fact_binding_expression, fact, label, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10546,27 +10661,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1211:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            // 1223:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1223:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_BINDING, "VT_FACT_BINDING"), root_1);
 
                 adaptor.addChild(root_1, stream_label.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:30: ( fact )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1223:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact.nextTree());
 
                 }
                 stream_fact.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:36: ( fact_binding_expression )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1223:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
 
                 }
                 stream_fact_binding_expression.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1211:61: ( RIGHT_PAREN )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1223:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -10607,7 +10722,7 @@
     };
 
     // $ANTLR start "fact_binding_expression"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1214:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1226:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
     public final DRLParser.fact_binding_expression_return fact_binding_expression() throws RecognitionException {
         DRLParser.fact_binding_expression_return retval = new DRLParser.fact_binding_expression_return();
         retval.start = input.LT(1);
@@ -10617,9 +10732,9 @@
         Token pipe=null;
         DRLParser.or_key_return value = null;
 
-        DRLParser.fact_return fact240 = null;
+        DRLParser.fact_return fact245 = null;
 
-        DRLParser.fact_return fact241 = null;
+        DRLParser.fact_return fact246 = null;
 
 
         Object pipe_tree=null;
@@ -10630,18 +10745,18 @@
         	Token orToken = null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:5: ( fact -> fact )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:6: fact
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:5: ( fact -> fact )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression4376);
-            fact240=fact();
+            pushFollow(FOLLOW_fact_in_fact_binding_expression4495);
+            fact245=fact();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_fact.add(fact240.getTree());
+            if ( state.backtracking==0 ) stream_fact.add(fact245.getTree());
 
 
             // AST REWRITE
@@ -10655,7 +10770,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1217:11: -> fact
+            // 1229:11: -> fact
             {
                 adaptor.addChild(root_0, stream_fact.nextTree());
 
@@ -10664,46 +10779,46 @@
             retval.tree = root_0;}
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
-            loop88:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            loop89:
             do {
-                int alt88=2;
-                int LA88_0 = input.LA(1);
+                int alt89=2;
+                int LA89_0 = input.LA(1);
 
-                if ( (LA88_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-                    alt88=1;
+                if ( (LA89_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                    alt89=1;
                 }
-                else if ( (LA88_0==DOUBLE_PIPE) ) {
-                    alt88=1;
+                else if ( (LA89_0==DOUBLE_PIPE) ) {
+                    alt89=1;
                 }
 
 
-                switch (alt88) {
+                switch (alt89) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:22: (value= or_key | pipe= DOUBLE_PIPE )
-            	    int alt87=2;
-            	    int LA87_0 = input.LA(1);
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    int alt88=2;
+            	    int LA88_0 = input.LA(1);
 
-            	    if ( (LA87_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            	        alt87=1;
+            	    if ( (LA88_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            	        alt88=1;
             	    }
-            	    else if ( (LA87_0==DOUBLE_PIPE) ) {
-            	        alt87=2;
+            	    else if ( (LA88_0==DOUBLE_PIPE) ) {
+            	        alt88=2;
             	    }
             	    else {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 87, 0, input);
+            	            new NoViableAltException("", 88, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt87) {
+            	    switch (alt88) {
             	        case 1 :
-            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:23: value= or_key
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression4388);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression4507);
             	            value=or_key();
 
             	            state._fsp--;
@@ -10716,9 +10831,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1217:62: pipe= DOUBLE_PIPE
+            	            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:62: pipe= DOUBLE_PIPE
             	            {
-            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4394); if (state.failed) return retval; 
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4513); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
             	            if ( state.backtracking==0 ) {
@@ -10730,16 +10845,16 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression4399);
-            	    fact241=fact();
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression4518);
+            	    fact246=fact();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_fact.add(fact241.getTree());
+            	    if ( state.backtracking==0 ) stream_fact.add(fact246.getTree());
 
 
             	    // AST REWRITE
-            	    // elements: fact_binding_expression, fact
+            	    // elements: fact, fact_binding_expression
             	    // token labels: 
             	    // rule labels: retval
             	    // token list labels: 
@@ -10749,9 +10864,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1218:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    // 1230:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	    {
-            	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1218:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1230:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	        {
             	        Object root_1 = (Object)adaptor.nil();
             	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT_OR, orToken), root_1);
@@ -10769,7 +10884,7 @@
             	    break;
 
             	default :
-            	    break loop88;
+            	    break loop89;
                 }
             } while (true);
 
@@ -10802,24 +10917,24 @@
     };
 
     // $ANTLR start "fact"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1221:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1233:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) ;
     public final DRLParser.fact_return fact() throws RecognitionException {
         DRLParser.fact_return retval = new DRLParser.fact_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN243=null;
-        Token RIGHT_PAREN245=null;
-        DRLParser.pattern_type_return pattern_type242 = null;
+        Token LEFT_PAREN248=null;
+        Token RIGHT_PAREN250=null;
+        DRLParser.pattern_type_return pattern_type247 = null;
 
-        DRLParser.constraints_return constraints244 = null;
+        DRLParser.constraints_return constraints249 = null;
 
-        DRLParser.constr_parameters_return constr_parameters246 = null;
+        DRLParser.constr_parameters_return constr_parameters251 = null;
 
 
-        Object LEFT_PAREN243_tree=null;
-        Object RIGHT_PAREN245_tree=null;
+        Object LEFT_PAREN248_tree=null;
+        Object RIGHT_PAREN250_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
@@ -10827,70 +10942,70 @@
         RewriteRuleSubtreeStream stream_pattern_type=new RewriteRuleSubtreeStream(adaptor,"rule pattern_type");
          boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1224:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1224:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1236:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )? -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1236:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN ( constr_parameters )?
             {
-            pushFollow(FOLLOW_pattern_type_in_fact4439);
-            pattern_type242=pattern_type();
+            pushFollow(FOLLOW_pattern_type_in_fact4558);
+            pattern_type247=pattern_type();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type242.getTree());
-            LEFT_PAREN243=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact4444); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN243);
+            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type247.getTree());
+            LEFT_PAREN248=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact4563); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN248);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN243, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN248, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1227:4: ( constraints )?
-            int alt89=2;
-            int LA89_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:4: ( constraints )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
 
-            if ( (LA89_0==ID||LA89_0==LEFT_PAREN) ) {
-                alt89=1;
+            if ( (LA90_0==ID||LA90_0==LEFT_PAREN) ) {
+                alt90=1;
             }
-            switch (alt89) {
+            switch (alt90) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1227:4: constraints
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1239:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact4455);
-                    constraints244=constraints();
+                    pushFollow(FOLLOW_constraints_in_fact4574);
+                    constraints249=constraints();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_constraints.add(constraints244.getTree());
+                    if ( state.backtracking==0 ) stream_constraints.add(constraints249.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN245=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact4461); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN245);
+            RIGHT_PAREN250=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact4580); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN250);
 
             if ( state.backtracking==0 ) {
               	isFailedOnConstraints = false;	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:4: ( constr_parameters )?
-            int alt90=2;
-            int LA90_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1241:4: ( constr_parameters )?
+            int alt91=2;
+            int LA91_0 = input.LA(1);
 
-            if ( (LA90_0==AT) ) {
-                alt90=1;
+            if ( (LA91_0==AT) ) {
+                alt91=1;
             }
-            switch (alt90) {
+            switch (alt91) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1229:4: constr_parameters
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1241:4: constr_parameters
                     {
-                    pushFollow(FOLLOW_constr_parameters_in_fact4468);
-                    constr_parameters246=constr_parameters();
+                    pushFollow(FOLLOW_constr_parameters_in_fact4587);
+                    constr_parameters251=constr_parameters();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters246.getTree());
+                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters251.getTree());
 
                     }
                     break;
@@ -10898,15 +11013,15 @@
             }
 
             if ( state.backtracking==0 ) {
-              	if ((RIGHT_PAREN245!=null?RIGHT_PAREN245.getText():null).equals(")") ){ //WORKAROUND FOR ANTLR BUG!
-              			emit(RIGHT_PAREN245, DroolsEditorType.SYMBOL);
+              	if ((RIGHT_PAREN250!=null?RIGHT_PAREN250.getText():null).equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+              			emit(RIGHT_PAREN250, DroolsEditorType.SYMBOL);
               			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
               		}	
             }
 
 
             // AST REWRITE
-            // elements: constr_parameters, pattern_type, constraints, RIGHT_PAREN
+            // elements: constr_parameters, pattern_type, RIGHT_PAREN, constraints
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10916,21 +11031,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1237:2: -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
+            // 1249:2: -> ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1237:5: ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:5: ^( VT_FACT pattern_type ( constraints )? ( constr_parameters )? RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FACT, "VT_FACT"), root_1);
 
                 adaptor.addChild(root_1, stream_pattern_type.nextTree());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1237:28: ( constraints )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:28: ( constraints )?
                 if ( stream_constraints.hasNext() ) {
                     adaptor.addChild(root_1, stream_constraints.nextTree());
 
                 }
                 stream_constraints.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1237:41: ( constr_parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1249:41: ( constr_parameters )?
                 if ( stream_constr_parameters.hasNext() ) {
                     adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -10982,65 +11097,65 @@
     };
 
     // $ANTLR start "constraints"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1247:1: constraints : constraint ( COMMA constraint )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1259:1: constraints : constraint ( COMMA constraint )* ;
     public final DRLParser.constraints_return constraints() throws RecognitionException {
         DRLParser.constraints_return retval = new DRLParser.constraints_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token COMMA248=null;
-        DRLParser.constraint_return constraint247 = null;
+        Token COMMA253=null;
+        DRLParser.constraint_return constraint252 = null;
 
-        DRLParser.constraint_return constraint249 = null;
+        DRLParser.constraint_return constraint254 = null;
 
 
-        Object COMMA248_tree=null;
+        Object COMMA253_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:2: ( constraint ( COMMA constraint )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:4: constraint ( COMMA constraint )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:2: ( constraint ( COMMA constraint )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints4514);
-            constraint247=constraint();
+            pushFollow(FOLLOW_constraint_in_constraints4633);
+            constraint252=constraint();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint247.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:15: ( COMMA constraint )*
-            loop91:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint252.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:15: ( COMMA constraint )*
+            loop92:
             do {
-                int alt91=2;
-                int LA91_0 = input.LA(1);
+                int alt92=2;
+                int LA92_0 = input.LA(1);
 
-                if ( (LA91_0==COMMA) ) {
-                    alt91=1;
+                if ( (LA92_0==COMMA) ) {
+                    alt92=1;
                 }
 
 
-                switch (alt91) {
+                switch (alt92) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1248:17: COMMA constraint
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:17: COMMA constraint
             	    {
-            	    COMMA248=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints4518); if (state.failed) return retval;
+            	    COMMA253=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints4637); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA248, DroolsEditorType.SYMBOL);
+            	      	emit(COMMA253, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints4525);
-            	    constraint249=constraint();
+            	    pushFollow(FOLLOW_constraint_in_constraints4644);
+            	    constraint254=constraint();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint249.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint254.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop91;
+            	    break loop92;
                 }
             } while (true);
 
@@ -11073,29 +11188,29 @@
     };
 
     // $ANTLR start "constraint"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1253:1: constraint : or_constr ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1265:1: constraint : or_constr ;
     public final DRLParser.constraint_return constraint() throws RecognitionException {
         DRLParser.constraint_return retval = new DRLParser.constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        DRLParser.or_constr_return or_constr250 = null;
+        DRLParser.or_constr_return or_constr255 = null;
 
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:2: ( or_constr )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1254:4: or_constr
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1266:2: ( or_constr )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1266:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint4539);
-            or_constr250=or_constr();
+            pushFollow(FOLLOW_or_constr_in_constraint4658);
+            or_constr255=or_constr();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr250.getTree());
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr255.getTree());
 
             }
 
@@ -11125,65 +11240,65 @@
     };
 
     // $ANTLR start "or_constr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1260:1: or_constr : or_constr_config ( DOUBLE_PIPE and_constr )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:1: or_constr : or_constr_config ( DOUBLE_PIPE and_constr )* ;
     public final DRLParser.or_constr_return or_constr() throws RecognitionException {
         DRLParser.or_constr_return retval = new DRLParser.or_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_PIPE252=null;
-        DRLParser.or_constr_config_return or_constr_config251 = null;
+        Token DOUBLE_PIPE257=null;
+        DRLParser.or_constr_config_return or_constr_config256 = null;
 
-        DRLParser.and_constr_return and_constr253 = null;
+        DRLParser.and_constr_return and_constr258 = null;
 
 
-        Object DOUBLE_PIPE252_tree=null;
+        Object DOUBLE_PIPE257_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1261:3: ( or_constr_config ( DOUBLE_PIPE and_constr )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1262:6: or_constr_config ( DOUBLE_PIPE and_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1273:3: ( or_constr_config ( DOUBLE_PIPE and_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1274:6: or_constr_config ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_config_in_or_constr4572);
-            or_constr_config251=or_constr_config();
+            pushFollow(FOLLOW_or_constr_config_in_or_constr4691);
+            or_constr_config256=or_constr_config();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr_config251.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1264:9: ( DOUBLE_PIPE and_constr )*
-            loop92:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr_config256.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:9: ( DOUBLE_PIPE and_constr )*
+            loop93:
             do {
-                int alt92=2;
-                int LA92_0 = input.LA(1);
+                int alt93=2;
+                int LA93_0 = input.LA(1);
 
-                if ( (LA92_0==DOUBLE_PIPE) ) {
-                    alt92=1;
+                if ( (LA93_0==DOUBLE_PIPE) ) {
+                    alt93=1;
                 }
 
 
-                switch (alt92) {
+                switch (alt93) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1264:10: DOUBLE_PIPE and_constr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1276:10: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE252=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr4594); if (state.failed) return retval;
+            	    DOUBLE_PIPE257=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr4713); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_PIPE252_tree = (Object)adaptor.create(DOUBLE_PIPE252);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE252_tree, root_0);
+            	    DOUBLE_PIPE257_tree = (Object)adaptor.create(DOUBLE_PIPE257);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE257_tree, root_0);
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr4630);
-            	    and_constr253=and_constr();
+            	    pushFollow(FOLLOW_and_constr_in_or_constr4749);
+            	    and_constr258=and_constr();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr253.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr258.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop92;
+            	    break loop93;
                 }
             } while (true);
 
@@ -11216,62 +11331,62 @@
     };
 
     // $ANTLR start "or_constr_config"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1270:1: or_constr_config : ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1282:1: or_constr_config : ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr );
     public final DRLParser.or_constr_config_return or_constr_config() throws RecognitionException {
         DRLParser.or_constr_config_return retval = new DRLParser.or_constr_config_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token SINGLE_PIPE255=null;
-        DRLParser.and_constr_return and_constr254 = null;
+        Token SINGLE_PIPE260=null;
+        DRLParser.and_constr_return and_constr259 = null;
 
-        DRLParser.constr_parameters_return constr_parameters256 = null;
+        DRLParser.constr_parameters_return constr_parameters261 = null;
 
-        DRLParser.and_constr_return and_constr257 = null;
+        DRLParser.and_constr_return and_constr262 = null;
 
-        DRLParser.and_constr_return and_constr258 = null;
+        DRLParser.and_constr_return and_constr263 = null;
 
 
-        Object SINGLE_PIPE255_tree=null;
+        Object SINGLE_PIPE260_tree=null;
         RewriteRuleTokenStream stream_SINGLE_PIPE=new RewriteRuleTokenStream(adaptor,"token SINGLE_PIPE");
         RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
         RewriteRuleSubtreeStream stream_and_constr=new RewriteRuleSubtreeStream(adaptor,"rule and_constr");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1271:3: ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr )
-            int alt93=2;
-            int LA93_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1283:3: ( ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr ) | and_constr )
+            int alt94=2;
+            int LA94_0 = input.LA(1);
 
-            if ( (LA93_0==ID) ) {
-                int LA93_1 = input.LA(2);
+            if ( (LA94_0==ID) ) {
+                int LA94_1 = input.LA(2);
 
-                if ( ((synpred11_DRL()||(synpred11_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred11_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL)))))) ) {
-                    alt93=1;
+                if ( (((synpred12_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred12_DRL()||(synpred12_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL)))))) ) {
+                    alt94=1;
                 }
                 else if ( (true) ) {
-                    alt93=2;
+                    alt94=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 93, 1, input);
+                        new NoViableAltException("", 94, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA93_0==LEFT_PAREN) ) {
-                int LA93_2 = input.LA(2);
+            else if ( (LA94_0==LEFT_PAREN) ) {
+                int LA94_2 = input.LA(2);
 
-                if ( (synpred11_DRL()) ) {
-                    alt93=1;
+                if ( (synpred12_DRL()) ) {
+                    alt94=1;
                 }
                 else if ( (true) ) {
-                    alt93=2;
+                    alt94=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 93, 2, input);
+                        new NoViableAltException("", 94, 2, input);
 
                     throw nvae;
                 }
@@ -11279,39 +11394,39 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 93, 0, input);
+                    new NoViableAltException("", 94, 0, input);
 
                 throw nvae;
             }
-            switch (alt93) {
+            switch (alt94) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:5: ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1284:5: ( and_constr SINGLE_PIPE )=> and_constr SINGLE_PIPE constr_parameters and_constr
                     {
-                    pushFollow(FOLLOW_and_constr_in_or_constr_config4688);
-                    and_constr254=and_constr();
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4808);
+                    and_constr259=and_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr254.getTree());
-                    SINGLE_PIPE255=(Token)match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_or_constr_config4699); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_SINGLE_PIPE.add(SINGLE_PIPE255);
+                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr259.getTree());
+                    SINGLE_PIPE260=(Token)match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_or_constr_config4819); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SINGLE_PIPE.add(SINGLE_PIPE260);
 
-                    pushFollow(FOLLOW_constr_parameters_in_or_constr_config4748);
-                    constr_parameters256=constr_parameters();
+                    pushFollow(FOLLOW_constr_parameters_in_or_constr_config4868);
+                    constr_parameters261=constr_parameters();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters256.getTree());
-                    pushFollow(FOLLOW_and_constr_in_or_constr_config4774);
-                    and_constr257=and_constr();
+                    if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters261.getTree());
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4894);
+                    and_constr262=and_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr257.getTree());
+                    if ( state.backtracking==0 ) stream_and_constr.add(and_constr262.getTree());
 
 
                     // AST REWRITE
-                    // elements: and_constr, constr_parameters, SINGLE_PIPE, and_constr
+                    // elements: and_constr, constr_parameters, and_constr, SINGLE_PIPE
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -11321,14 +11436,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1280:7: -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
+                    // 1292:7: -> ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1280:10: ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1292:10: ^( SINGLE_PIPE ( constr_parameters )? and_constr and_constr )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_SINGLE_PIPE.nextNode(), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1282:13: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1294:13: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -11346,16 +11461,16 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1285:5: and_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1297:5: and_constr
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_and_constr_in_or_constr_config4844);
-                    and_constr258=and_constr();
+                    pushFollow(FOLLOW_and_constr_in_or_constr_config4964);
+                    and_constr263=and_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr258.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr263.getTree());
 
                     }
                     break;
@@ -11387,65 +11502,65 @@
     };
 
     // $ANTLR start "and_constr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1288:1: and_constr : and_constr_config ( DOUBLE_AMPER unary_constr )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:1: and_constr : and_constr_config ( DOUBLE_AMPER unary_constr )* ;
     public final DRLParser.and_constr_return and_constr() throws RecognitionException {
         DRLParser.and_constr_return retval = new DRLParser.and_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_AMPER260=null;
-        DRLParser.and_constr_config_return and_constr_config259 = null;
+        Token DOUBLE_AMPER265=null;
+        DRLParser.and_constr_config_return and_constr_config264 = null;
 
-        DRLParser.unary_constr_return unary_constr261 = null;
+        DRLParser.unary_constr_return unary_constr266 = null;
 
 
-        Object DOUBLE_AMPER260_tree=null;
+        Object DOUBLE_AMPER265_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1290:3: ( and_constr_config ( DOUBLE_AMPER unary_constr )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1291:11: and_constr_config ( DOUBLE_AMPER unary_constr )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:3: ( and_constr_config ( DOUBLE_AMPER unary_constr )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1303:11: and_constr_config ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_config_in_and_constr4886);
-            and_constr_config259=and_constr_config();
+            pushFollow(FOLLOW_and_constr_config_in_and_constr5006);
+            and_constr_config264=and_constr_config();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr_config259.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:11: ( DOUBLE_AMPER unary_constr )*
-            loop94:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr_config264.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1305:11: ( DOUBLE_AMPER unary_constr )*
+            loop95:
             do {
-                int alt94=2;
-                int LA94_0 = input.LA(1);
+                int alt95=2;
+                int LA95_0 = input.LA(1);
 
-                if ( (LA94_0==DOUBLE_AMPER) ) {
-                    alt94=1;
+                if ( (LA95_0==DOUBLE_AMPER) ) {
+                    alt95=1;
                 }
 
 
-                switch (alt94) {
+                switch (alt95) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1293:12: DOUBLE_AMPER unary_constr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1305:12: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER260=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr4910); if (state.failed) return retval;
+            	    DOUBLE_AMPER265=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr5030); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_AMPER260_tree = (Object)adaptor.create(DOUBLE_AMPER260);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER260_tree, root_0);
+            	    DOUBLE_AMPER265_tree = (Object)adaptor.create(DOUBLE_AMPER265);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER265_tree, root_0);
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr4949);
-            	    unary_constr261=unary_constr();
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr5069);
+            	    unary_constr266=unary_constr();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr261.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr266.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop94;
+            	    break loop95;
                 }
             } while (true);
 
@@ -11478,62 +11593,62 @@
     };
 
     // $ANTLR start "and_constr_config"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1300:1: and_constr_config : ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1312:1: and_constr_config : ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr );
     public final DRLParser.and_constr_config_return and_constr_config() throws RecognitionException {
         DRLParser.and_constr_config_return retval = new DRLParser.and_constr_config_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token SINGLE_AMPER263=null;
-        DRLParser.unary_constr_return unary_constr262 = null;
+        Token SINGLE_AMPER268=null;
+        DRLParser.unary_constr_return unary_constr267 = null;
 
-        DRLParser.constr_parameters_return constr_parameters264 = null;
+        DRLParser.constr_parameters_return constr_parameters269 = null;
 
-        DRLParser.unary_constr_return unary_constr265 = null;
+        DRLParser.unary_constr_return unary_constr270 = null;
 
-        DRLParser.unary_constr_return unary_constr266 = null;
+        DRLParser.unary_constr_return unary_constr271 = null;
 
 
-        Object SINGLE_AMPER263_tree=null;
+        Object SINGLE_AMPER268_tree=null;
         RewriteRuleTokenStream stream_SINGLE_AMPER=new RewriteRuleTokenStream(adaptor,"token SINGLE_AMPER");
         RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
         RewriteRuleSubtreeStream stream_unary_constr=new RewriteRuleSubtreeStream(adaptor,"rule unary_constr");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1301:3: ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr )
-            int alt96=2;
-            int LA96_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1313:3: ( ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr ) | unary_constr )
+            int alt97=2;
+            int LA97_0 = input.LA(1);
 
-            if ( (LA96_0==ID) ) {
-                int LA96_1 = input.LA(2);
+            if ( (LA97_0==ID) ) {
+                int LA97_1 = input.LA(2);
 
-                if ( (((synpred12_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred12_DRL())) ) {
-                    alt96=1;
+                if ( (((synpred13_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||synpred13_DRL())) ) {
+                    alt97=1;
                 }
                 else if ( (true) ) {
-                    alt96=2;
+                    alt97=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 96, 1, input);
+                        new NoViableAltException("", 97, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA96_0==LEFT_PAREN) ) {
-                int LA96_2 = input.LA(2);
+            else if ( (LA97_0==LEFT_PAREN) ) {
+                int LA97_2 = input.LA(2);
 
-                if ( (synpred12_DRL()) ) {
-                    alt96=1;
+                if ( (synpred13_DRL()) ) {
+                    alt97=1;
                 }
                 else if ( (true) ) {
-                    alt96=2;
+                    alt97=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 96, 2, input);
+                        new NoViableAltException("", 97, 2, input);
 
                     throw nvae;
                 }
@@ -11541,56 +11656,56 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 96, 0, input);
+                    new NoViableAltException("", 97, 0, input);
 
                 throw nvae;
             }
-            switch (alt96) {
+            switch (alt97) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:5: ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:5: ( unary_constr SINGLE_AMPER )=> unary_constr SINGLE_AMPER ( constr_parameters )? unary_constr
                     {
-                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5029);
-                    unary_constr262=unary_constr();
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5149);
+                    unary_constr267=unary_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr262.getTree());
-                    SINGLE_AMPER263=(Token)match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_and_constr_config5040); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_SINGLE_AMPER.add(SINGLE_AMPER263);
+                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr267.getTree());
+                    SINGLE_AMPER268=(Token)match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_and_constr_config5160); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SINGLE_AMPER.add(SINGLE_AMPER268);
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:12: ( constr_parameters )?
-                    int alt95=2;
-                    int LA95_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:12: ( constr_parameters )?
+                    int alt96=2;
+                    int LA96_0 = input.LA(1);
 
-                    if ( (LA95_0==AT) ) {
-                        alt95=1;
+                    if ( (LA96_0==AT) ) {
+                        alt96=1;
                     }
-                    switch (alt95) {
+                    switch (alt96) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1308:12: constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1320:12: constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_and_constr_config5089);
-                            constr_parameters264=constr_parameters();
+                            pushFollow(FOLLOW_constr_parameters_in_and_constr_config5209);
+                            constr_parameters269=constr_parameters();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters264.getTree());
+                            if ( state.backtracking==0 ) stream_constr_parameters.add(constr_parameters269.getTree());
 
                             }
                             break;
 
                     }
 
-                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5120);
-                    unary_constr265=unary_constr();
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5240);
+                    unary_constr270=unary_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr265.getTree());
+                    if ( state.backtracking==0 ) stream_unary_constr.add(unary_constr270.getTree());
 
 
                     // AST REWRITE
-                    // elements: constr_parameters, unary_constr, unary_constr, SINGLE_AMPER
+                    // elements: unary_constr, constr_parameters, unary_constr, SINGLE_AMPER
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -11600,14 +11715,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1310:7: -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
+                    // 1322:7: -> ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1310:10: ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1322:10: ^( SINGLE_AMPER ( constr_parameters )? unary_constr unary_constr )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_SINGLE_AMPER.nextNode(), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1312:13: ( constr_parameters )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1324:13: ( constr_parameters )?
                         if ( stream_constr_parameters.hasNext() ) {
                             adaptor.addChild(root_1, stream_constr_parameters.nextTree());
 
@@ -11625,16 +11740,16 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1315:5: unary_constr
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1327:5: unary_constr
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5201);
-                    unary_constr266=unary_constr();
+                    pushFollow(FOLLOW_unary_constr_in_and_constr_config5321);
+                    unary_constr271=unary_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr266.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr271.getTree());
 
                     }
                     break;
@@ -11666,89 +11781,89 @@
     };
 
     // $ANTLR start "unary_constr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1375:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1387:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
     public final DRLParser.unary_constr_return unary_constr() throws RecognitionException {
         DRLParser.unary_constr_return retval = new DRLParser.unary_constr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN270=null;
-        Token RIGHT_PAREN272=null;
-        DRLParser.eval_key_return eval_key267 = null;
+        Token LEFT_PAREN275=null;
+        Token RIGHT_PAREN277=null;
+        DRLParser.eval_key_return eval_key272 = null;
 
-        DRLParser.paren_chunk_return paren_chunk268 = null;
+        DRLParser.paren_chunk_return paren_chunk273 = null;
 
-        DRLParser.field_constraint_return field_constraint269 = null;
+        DRLParser.field_constraint_return field_constraint274 = null;
 
-        DRLParser.or_constr_return or_constr271 = null;
+        DRLParser.or_constr_return or_constr276 = null;
 
 
-        Object LEFT_PAREN270_tree=null;
-        Object RIGHT_PAREN272_tree=null;
+        Object LEFT_PAREN275_tree=null;
+        Object RIGHT_PAREN277_tree=null;
 
          boolean isFailed = true;	
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1379:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
-            int alt97=3;
-            alt97 = dfa97.predict(input);
-            switch (alt97) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1391:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            int alt98=3;
+            alt98 = dfa98.predict(input);
+            switch (alt98) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1379:4: eval_key paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1391:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr5250);
-                    eval_key267=eval_key();
+                    pushFollow(FOLLOW_eval_key_in_unary_constr5370);
+                    eval_key272=eval_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key267.getTree(), root_0);
-                    pushFollow(FOLLOW_paren_chunk_in_unary_constr5253);
-                    paren_chunk268=paren_chunk();
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key272.getTree(), root_0);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr5373);
+                    paren_chunk273=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk268.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk273.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1380:4: field_constraint
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1392:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr5258);
-                    field_constraint269=field_constraint();
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr5378);
+                    field_constraint274=field_constraint();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint269.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint274.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1381:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1393:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN270=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr5264); if (state.failed) return retval;
+                    LEFT_PAREN275=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr5384); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN270, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN275, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr5274);
-                    or_constr271=or_constr();
+                    pushFollow(FOLLOW_or_constr_in_unary_constr5394);
+                    or_constr276=or_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr271.getTree());
-                    RIGHT_PAREN272=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr5279); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr276.getTree());
+                    RIGHT_PAREN277=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr5399); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN272_tree = (Object)adaptor.create(RIGHT_PAREN272);
-                    adaptor.addChild(root_0, RIGHT_PAREN272_tree);
+                    RIGHT_PAREN277_tree = (Object)adaptor.create(RIGHT_PAREN277);
+                    adaptor.addChild(root_0, RIGHT_PAREN277_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN272, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN277, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -11792,7 +11907,7 @@
     };
 
     // $ANTLR start "field_constraint"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1394:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:1: field_constraint : ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) );
     public final DRLParser.field_constraint_return field_constraint() throws RecognitionException {
         DRLParser.field_constraint_return retval = new DRLParser.field_constraint_return();
         retval.start = input.LT(1);
@@ -11800,17 +11915,17 @@
         Object root_0 = null;
 
         Token arw=null;
-        DRLParser.label_return label273 = null;
+        DRLParser.label_return label278 = null;
 
-        DRLParser.accessor_path_return accessor_path274 = null;
+        DRLParser.accessor_path_return accessor_path279 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective275 = null;
+        DRLParser.or_restr_connective_return or_restr_connective280 = null;
 
-        DRLParser.paren_chunk_return paren_chunk276 = null;
+        DRLParser.paren_chunk_return paren_chunk281 = null;
 
-        DRLParser.accessor_path_return accessor_path277 = null;
+        DRLParser.accessor_path_return accessor_path282 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective278 = null;
+        DRLParser.or_restr_connective_return or_restr_connective283 = null;
 
 
         Object arw_tree=null;
@@ -11823,23 +11938,23 @@
         	boolean isArrow = false;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1397:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
-            int alt99=2;
-            int LA99_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:3: ( label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )? -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )? -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) ) | accessor_path or_restr_connective -> ^( VT_FIELD accessor_path or_restr_connective ) )
+            int alt100=2;
+            int LA100_0 = input.LA(1);
 
-            if ( (LA99_0==ID) ) {
-                int LA99_1 = input.LA(2);
+            if ( (LA100_0==ID) ) {
+                int LA100_1 = input.LA(2);
 
-                if ( (LA99_1==COLON) ) {
-                    alt99=1;
+                if ( ((LA100_1>=ID && LA100_1<=DOT)||LA100_1==LEFT_PAREN||(LA100_1>=EQUAL && LA100_1<=NOT_EQUAL)||LA100_1==LEFT_SQUARE||LA100_1==APPROX) ) {
+                    alt100=2;
                 }
-                else if ( ((LA99_1>=ID && LA99_1<=DOT)||LA99_1==LEFT_PAREN||(LA99_1>=EQUAL && LA99_1<=NOT_EQUAL)||LA99_1==LEFT_SQUARE||LA99_1==APPROX) ) {
-                    alt99=2;
+                else if ( (LA100_1==COLON) ) {
+                    alt100=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 99, 1, input);
+                        new NoViableAltException("", 100, 1, input);
 
                     throw nvae;
                 }
@@ -11847,67 +11962,67 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 99, 0, input);
+                    new NoViableAltException("", 100, 0, input);
 
                 throw nvae;
             }
-            switch (alt99) {
+            switch (alt100) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1397:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1409:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint5299);
-                    label273=label();
+                    pushFollow(FOLLOW_label_in_field_constraint5419);
+                    label278=label();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_label.add(label273.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint5301);
-                    accessor_path274=accessor_path();
+                    if ( state.backtracking==0 ) stream_label.add(label278.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5421);
+                    accessor_path279=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path274.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:3: ( or_restr_connective | arw= ARROW paren_chunk )?
-                    int alt98=3;
-                    int LA98_0 = input.LA(1);
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path279.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1410:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+                    int alt99=3;
+                    int LA99_0 = input.LA(1);
 
-                    if ( (LA98_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
-                        alt98=1;
+                    if ( (LA99_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
+                        alt99=1;
                     }
-                    else if ( (LA98_0==LEFT_PAREN||(LA98_0>=EQUAL && LA98_0<=NOT_EQUAL)||LA98_0==APPROX) ) {
-                        alt98=1;
+                    else if ( (LA99_0==LEFT_PAREN||(LA99_0>=EQUAL && LA99_0<=NOT_EQUAL)||LA99_0==APPROX) ) {
+                        alt99=1;
                     }
-                    else if ( (LA98_0==ARROW) ) {
-                        alt98=2;
+                    else if ( (LA99_0==ARROW) ) {
+                        alt99=2;
                     }
-                    switch (alt98) {
+                    switch (alt99) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:5: or_restr_connective
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1410:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint5308);
-                            or_restr_connective275=or_restr_connective();
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint5428);
+                            or_restr_connective280=or_restr_connective();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective275.getTree());
+                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective280.getTree());
 
                             }
                             break;
                         case 2 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1398:27: arw= ARROW paren_chunk
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1410:27: arw= ARROW paren_chunk
                             {
-                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint5314); if (state.failed) return retval; 
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint5434); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_ARROW.add(arw);
 
                             if ( state.backtracking==0 ) {
                               	emit(arw, DroolsEditorType.SYMBOL);	
                             }
-                            pushFollow(FOLLOW_paren_chunk_in_field_constraint5318);
-                            paren_chunk276=paren_chunk();
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint5438);
+                            paren_chunk281=paren_chunk();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk276.getTree());
+                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk281.getTree());
                             if ( state.backtracking==0 ) {
                               isArrow = true;
                             }
@@ -11920,7 +12035,7 @@
 
 
                     // AST REWRITE
-                    // elements: accessor_path, accessor_path, label, or_restr_connective, label, paren_chunk
+                    // elements: accessor_path, paren_chunk, or_restr_connective, accessor_path, label, label
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -11930,15 +12045,15 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1400:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    // 1412:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
                     if (isArrow) {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.nextTree());
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:39: ^( VT_FIELD accessor_path )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:39: ^( VT_FIELD accessor_path )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
@@ -11950,9 +12065,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
                         if ( stream_paren_chunk.hasNext() ) {
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1400:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:66: ^( VK_EVAL[$arw] paren_chunk )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VK_EVAL, arw), root_1);
@@ -11966,21 +12081,21 @@
                         stream_paren_chunk.reset();
 
                     }
-                    else // 1401:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                    else // 1413:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1401:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_BIND_FIELD, "VT_BIND_FIELD"), root_1);
 
                         adaptor.addChild(root_1, stream_label.nextTree());
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1401:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
                         {
                         Object root_2 = (Object)adaptor.nil();
                         root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_2);
 
                         adaptor.addChild(root_2, stream_accessor_path.nextTree());
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1401:53: ( or_restr_connective )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
                             adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
 
@@ -11999,20 +12114,20 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1402:4: accessor_path or_restr_connective
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1414:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint5376);
-                    accessor_path277=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint5496);
+                    accessor_path282=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path277.getTree());
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint5378);
-                    or_restr_connective278=or_restr_connective();
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path282.getTree());
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint5498);
+                    or_restr_connective283=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective278.getTree());
+                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective283.getTree());
 
 
                     // AST REWRITE
@@ -12026,9 +12141,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1403:3: -> ^( VT_FIELD accessor_path or_restr_connective )
+                    // 1415:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1403:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1415:6: ^( VT_FIELD accessor_path or_restr_connective )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_FIELD, "VT_FIELD"), root_1);
@@ -12072,7 +12187,7 @@
     };
 
     // $ANTLR start "label"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1406:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1418:1: label : value= ID COLON -> VT_LABEL[$value] ;
     public final DRLParser.label_return label() throws RecognitionException {
         DRLParser.label_return retval = new DRLParser.label_return();
         retval.start = input.LT(1);
@@ -12080,28 +12195,28 @@
         Object root_0 = null;
 
         Token value=null;
-        Token COLON279=null;
+        Token COLON284=null;
 
         Object value_tree=null;
-        Object COLON279_tree=null;
+        Object COLON284_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1407:2: (value= ID COLON -> VT_LABEL[$value] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1407:4: value= ID COLON
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1419:2: (value= ID COLON -> VT_LABEL[$value] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1419:4: value= ID COLON
             {
-            value=(Token)match(input,ID,FOLLOW_ID_in_label5405); if (state.failed) return retval; 
+            value=(Token)match(input,ID,FOLLOW_ID_in_label5525); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(value);
 
             if ( state.backtracking==0 ) {
               	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
             }
-            COLON279=(Token)match(input,COLON,FOLLOW_COLON_in_label5412); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLON.add(COLON279);
+            COLON284=(Token)match(input,COLON,FOLLOW_COLON_in_label5532); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON284);
 
             if ( state.backtracking==0 ) {
-              	emit(COLON279, DroolsEditorType.SYMBOL);	
+              	emit(COLON284, DroolsEditorType.SYMBOL);	
             }
 
 
@@ -12116,7 +12231,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1409:3: -> VT_LABEL[$value]
+            // 1421:3: -> VT_LABEL[$value]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_LABEL, value));
 
@@ -12151,78 +12266,78 @@
     };
 
     // $ANTLR start "or_restr_connective"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1412:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1424:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
     public final DRLParser.or_restr_connective_return or_restr_connective() throws RecognitionException {
         DRLParser.or_restr_connective_return retval = new DRLParser.or_restr_connective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_PIPE281=null;
-        DRLParser.and_restr_connective_return and_restr_connective280 = null;
+        Token DOUBLE_PIPE286=null;
+        DRLParser.and_restr_connective_return and_restr_connective285 = null;
 
-        DRLParser.and_restr_connective_return and_restr_connective282 = null;
+        DRLParser.and_restr_connective_return and_restr_connective287 = null;
 
 
-        Object DOUBLE_PIPE281_tree=null;
+        Object DOUBLE_PIPE286_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5433);
-            and_restr_connective280=and_restr_connective();
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5553);
+            and_restr_connective285=and_restr_connective();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective280.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
-            loop100:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective285.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+            loop101:
             do {
-                int alt100=2;
-                int LA100_0 = input.LA(1);
+                int alt101=2;
+                int LA101_0 = input.LA(1);
 
-                if ( (LA100_0==DOUBLE_PIPE) ) {
-                    int LA100_3 = input.LA(2);
+                if ( (LA101_0==DOUBLE_PIPE) ) {
+                    int LA101_3 = input.LA(2);
 
                     if ( (((validateRestr()))) ) {
-                        alt100=1;
+                        alt101=1;
                     }
 
 
                 }
 
 
-                switch (alt100) {
+                switch (alt101) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1413:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1425:26: {...}? => DOUBLE_PIPE and_restr_connective
             	    {
             	    if ( !(((validateRestr()))) ) {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "or_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_PIPE281=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective5439); if (state.failed) return retval;
+            	    DOUBLE_PIPE286=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective5559); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_PIPE281_tree = (Object)adaptor.create(DOUBLE_PIPE281);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE281_tree, root_0);
+            	    DOUBLE_PIPE286_tree = (Object)adaptor.create(DOUBLE_PIPE286);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE286_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_PIPE281, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_PIPE286, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5449);
-            	    and_restr_connective282=and_restr_connective();
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective5569);
+            	    and_restr_connective287=and_restr_connective();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective282.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective287.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop100;
+            	    break loop101;
                 }
             } while (true);
 
@@ -12260,78 +12375,78 @@
     };
 
     // $ANTLR start "and_restr_connective"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1426:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1438:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
     public final DRLParser.and_restr_connective_return and_restr_connective() throws RecognitionException {
         DRLParser.and_restr_connective_return retval = new DRLParser.and_restr_connective_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOUBLE_AMPER284=null;
-        DRLParser.constraint_expression_return constraint_expression283 = null;
+        Token DOUBLE_AMPER289=null;
+        DRLParser.constraint_expression_return constraint_expression288 = null;
 
-        DRLParser.constraint_expression_return constraint_expression285 = null;
+        DRLParser.constraint_expression_return constraint_expression290 = null;
 
 
-        Object DOUBLE_AMPER284_tree=null;
+        Object DOUBLE_AMPER289_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5470);
-            constraint_expression283=constraint_expression();
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5590);
+            constraint_expression288=constraint_expression();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression283.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:26: ({...}? => DOUBLE_AMPER constraint_expression )*
-            loop101:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression288.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+            loop102:
             do {
-                int alt101=2;
-                int LA101_0 = input.LA(1);
+                int alt102=2;
+                int LA102_0 = input.LA(1);
 
-                if ( (LA101_0==DOUBLE_AMPER) ) {
-                    int LA101_5 = input.LA(2);
+                if ( (LA102_0==DOUBLE_AMPER) ) {
+                    int LA102_5 = input.LA(2);
 
                     if ( (((validateRestr()))) ) {
-                        alt101=1;
+                        alt102=1;
                     }
 
 
                 }
 
 
-                switch (alt101) {
+                switch (alt102) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1427:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1439:27: {...}? => DOUBLE_AMPER constraint_expression
             	    {
             	    if ( !(((validateRestr()))) ) {
             	        if (state.backtracking>0) {state.failed=true; return retval;}
             	        throw new FailedPredicateException(input, "and_restr_connective", "(validateRestr())");
             	    }
-            	    DOUBLE_AMPER284=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective5476); if (state.failed) return retval;
+            	    DOUBLE_AMPER289=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective5596); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_AMPER284_tree = (Object)adaptor.create(DOUBLE_AMPER284);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER284_tree, root_0);
+            	    DOUBLE_AMPER289_tree = (Object)adaptor.create(DOUBLE_AMPER289);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER289_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_AMPER284, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_AMPER289, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5483);
-            	    constraint_expression285=constraint_expression();
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective5603);
+            	    constraint_expression290=constraint_expression();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression285.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression290.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop101;
+            	    break loop102;
                 }
             } while (true);
 
@@ -12369,76 +12484,76 @@
     };
 
     // $ANTLR start "constraint_expression"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1440:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1452:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );
     public final DRLParser.constraint_expression_return constraint_expression() throws RecognitionException {
         DRLParser.constraint_expression_return retval = new DRLParser.constraint_expression_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN291=null;
-        Token RIGHT_PAREN293=null;
+        Token LEFT_PAREN296=null;
+        Token RIGHT_PAREN298=null;
         DRLParser.constr_parameters_return ans = null;
 
-        DRLParser.compound_operator_return compound_operator286 = null;
+        DRLParser.compound_operator_return compound_operator291 = null;
 
-        DRLParser.simple_operator_return simple_operator287 = null;
+        DRLParser.simple_operator_return simple_operator292 = null;
 
-        DRLParser.expression_value_return expression_value288 = null;
+        DRLParser.expression_value_return expression_value293 = null;
 
-        DRLParser.custom_operator_return custom_operator289 = null;
+        DRLParser.custom_operator_return custom_operator294 = null;
 
-        DRLParser.expression_value_return expression_value290 = null;
+        DRLParser.expression_value_return expression_value295 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective292 = null;
+        DRLParser.or_restr_connective_return or_restr_connective297 = null;
 
 
-        Object LEFT_PAREN291_tree=null;
-        Object RIGHT_PAREN293_tree=null;
+        Object LEFT_PAREN296_tree=null;
+        Object RIGHT_PAREN298_tree=null;
         RewriteRuleSubtreeStream stream_constr_parameters=new RewriteRuleSubtreeStream(adaptor,"rule constr_parameters");
         RewriteRuleSubtreeStream stream_expression_value=new RewriteRuleSubtreeStream(adaptor,"rule expression_value");
         RewriteRuleSubtreeStream stream_custom_operator=new RewriteRuleSubtreeStream(adaptor,"rule custom_operator");
         RewriteRuleSubtreeStream stream_simple_operator=new RewriteRuleSubtreeStream(adaptor,"rule simple_operator");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1443:3: ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN )
-            int alt105=4;
-            alt105 = dfa105.predict(input);
-            switch (alt105) {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:3: ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            int alt106=4;
+            alt106 = dfa106.predict(input);
+            switch (alt106) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1443:5: compound_operator
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1455:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression5511);
-                    compound_operator286=compound_operator();
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression5631);
+                    compound_operator291=compound_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator286.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator291.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1444:4: simple_operator (ans= constr_parameters )? expression_value
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:4: simple_operator (ans= constr_parameters )? expression_value
                     {
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression5516);
-                    simple_operator287=simple_operator();
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression5636);
+                    simple_operator292=simple_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_simple_operator.add(simple_operator287.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1444:23: (ans= constr_parameters )?
-                    int alt102=2;
-                    int LA102_0 = input.LA(1);
+                    if ( state.backtracking==0 ) stream_simple_operator.add(simple_operator292.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:23: (ans= constr_parameters )?
+                    int alt103=2;
+                    int LA103_0 = input.LA(1);
 
-                    if ( (LA102_0==AT) ) {
-                        alt102=1;
+                    if ( (LA103_0==AT) ) {
+                        alt103=1;
                     }
-                    switch (alt102) {
+                    switch (alt103) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1444:23: ans= constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1456:23: ans= constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5520);
+                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5640);
                             ans=constr_parameters();
 
                             state._fsp--;
@@ -12450,16 +12565,16 @@
 
                     }
 
-                    pushFollow(FOLLOW_expression_value_in_constraint_expression5523);
-                    expression_value288=expression_value();
+                    pushFollow(FOLLOW_expression_value_in_constraint_expression5643);
+                    expression_value293=expression_value();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_expression_value.add(expression_value288.getTree());
+                    if ( state.backtracking==0 ) stream_expression_value.add(expression_value293.getTree());
 
 
                     // AST REWRITE
-                    // elements: constr_parameters, expression_value, simple_operator
+                    // elements: simple_operator, constr_parameters, expression_value
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -12469,9 +12584,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1445:5: -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )?
+                    // 1457:5: -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )?
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:8: ^( simple_operator expression_value )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:8: ^( simple_operator expression_value )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_simple_operator.nextNode(), root_1);
@@ -12480,9 +12595,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:44: ( ^( constr_parameters ) )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:44: ( ^( constr_parameters ) )?
                         if ( stream_constr_parameters.hasNext() ) {
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1445:44: ^( constr_parameters )
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1457:44: ^( constr_parameters )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot(stream_constr_parameters.nextNode(), root_1);
@@ -12499,26 +12614,26 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:4: custom_operator (ans= constr_parameters )? ( expression_value )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:4: custom_operator (ans= constr_parameters )? ( expression_value )?
                     {
-                    pushFollow(FOLLOW_custom_operator_in_constraint_expression5545);
-                    custom_operator289=custom_operator();
+                    pushFollow(FOLLOW_custom_operator_in_constraint_expression5665);
+                    custom_operator294=custom_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_custom_operator.add(custom_operator289.getTree());
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:23: (ans= constr_parameters )?
-                    int alt103=2;
-                    int LA103_0 = input.LA(1);
+                    if ( state.backtracking==0 ) stream_custom_operator.add(custom_operator294.getTree());
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:23: (ans= constr_parameters )?
+                    int alt104=2;
+                    int LA104_0 = input.LA(1);
 
-                    if ( (LA103_0==AT) ) {
-                        alt103=1;
+                    if ( (LA104_0==AT) ) {
+                        alt104=1;
                     }
-                    switch (alt103) {
+                    switch (alt104) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:23: ans= constr_parameters
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:23: ans= constr_parameters
                             {
-                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5549);
+                            pushFollow(FOLLOW_constr_parameters_in_constraint_expression5669);
                             ans=constr_parameters();
 
                             state._fsp--;
@@ -12530,23 +12645,23 @@
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:43: ( expression_value )?
-                    int alt104=2;
-                    int LA104_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:43: ( expression_value )?
+                    int alt105=2;
+                    int LA105_0 = input.LA(1);
 
-                    if ( (LA104_0==ID||(LA104_0>=STRING && LA104_0<=LEFT_PAREN)||(LA104_0>=BOOL && LA104_0<=INT)||(LA104_0>=FLOAT && LA104_0<=NULL)) ) {
-                        alt104=1;
+                    if ( (LA105_0==ID||(LA105_0>=STRING && LA105_0<=LEFT_PAREN)||(LA105_0>=BOOL && LA105_0<=INT)||(LA105_0>=FLOAT && LA105_0<=NULL)) ) {
+                        alt105=1;
                     }
-                    switch (alt104) {
+                    switch (alt105) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1446:43: expression_value
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1458:43: expression_value
                             {
-                            pushFollow(FOLLOW_expression_value_in_constraint_expression5552);
-                            expression_value290=expression_value();
+                            pushFollow(FOLLOW_expression_value_in_constraint_expression5672);
+                            expression_value295=expression_value();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_expression_value.add(expression_value290.getTree());
+                            if ( state.backtracking==0 ) stream_expression_value.add(expression_value295.getTree());
 
                             }
                             break;
@@ -12556,7 +12671,7 @@
 
 
                     // AST REWRITE
-                    // elements: constr_parameters, expression_value, custom_operator
+                    // elements: expression_value, constr_parameters, custom_operator
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -12566,14 +12681,14 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1447:5: -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )?
+                    // 1459:5: -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )?
                     {
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:8: ^( custom_operator ( expression_value )? )
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:8: ^( custom_operator ( expression_value )? )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot(stream_custom_operator.nextNode(), root_1);
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:26: ( expression_value )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:26: ( expression_value )?
                         if ( stream_expression_value.hasNext() ) {
                             adaptor.addChild(root_1, stream_expression_value.nextTree());
 
@@ -12582,9 +12697,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:45: ( ^( constr_parameters ) )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:45: ( ^( constr_parameters ) )?
                         if ( stream_constr_parameters.hasNext() ) {
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1447:45: ^( constr_parameters )
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1459:45: ^( constr_parameters )
                             {
                             Object root_1 = (Object)adaptor.nil();
                             root_1 = (Object)adaptor.becomeRoot(stream_constr_parameters.nextNode(), root_1);
@@ -12601,27 +12716,27 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1448:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1460:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN291=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression5576); if (state.failed) return retval;
+                    LEFT_PAREN296=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression5696); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN291, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN296, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression5585);
-                    or_restr_connective292=or_restr_connective();
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression5705);
+                    or_restr_connective297=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective292.getTree());
-                    RIGHT_PAREN293=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression5590); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective297.getTree());
+                    RIGHT_PAREN298=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression5710); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN293_tree = (Object)adaptor.create(RIGHT_PAREN293);
-                    adaptor.addChild(root_0, RIGHT_PAREN293_tree);
+                    RIGHT_PAREN298_tree = (Object)adaptor.create(RIGHT_PAREN298);
+                    adaptor.addChild(root_0, RIGHT_PAREN298_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN293, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN298, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -12691,88 +12806,88 @@
     };
 
     // $ANTLR start "simple_operator"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1494:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) ;
     public final DRLParser.simple_operator_return simple_operator() throws RecognitionException {
         DRLParser.simple_operator_return retval = new DRLParser.simple_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token EQUAL294=null;
-        Token GREATER295=null;
-        Token GREATER_EQUAL296=null;
-        Token LESS297=null;
-        Token LESS_EQUAL298=null;
-        Token NOT_EQUAL299=null;
+        Token EQUAL299=null;
+        Token GREATER300=null;
+        Token GREATER_EQUAL301=null;
+        Token LESS302=null;
+        Token LESS_EQUAL303=null;
+        Token NOT_EQUAL304=null;
 
-        Object EQUAL294_tree=null;
-        Object GREATER295_tree=null;
-        Object GREATER_EQUAL296_tree=null;
-        Object LESS297_tree=null;
-        Object LESS_EQUAL298_tree=null;
-        Object NOT_EQUAL299_tree=null;
+        Object EQUAL299_tree=null;
+        Object GREATER300_tree=null;
+        Object GREATER_EQUAL301_tree=null;
+        Object LESS302_tree=null;
+        Object LESS_EQUAL303_tree=null;
+        Object NOT_EQUAL304_tree=null;
 
 
           if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1498:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1510:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1511:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1499:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
-            int alt106=6;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1511:5: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL )
+            int alt107=6;
             switch ( input.LA(1) ) {
             case EQUAL:
                 {
-                alt106=1;
+                alt107=1;
                 }
                 break;
             case GREATER:
                 {
-                alt106=2;
+                alt107=2;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt106=3;
+                alt107=3;
                 }
                 break;
             case LESS:
                 {
-                alt106=4;
+                alt107=4;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt106=5;
+                alt107=5;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt106=6;
+                alt107=6;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 106, 0, input);
+                    new NoViableAltException("", 107, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt106) {
+            switch (alt107) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1500:7: EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:7: EQUAL
                     {
-                    EQUAL294=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator5633); if (state.failed) return retval;
+                    EQUAL299=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator5753); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    EQUAL294_tree = (Object)adaptor.create(EQUAL294);
-                    root_0 = (Object)adaptor.becomeRoot(EQUAL294_tree, root_0);
+                    EQUAL299_tree = (Object)adaptor.create(EQUAL299);
+                    root_0 = (Object)adaptor.becomeRoot(EQUAL299_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(EQUAL294, DroolsEditorType.SYMBOL);	
+                      	emit(EQUAL299, DroolsEditorType.SYMBOL);	
                     }
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
@@ -12782,15 +12897,15 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1506:7: GREATER
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:7: GREATER
                     {
-                    GREATER295=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator5692); if (state.failed) return retval;
+                    GREATER300=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator5812); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    GREATER295_tree = (Object)adaptor.create(GREATER295);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER295_tree, root_0);
+                    GREATER300_tree = (Object)adaptor.create(GREATER300);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER300_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(GREATER295, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER300, DroolsEditorType.SYMBOL);	
                     }
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);  
@@ -12801,15 +12916,15 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1512:7: GREATER_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1524:7: GREATER_EQUAL
                     {
-                    GREATER_EQUAL296=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator5731); if (state.failed) return retval;
+                    GREATER_EQUAL301=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator5851); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    GREATER_EQUAL296_tree = (Object)adaptor.create(GREATER_EQUAL296);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL296_tree, root_0);
+                    GREATER_EQUAL301_tree = (Object)adaptor.create(GREATER_EQUAL301);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL301_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(GREATER_EQUAL296, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER_EQUAL301, DroolsEditorType.SYMBOL);	
                     }
                     if ( state.backtracking==0 ) {
                         emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
@@ -12820,15 +12935,15 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1518:7: LESS
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:7: LESS
                     {
-                    LESS297=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator5766); if (state.failed) return retval;
+                    LESS302=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator5886); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    LESS297_tree = (Object)adaptor.create(LESS297);
-                    root_0 = (Object)adaptor.becomeRoot(LESS297_tree, root_0);
+                    LESS302_tree = (Object)adaptor.create(LESS302);
+                    root_0 = (Object)adaptor.becomeRoot(LESS302_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(LESS297, DroolsEditorType.SYMBOL);	
+                      	emit(LESS302, DroolsEditorType.SYMBOL);	
                     }
                     if ( state.backtracking==0 ) {
                         emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
@@ -12839,15 +12954,15 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1524:7: LESS_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1536:7: LESS_EQUAL
                     {
-                    LESS_EQUAL298=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator5801); if (state.failed) return retval;
+                    LESS_EQUAL303=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator5921); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    LESS_EQUAL298_tree = (Object)adaptor.create(LESS_EQUAL298);
-                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL298_tree, root_0);
+                    LESS_EQUAL303_tree = (Object)adaptor.create(LESS_EQUAL303);
+                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL303_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(LESS_EQUAL298, DroolsEditorType.SYMBOL);	
+                      	emit(LESS_EQUAL303, DroolsEditorType.SYMBOL);	
                     }
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
@@ -12858,15 +12973,15 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1530:7: NOT_EQUAL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1542:7: NOT_EQUAL
                     {
-                    NOT_EQUAL299=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator5836); if (state.failed) return retval;
+                    NOT_EQUAL304=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator5956); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    NOT_EQUAL299_tree = (Object)adaptor.create(NOT_EQUAL299);
-                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL299_tree, root_0);
+                    NOT_EQUAL304_tree = (Object)adaptor.create(NOT_EQUAL304);
+                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL304_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(NOT_EQUAL299, DroolsEditorType.SYMBOL);	
+                      	emit(NOT_EQUAL304, DroolsEditorType.SYMBOL);	
                     }
                     if ( state.backtracking==0 ) {
                        emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
@@ -12908,109 +13023,109 @@
     };
 
     // $ANTLR start "custom_operator"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1541:1: custom_operator : ( not_key )? ( approx_symb )? operator_key ( square_chunk )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1553:1: custom_operator : ( not_key )? ( approx_symb )? operator_key ( square_chunk )? ;
     public final DRLParser.custom_operator_return custom_operator() throws RecognitionException {
         DRLParser.custom_operator_return retval = new DRLParser.custom_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        DRLParser.not_key_return not_key300 = null;
+        DRLParser.not_key_return not_key305 = null;
 
-        DRLParser.approx_symb_return approx_symb301 = null;
+        DRLParser.approx_symb_return approx_symb306 = null;
 
-        DRLParser.operator_key_return operator_key302 = null;
+        DRLParser.operator_key_return operator_key307 = null;
 
-        DRLParser.square_chunk_return square_chunk303 = null;
+        DRLParser.square_chunk_return square_chunk308 = null;
 
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1542:3: ( ( not_key )? ( approx_symb )? operator_key ( square_chunk )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1543:6: ( not_key )? ( approx_symb )? operator_key ( square_chunk )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:3: ( ( not_key )? ( approx_symb )? operator_key ( square_chunk )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:6: ( not_key )? ( approx_symb )? operator_key ( square_chunk )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1543:6: ( not_key )?
-            int alt107=2;
-            int LA107_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:6: ( not_key )?
+            int alt108=2;
+            int LA108_0 = input.LA(1);
 
-            if ( (LA107_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
-                int LA107_1 = input.LA(2);
+            if ( (LA108_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
+                int LA108_1 = input.LA(2);
 
-                if ( (LA107_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
-                    alt107=1;
-                }
-                else if ( (LA107_1==ID) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
-                    int LA107_4 = input.LA(3);
+                if ( (LA108_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {
+                    int LA108_4 = input.LA(3);
 
                     if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
-                        alt107=1;
+                        alt108=1;
                     }
                 }
+                else if ( (LA108_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt108=1;
+                }
             }
-            switch (alt107) {
+            switch (alt108) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1543:6: not_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:6: not_key
                     {
-                    pushFollow(FOLLOW_not_key_in_custom_operator5908);
-                    not_key300=not_key();
+                    pushFollow(FOLLOW_not_key_in_custom_operator6028);
+                    not_key305=not_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key300.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key305.getTree());
 
                     }
                     break;
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:6: ( approx_symb )?
-            int alt108=2;
-            int LA108_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:6: ( approx_symb )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
 
-            if ( (LA108_0==APPROX) ) {
-                alt108=1;
+            if ( (LA109_0==APPROX) ) {
+                alt109=1;
             }
-            switch (alt108) {
+            switch (alt109) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1544:6: approx_symb
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1556:6: approx_symb
                     {
-                    pushFollow(FOLLOW_approx_symb_in_custom_operator5916);
-                    approx_symb301=approx_symb();
+                    pushFollow(FOLLOW_approx_symb_in_custom_operator6036);
+                    approx_symb306=approx_symb();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, approx_symb301.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, approx_symb306.getTree());
 
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_operator_key_in_custom_operator5919);
-            operator_key302=operator_key();
+            pushFollow(FOLLOW_operator_key_in_custom_operator6039);
+            operator_key307=operator_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key302.getTree(), root_0);
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:6: ( square_chunk )?
-            int alt109=2;
-            int LA109_0 = input.LA(1);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key307.getTree(), root_0);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:6: ( square_chunk )?
+            int alt110=2;
+            int LA110_0 = input.LA(1);
 
-            if ( (LA109_0==LEFT_SQUARE) ) {
-                alt109=1;
+            if ( (LA110_0==LEFT_SQUARE) ) {
+                alt110=1;
             }
-            switch (alt109) {
+            switch (alt110) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1545:6: square_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1557:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_custom_operator5927);
-                    square_chunk303=square_chunk();
+                    pushFollow(FOLLOW_square_chunk_in_custom_operator6047);
+                    square_chunk308=square_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk303.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk308.getTree());
 
                     }
                     break;
@@ -13051,55 +13166,55 @@
     };
 
     // $ANTLR start "compound_operator"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1552:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1564:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
     public final DRLParser.compound_operator_return compound_operator() throws RecognitionException {
         DRLParser.compound_operator_return retval = new DRLParser.compound_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN307=null;
-        Token COMMA309=null;
-        Token RIGHT_PAREN311=null;
-        DRLParser.in_key_return in_key304 = null;
+        Token LEFT_PAREN312=null;
+        Token COMMA314=null;
+        Token RIGHT_PAREN316=null;
+        DRLParser.in_key_return in_key309 = null;
 
-        DRLParser.not_key_return not_key305 = null;
+        DRLParser.not_key_return not_key310 = null;
 
-        DRLParser.in_key_return in_key306 = null;
+        DRLParser.in_key_return in_key311 = null;
 
-        DRLParser.expression_value_return expression_value308 = null;
+        DRLParser.expression_value_return expression_value313 = null;
 
-        DRLParser.expression_value_return expression_value310 = null;
+        DRLParser.expression_value_return expression_value315 = null;
 
 
-        Object LEFT_PAREN307_tree=null;
-        Object COMMA309_tree=null;
-        Object RIGHT_PAREN311_tree=null;
+        Object LEFT_PAREN312_tree=null;
+        Object COMMA314_tree=null;
+        Object RIGHT_PAREN316_tree=null;
 
          if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1554:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1566:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:2: ( in_key | not_key in_key )
-            int alt110=2;
-            int LA110_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:2: ( in_key | not_key in_key )
+            int alt111=2;
+            int LA111_0 = input.LA(1);
 
-            if ( (LA110_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
-                int LA110_1 = input.LA(2);
+            if ( (LA111_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {
+                int LA111_1 = input.LA(2);
 
-                if ( (LA110_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IN))))) {
-                    alt110=1;
+                if ( (LA111_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IN))))) {
+                    alt111=1;
                 }
-                else if ( (LA110_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
-                    alt110=2;
+                else if ( (LA111_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                    alt111=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 110, 1, input);
+                        new NoViableAltException("", 111, 1, input);
 
                     throw nvae;
                 }
@@ -13107,38 +13222,38 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 110, 0, input);
+                    new NoViableAltException("", 111, 0, input);
 
                 throw nvae;
             }
-            switch (alt110) {
+            switch (alt111) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:4: in_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator5972);
-                    in_key304=in_key();
+                    pushFollow(FOLLOW_in_key_in_compound_operator6092);
+                    in_key309=in_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key304.getTree(), root_0);
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key309.getTree(), root_0);
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1555:14: not_key in_key
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1567:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator5977);
-                    not_key305=not_key();
+                    pushFollow(FOLLOW_not_key_in_compound_operator6097);
+                    not_key310=not_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key305.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator5979);
-                    in_key306=in_key();
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key310.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator6099);
+                    in_key311=in_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key306.getTree(), root_0);
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key311.getTree(), root_0);
 
                     }
                     break;
@@ -13148,57 +13263,57 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN307=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator5990); if (state.failed) return retval;
+            LEFT_PAREN312=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator6110); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN307, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN312, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator5998);
-            expression_value308=expression_value();
+            pushFollow(FOLLOW_expression_value_in_compound_operator6118);
+            expression_value313=expression_value();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value308.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:21: ( COMMA expression_value )*
-            loop111:
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value313.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:21: ( COMMA expression_value )*
+            loop112:
             do {
-                int alt111=2;
-                int LA111_0 = input.LA(1);
+                int alt112=2;
+                int LA112_0 = input.LA(1);
 
-                if ( (LA111_0==COMMA) ) {
-                    alt111=1;
+                if ( (LA112_0==COMMA) ) {
+                    alt112=1;
                 }
 
 
-                switch (alt111) {
+                switch (alt112) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1558:23: COMMA expression_value
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1570:23: COMMA expression_value
             	    {
-            	    COMMA309=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator6002); if (state.failed) return retval;
+            	    COMMA314=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator6122); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA309, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA314, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator6007);
-            	    expression_value310=expression_value();
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator6127);
+            	    expression_value315=expression_value();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value310.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value315.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop111;
+            	    break loop112;
                 }
             } while (true);
 
-            RIGHT_PAREN311=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator6015); if (state.failed) return retval;
+            RIGHT_PAREN316=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator6135); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            RIGHT_PAREN311_tree = (Object)adaptor.create(RIGHT_PAREN311);
-            adaptor.addChild(root_0, RIGHT_PAREN311_tree);
+            RIGHT_PAREN316_tree = (Object)adaptor.create(RIGHT_PAREN316);
+            adaptor.addChild(root_0, RIGHT_PAREN316_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN311, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN316, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
@@ -13238,68 +13353,68 @@
     };
 
     // $ANTLR start "constr_parameters"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1578:1: constr_parameters : AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1590:1: constr_parameters : AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) ;
     public final DRLParser.constr_parameters_return constr_parameters() throws RecognitionException {
         DRLParser.constr_parameters_return retval = new DRLParser.constr_parameters_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token AT312=null;
-        Token LEFT_PAREN313=null;
-        Token RIGHT_PAREN315=null;
-        DRLParser.constr_attr_return constr_attr314 = null;
+        Token AT317=null;
+        Token LEFT_PAREN318=null;
+        Token RIGHT_PAREN320=null;
+        DRLParser.constr_attr_return constr_attr319 = null;
 
 
-        Object AT312_tree=null;
-        Object LEFT_PAREN313_tree=null;
-        Object RIGHT_PAREN315_tree=null;
+        Object AT317_tree=null;
+        Object LEFT_PAREN318_tree=null;
+        Object RIGHT_PAREN320_tree=null;
         RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_constr_attr=new RewriteRuleSubtreeStream(adaptor,"rule constr_attr");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1579:2: ( AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1580:3: AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1591:2: ( AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:3: AT LEFT_PAREN ( constr_attr )* RIGHT_PAREN
             {
-            AT312=(Token)match(input,AT,FOLLOW_AT_in_constr_parameters6050); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_AT.add(AT312);
+            AT317=(Token)match(input,AT,FOLLOW_AT_in_constr_parameters6170); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_AT.add(AT317);
 
-            LEFT_PAREN313=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constr_parameters6055); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN313);
+            LEFT_PAREN318=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constr_parameters6175); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN318);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:5: ( constr_attr )*
-            loop112:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:5: ( constr_attr )*
+            loop113:
             do {
-                int alt112=2;
-                int LA112_0 = input.LA(1);
+                int alt113=2;
+                int LA113_0 = input.LA(1);
 
-                if ( (LA112_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
-                    alt112=1;
+                if ( (LA113_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                    alt113=1;
                 }
 
 
-                switch (alt112) {
+                switch (alt113) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1582:5: constr_attr
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:5: constr_attr
             	    {
-            	    pushFollow(FOLLOW_constr_attr_in_constr_parameters6062);
-            	    constr_attr314=constr_attr();
+            	    pushFollow(FOLLOW_constr_attr_in_constr_parameters6182);
+            	    constr_attr319=constr_attr();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_constr_attr.add(constr_attr314.getTree());
+            	    if ( state.backtracking==0 ) stream_constr_attr.add(constr_attr319.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop112;
+            	    break loop113;
                 }
             } while (true);
 
-            RIGHT_PAREN315=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constr_parameters6067); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN315);
+            RIGHT_PAREN320=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constr_parameters6187); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN320);
 
 
 
@@ -13314,14 +13429,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1584:3: -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
+            // 1596:3: -> ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1584:6: ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:6: ^( VT_CONSTR_ATTRIBUTES ( constr_attr )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_CONSTR_ATTRIBUTES, "VT_CONSTR_ATTRIBUTES"), root_1);
 
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1584:29: ( constr_attr )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:29: ( constr_attr )*
                 while ( stream_constr_attr.hasNext() ) {
                     adaptor.addChild(root_1, stream_constr_attr.nextTree());
 
@@ -13362,58 +13477,58 @@
     };
 
     // $ANTLR start "constr_attr"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1590:1: constr_attr : ( c_param_id | c_param_type | c_param_args | c_param_cut | c_param_prior );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:1: constr_attr : ( c_param_id | c_param_type | c_param_args | c_param_cut | c_param_prior );
     public final DRLParser.constr_attr_return constr_attr() throws RecognitionException {
         DRLParser.constr_attr_return retval = new DRLParser.constr_attr_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        DRLParser.c_param_id_return c_param_id316 = null;
+        DRLParser.c_param_id_return c_param_id321 = null;
 
-        DRLParser.c_param_type_return c_param_type317 = null;
+        DRLParser.c_param_type_return c_param_type322 = null;
 
-        DRLParser.c_param_args_return c_param_args318 = null;
+        DRLParser.c_param_args_return c_param_args323 = null;
 
-        DRLParser.c_param_cut_return c_param_cut319 = null;
+        DRLParser.c_param_cut_return c_param_cut324 = null;
 
-        DRLParser.c_param_prior_return c_param_prior320 = null;
+        DRLParser.c_param_prior_return c_param_prior325 = null;
 
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1591:3: ( c_param_id | c_param_type | c_param_args | c_param_cut | c_param_prior )
-            int alt113=5;
-            int LA113_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1603:3: ( c_param_id | c_param_type | c_param_args | c_param_cut | c_param_prior )
+            int alt114=5;
+            int LA114_0 = input.LA(1);
 
-            if ( (LA113_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
-                int LA113_1 = input.LA(2);
+            if ( (LA114_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                int LA114_1 = input.LA(2);
 
-                if ( (LA113_1==EQUALS) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
-                    int LA113_2 = input.LA(3);
+                if ( (LA114_1==EQUALS) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                    int LA114_2 = input.LA(3);
 
-                    if ( (LA113_2==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
-                        int LA113_3 = input.LA(4);
+                    if ( (LA114_2==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.CID)))||((validateIdentifierKey(DroolsSoftKeywords.CUT)))||((validateIdentifierKey(DroolsSoftKeywords.TYPE)))||((validateIdentifierKey(DroolsSoftKeywords.ARGS)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {
+                        int LA114_3 = input.LA(4);
 
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.CID)))) ) {
-                            alt113=1;
+                            alt114=1;
                         }
                         else if ( (((validateIdentifierKey(DroolsSoftKeywords.TYPE)))) ) {
-                            alt113=2;
+                            alt114=2;
                         }
                         else if ( (((validateIdentifierKey(DroolsSoftKeywords.ARGS)))) ) {
-                            alt113=3;
+                            alt114=3;
                         }
                         else if ( (((validateIdentifierKey(DroolsSoftKeywords.CUT)))) ) {
-                            alt113=4;
+                            alt114=4;
                         }
                         else if ( (((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))) ) {
-                            alt113=5;
+                            alt114=5;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 113, 3, input);
+                                new NoViableAltException("", 114, 3, input);
 
                             throw nvae;
                         }
@@ -13421,7 +13536,7 @@
                     else {
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 113, 2, input);
+                            new NoViableAltException("", 114, 2, input);
 
                         throw nvae;
                     }
@@ -13429,7 +13544,7 @@
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 113, 1, input);
+                        new NoViableAltException("", 114, 1, input);
 
                     throw nvae;
                 }
@@ -13437,78 +13552,78 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 113, 0, input);
+                    new NoViableAltException("", 114, 0, input);
 
                 throw nvae;
             }
-            switch (alt113) {
+            switch (alt114) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1592:5: c_param_id
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1604:5: c_param_id
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_id_in_constr_attr6103);
-                    c_param_id316=c_param_id();
+                    pushFollow(FOLLOW_c_param_id_in_constr_attr6223);
+                    c_param_id321=c_param_id();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_id316.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_id321.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1593:7: c_param_type
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1605:7: c_param_type
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_type_in_constr_attr6115);
-                    c_param_type317=c_param_type();
+                    pushFollow(FOLLOW_c_param_type_in_constr_attr6235);
+                    c_param_type322=c_param_type();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_type317.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_type322.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1594:7: c_param_args
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1606:7: c_param_args
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_args_in_constr_attr6123);
-                    c_param_args318=c_param_args();
+                    pushFollow(FOLLOW_c_param_args_in_constr_attr6243);
+                    c_param_args323=c_param_args();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_args318.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_args323.getTree());
 
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1595:7: c_param_cut
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:7: c_param_cut
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_cut_in_constr_attr6131);
-                    c_param_cut319=c_param_cut();
+                    pushFollow(FOLLOW_c_param_cut_in_constr_attr6251);
+                    c_param_cut324=c_param_cut();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_cut319.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_cut324.getTree());
 
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1596:7: c_param_prior
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:7: c_param_prior
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_c_param_prior_in_constr_attr6139);
-                    c_param_prior320=c_param_prior();
+                    pushFollow(FOLLOW_c_param_prior_in_constr_attr6259);
+                    c_param_prior325=c_param_prior();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_prior320.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, c_param_prior325.getTree());
 
                     }
                     break;
@@ -13540,7 +13655,7 @@
     };
 
     // $ANTLR start "c_param_id"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1600:1: c_param_id : id_key EQUALS cid= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1612:1: c_param_id : id_key EQUALS cid= STRING ;
     public final DRLParser.c_param_id_return c_param_id() throws RecognitionException {
         DRLParser.c_param_id_return retval = new DRLParser.c_param_id_return();
         retval.start = input.LT(1);
@@ -13548,27 +13663,27 @@
         Object root_0 = null;
 
         Token cid=null;
-        Token EQUALS322=null;
-        DRLParser.id_key_return id_key321 = null;
+        Token EQUALS327=null;
+        DRLParser.id_key_return id_key326 = null;
 
 
         Object cid_tree=null;
-        Object EQUALS322_tree=null;
+        Object EQUALS327_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1601:3: ( id_key EQUALS cid= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1602:5: id_key EQUALS cid= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1613:3: ( id_key EQUALS cid= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:5: id_key EQUALS cid= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_id_key_in_c_param_id6161);
-            id_key321=id_key();
+            pushFollow(FOLLOW_id_key_in_c_param_id6281);
+            id_key326=id_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(id_key321.getTree(), root_0);
-            EQUALS322=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_id6168); if (state.failed) return retval;
-            cid=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_id6177); if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(id_key326.getTree(), root_0);
+            EQUALS327=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_id6288); if (state.failed) return retval;
+            cid=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_id6297); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             cid_tree = (Object)adaptor.create(cid);
             adaptor.addChild(root_0, cid_tree);
@@ -13602,7 +13717,7 @@
     };
 
     // $ANTLR start "c_param_type"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1607:1: c_param_type : type_key EQUALS type= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1619:1: c_param_type : type_key EQUALS type= STRING ;
     public final DRLParser.c_param_type_return c_param_type() throws RecognitionException {
         DRLParser.c_param_type_return retval = new DRLParser.c_param_type_return();
         retval.start = input.LT(1);
@@ -13610,27 +13725,27 @@
         Object root_0 = null;
 
         Token type=null;
-        Token EQUALS324=null;
-        DRLParser.type_key_return type_key323 = null;
+        Token EQUALS329=null;
+        DRLParser.type_key_return type_key328 = null;
 
 
         Object type_tree=null;
-        Object EQUALS324_tree=null;
+        Object EQUALS329_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1608:3: ( type_key EQUALS type= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1609:5: type_key EQUALS type= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1620:3: ( type_key EQUALS type= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:5: type_key EQUALS type= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_type_key_in_c_param_type6198);
-            type_key323=type_key();
+            pushFollow(FOLLOW_type_key_in_c_param_type6318);
+            type_key328=type_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(type_key323.getTree(), root_0);
-            EQUALS324=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_type6205); if (state.failed) return retval;
-            type=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_type6214); if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(type_key328.getTree(), root_0);
+            EQUALS329=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_type6325); if (state.failed) return retval;
+            type=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_type6334); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             type_tree = (Object)adaptor.create(type);
             adaptor.addChild(root_0, type_tree);
@@ -13664,7 +13779,7 @@
     };
 
     // $ANTLR start "c_param_cut"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1614:1: c_param_cut : kut_key EQUALS kut= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1626:1: c_param_cut : kut_key EQUALS kut= STRING ;
     public final DRLParser.c_param_cut_return c_param_cut() throws RecognitionException {
         DRLParser.c_param_cut_return retval = new DRLParser.c_param_cut_return();
         retval.start = input.LT(1);
@@ -13672,27 +13787,27 @@
         Object root_0 = null;
 
         Token kut=null;
-        Token EQUALS326=null;
-        DRLParser.kut_key_return kut_key325 = null;
+        Token EQUALS331=null;
+        DRLParser.kut_key_return kut_key330 = null;
 
 
         Object kut_tree=null;
-        Object EQUALS326_tree=null;
+        Object EQUALS331_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1615:3: ( kut_key EQUALS kut= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1616:5: kut_key EQUALS kut= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1627:3: ( kut_key EQUALS kut= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1628:5: kut_key EQUALS kut= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_kut_key_in_c_param_cut6237);
-            kut_key325=kut_key();
+            pushFollow(FOLLOW_kut_key_in_c_param_cut6357);
+            kut_key330=kut_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(kut_key325.getTree(), root_0);
-            EQUALS326=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_cut6244); if (state.failed) return retval;
-            kut=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_cut6253); if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(kut_key330.getTree(), root_0);
+            EQUALS331=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_cut6364); if (state.failed) return retval;
+            kut=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_cut6373); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             kut_tree = (Object)adaptor.create(kut);
             adaptor.addChild(root_0, kut_tree);
@@ -13726,7 +13841,7 @@
     };
 
     // $ANTLR start "c_param_args"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1621:1: c_param_args : args_key EQUALS pms= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1633:1: c_param_args : args_key EQUALS pms= STRING ;
     public final DRLParser.c_param_args_return c_param_args() throws RecognitionException {
         DRLParser.c_param_args_return retval = new DRLParser.c_param_args_return();
         retval.start = input.LT(1);
@@ -13734,27 +13849,27 @@
         Object root_0 = null;
 
         Token pms=null;
-        Token EQUALS328=null;
-        DRLParser.args_key_return args_key327 = null;
+        Token EQUALS333=null;
+        DRLParser.args_key_return args_key332 = null;
 
 
         Object pms_tree=null;
-        Object EQUALS328_tree=null;
+        Object EQUALS333_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1622:3: ( args_key EQUALS pms= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1623:5: args_key EQUALS pms= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1634:3: ( args_key EQUALS pms= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1635:5: args_key EQUALS pms= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_args_key_in_c_param_args6275);
-            args_key327=args_key();
+            pushFollow(FOLLOW_args_key_in_c_param_args6395);
+            args_key332=args_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(args_key327.getTree(), root_0);
-            EQUALS328=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_args6282); if (state.failed) return retval;
-            pms=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_args6291); if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(args_key332.getTree(), root_0);
+            EQUALS333=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_args6402); if (state.failed) return retval;
+            pms=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_args6411); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             pms_tree = (Object)adaptor.create(pms);
             adaptor.addChild(root_0, pms_tree);
@@ -13788,7 +13903,7 @@
     };
 
     // $ANTLR start "c_param_prior"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1628:1: c_param_prior : prior_key EQUALS pri= STRING ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1640:1: c_param_prior : prior_key EQUALS pri= STRING ;
     public final DRLParser.c_param_prior_return c_param_prior() throws RecognitionException {
         DRLParser.c_param_prior_return retval = new DRLParser.c_param_prior_return();
         retval.start = input.LT(1);
@@ -13796,27 +13911,27 @@
         Object root_0 = null;
 
         Token pri=null;
-        Token EQUALS330=null;
-        DRLParser.prior_key_return prior_key329 = null;
+        Token EQUALS335=null;
+        DRLParser.prior_key_return prior_key334 = null;
 
 
         Object pri_tree=null;
-        Object EQUALS330_tree=null;
+        Object EQUALS335_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1629:3: ( prior_key EQUALS pri= STRING )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1630:5: prior_key EQUALS pri= STRING
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1641:3: ( prior_key EQUALS pri= STRING )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1642:5: prior_key EQUALS pri= STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_prior_key_in_c_param_prior6314);
-            prior_key329=prior_key();
+            pushFollow(FOLLOW_prior_key_in_c_param_prior6434);
+            prior_key334=prior_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(prior_key329.getTree(), root_0);
-            EQUALS330=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_prior6321); if (state.failed) return retval;
-            pri=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_prior6331); if (state.failed) return retval;
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(prior_key334.getTree(), root_0);
+            EQUALS335=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_c_param_prior6441); if (state.failed) return retval;
+            pri=(Token)match(input,STRING,FOLLOW_STRING_in_c_param_prior6451); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             pri_tree = (Object)adaptor.create(pri);
             adaptor.addChild(root_0, pri_tree);
@@ -13850,7 +13965,7 @@
     };
 
     // $ANTLR start "operator_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1638:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
     public final DRLParser.operator_key_return operator_key() throws RecognitionException {
         DRLParser.operator_key_return retval = new DRLParser.operator_key_return();
         retval.start = input.LT(1);
@@ -13863,14 +13978,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1639:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1639:9: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:9: {...}? =>id= ID
             {
             if ( !(((isPluggableEvaluator(false)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "operator_key", "(isPluggableEvaluator(false))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key6371); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key6491); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -13889,7 +14004,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1641:9: -> VK_OPERATOR[$id]
+            // 1653:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -13924,7 +14039,7 @@
     };
 
     // $ANTLR start "neg_operator_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1644:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1656:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
     public final DRLParser.neg_operator_key_return neg_operator_key() throws RecognitionException {
         DRLParser.neg_operator_key_return retval = new DRLParser.neg_operator_key_return();
         retval.start = input.LT(1);
@@ -13937,14 +14052,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1645:9: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1657:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1657:9: {...}? =>id= ID
             {
             if ( !(((isPluggableEvaluator(true)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "neg_operator_key", "(isPluggableEvaluator(true))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key6416); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key6536); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -13963,7 +14078,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1647:9: -> VK_OPERATOR[$id]
+            // 1659:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -13998,33 +14113,33 @@
     };
 
     // $ANTLR start "expression_value"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1650:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1662:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
     public final DRLParser.expression_value_return expression_value() throws RecognitionException {
         DRLParser.expression_value_return retval = new DRLParser.expression_value_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        DRLParser.accessor_path_return accessor_path331 = null;
+        DRLParser.accessor_path_return accessor_path336 = null;
 
-        DRLParser.literal_constraint_return literal_constraint332 = null;
+        DRLParser.literal_constraint_return literal_constraint337 = null;
 
-        DRLParser.paren_chunk_return paren_chunk333 = null;
+        DRLParser.paren_chunk_return paren_chunk338 = null;
 
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:4: ( accessor_path | literal_constraint | paren_chunk )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1663:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1663:4: ( accessor_path | literal_constraint | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:4: ( accessor_path | literal_constraint | paren_chunk )
-            int alt114=3;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1663:4: ( accessor_path | literal_constraint | paren_chunk )
+            int alt115=3;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                alt114=1;
+                alt115=1;
                 }
                 break;
             case STRING:
@@ -14033,56 +14148,56 @@
             case FLOAT:
             case NULL:
                 {
-                alt114=2;
+                alt115=2;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt114=3;
+                alt115=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 114, 0, input);
+                    new NoViableAltException("", 115, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt114) {
+            switch (alt115) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1651:5: accessor_path
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1663:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value6453);
-                    accessor_path331=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_expression_value6573);
+                    accessor_path336=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path331.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path336.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1652:4: literal_constraint
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1664:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value6458);
-                    literal_constraint332=literal_constraint();
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value6578);
+                    literal_constraint337=literal_constraint();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint332.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint337.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1653:4: paren_chunk
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1665:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value6464);
-                    paren_chunk333=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value6584);
+                    paren_chunk338=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk333.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk338.getTree());
 
                     }
                     break;
@@ -14131,139 +14246,139 @@
     };
 
     // $ANTLR start "literal_constraint"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1667:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
     public final DRLParser.literal_constraint_return literal_constraint() throws RecognitionException {
         DRLParser.literal_constraint_return retval = new DRLParser.literal_constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token STRING334=null;
-        Token INT335=null;
-        Token FLOAT336=null;
-        Token BOOL337=null;
-        Token NULL338=null;
+        Token STRING339=null;
+        Token INT340=null;
+        Token FLOAT341=null;
+        Token BOOL342=null;
+        Token NULL343=null;
 
-        Object STRING334_tree=null;
-        Object INT335_tree=null;
-        Object FLOAT336_tree=null;
-        Object BOOL337_tree=null;
-        Object NULL338_tree=null;
+        Object STRING339_tree=null;
+        Object INT340_tree=null;
+        Object FLOAT341_tree=null;
+        Object BOOL342_tree=null;
+        Object NULL343_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1668:2: ( STRING | INT | FLOAT | BOOL | NULL )
-            int alt115=5;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            int alt116=5;
             switch ( input.LA(1) ) {
             case STRING:
                 {
-                alt115=1;
+                alt116=1;
                 }
                 break;
             case INT:
                 {
-                alt115=2;
+                alt116=2;
                 }
                 break;
             case FLOAT:
                 {
-                alt115=3;
+                alt116=3;
                 }
                 break;
             case BOOL:
                 {
-                alt115=4;
+                alt116=4;
                 }
                 break;
             case NULL:
                 {
-                alt115=5;
+                alt116=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 115, 0, input);
+                    new NoViableAltException("", 116, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt115) {
+            switch (alt116) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1668:4: STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING334=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint6483); if (state.failed) return retval;
+                    STRING339=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint6603); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    STRING334_tree = (Object)adaptor.create(STRING334);
-                    adaptor.addChild(root_0, STRING334_tree);
+                    STRING339_tree = (Object)adaptor.create(STRING339);
+                    adaptor.addChild(root_0, STRING339_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(STRING334, DroolsEditorType.STRING_CONST);	
+                      	emit(STRING339, DroolsEditorType.STRING_CONST);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1669:4: INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1681:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT335=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint6490); if (state.failed) return retval;
+                    INT340=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint6610); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    INT335_tree = (Object)adaptor.create(INT335);
-                    adaptor.addChild(root_0, INT335_tree);
+                    INT340_tree = (Object)adaptor.create(INT340);
+                    adaptor.addChild(root_0, INT340_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(INT335, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(INT340, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1670:4: FLOAT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1682:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT336=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint6497); if (state.failed) return retval;
+                    FLOAT341=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint6617); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    FLOAT336_tree = (Object)adaptor.create(FLOAT336);
-                    adaptor.addChild(root_0, FLOAT336_tree);
+                    FLOAT341_tree = (Object)adaptor.create(FLOAT341);
+                    adaptor.addChild(root_0, FLOAT341_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(FLOAT336, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(FLOAT341, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1671:4: BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1683:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL337=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint6504); if (state.failed) return retval;
+                    BOOL342=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint6624); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL337_tree = (Object)adaptor.create(BOOL337);
-                    adaptor.addChild(root_0, BOOL337_tree);
+                    BOOL342_tree = (Object)adaptor.create(BOOL342);
+                    adaptor.addChild(root_0, BOOL342_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(BOOL337, DroolsEditorType.BOOLEAN_CONST);	
+                      	emit(BOOL342, DroolsEditorType.BOOLEAN_CONST);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1672:4: NULL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL338=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint6511); if (state.failed) return retval;
+                    NULL343=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint6631); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    NULL338_tree = (Object)adaptor.create(NULL338);
-                    adaptor.addChild(root_0, NULL338_tree);
+                    NULL343_tree = (Object)adaptor.create(NULL343);
+                    adaptor.addChild(root_0, NULL343_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(NULL338, DroolsEditorType.NULL_CONST);	
+                      	emit(NULL343, DroolsEditorType.NULL_CONST);	
                     }
 
                     }
@@ -14296,7 +14411,7 @@
     };
 
     // $ANTLR start "pattern_type"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1675:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1687:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final DRLParser.pattern_type_return pattern_type() throws RecognitionException {
         DRLParser.pattern_type_return retval = new DRLParser.pattern_type_return();
         retval.start = input.LT(1);
@@ -14305,7 +14420,7 @@
 
         Token id=null;
         List list_id=null;
-        DRLParser.dimension_definition_return dimension_definition339 = null;
+        DRLParser.dimension_definition_return dimension_definition344 = null;
 
 
         Object id_tree=null;
@@ -14313,37 +14428,37 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1676:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1676:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1688:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1688:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6526); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6646); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1676:11: (id+= DOT id+= ID )*
-            loop116:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1688:11: (id+= DOT id+= ID )*
+            loop117:
             do {
-                int alt116=2;
-                int LA116_0 = input.LA(1);
+                int alt117=2;
+                int LA117_0 = input.LA(1);
 
-                if ( (LA116_0==DOT) ) {
-                    alt116=1;
+                if ( (LA117_0==DOT) ) {
+                    alt117=1;
                 }
 
 
-                switch (alt116) {
+                switch (alt117) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1676:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1688:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type6532); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type6652); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6536); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type6656); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -14354,7 +14469,7 @@
             	    break;
 
             	default :
-            	    break loop116;
+            	    break loop117;
                 }
             } while (true);
 
@@ -14362,33 +14477,33 @@
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens(list_id));	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:6: ( dimension_definition )*
-            loop117:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:6: ( dimension_definition )*
+            loop118:
             do {
-                int alt117=2;
-                int LA117_0 = input.LA(1);
+                int alt118=2;
+                int LA118_0 = input.LA(1);
 
-                if ( (LA117_0==LEFT_SQUARE) ) {
-                    alt117=1;
+                if ( (LA118_0==LEFT_SQUARE) ) {
+                    alt118=1;
                 }
 
 
-                switch (alt117) {
+                switch (alt118) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1679:6: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1691:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type6551);
-            	    dimension_definition339=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type6671);
+            	    dimension_definition344=dimension_definition();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition339.getTree());
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition344.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop117;
+            	    break loop118;
                 }
             } while (true);
 
@@ -14405,9 +14520,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1680:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 1692:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1692:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN_TYPE, "VT_PATTERN_TYPE"), root_1);
@@ -14420,7 +14535,7 @@
 
                 }
                 stream_ID.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1680:28: ( dimension_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1692:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -14461,7 +14576,7 @@
     };
 
     // $ANTLR start "data_type"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1683:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final DRLParser.data_type_return data_type() throws RecognitionException {
         DRLParser.data_type_return retval = new DRLParser.data_type_return();
         retval.start = input.LT(1);
@@ -14470,7 +14585,7 @@
 
         Token id=null;
         List list_id=null;
-        DRLParser.dimension_definition_return dimension_definition340 = null;
+        DRLParser.dimension_definition_return dimension_definition345 = null;
 
 
         Object id_tree=null;
@@ -14478,37 +14593,37 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_data_type6579); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type6699); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if (list_id==null) list_id=new ArrayList();
             list_id.add(id);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:11: (id+= DOT id+= ID )*
-            loop118:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:11: (id+= DOT id+= ID )*
+            loop119:
             do {
-                int alt118=2;
-                int LA118_0 = input.LA(1);
+                int alt119=2;
+                int LA119_0 = input.LA(1);
 
-                if ( (LA118_0==DOT) ) {
-                    alt118=1;
+                if ( (LA119_0==DOT) ) {
+                    alt119=1;
                 }
 
 
-                switch (alt118) {
+                switch (alt119) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:13: id+= DOT id+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type6585); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type6705); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_DOT.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
             	    list_id.add(id);
 
-            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type6589); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type6709); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -14519,37 +14634,37 @@
             	    break;
 
             	default :
-            	    break loop118;
+            	    break loop119;
                 }
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:31: ( dimension_definition )*
-            loop119:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:31: ( dimension_definition )*
+            loop120:
             do {
-                int alt119=2;
-                int LA119_0 = input.LA(1);
+                int alt120=2;
+                int LA120_0 = input.LA(1);
 
-                if ( (LA119_0==LEFT_SQUARE) ) {
-                    alt119=1;
+                if ( (LA120_0==LEFT_SQUARE) ) {
+                    alt120=1;
                 }
 
 
-                switch (alt119) {
+                switch (alt120) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1684:31: dimension_definition
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type6594);
-            	    dimension_definition340=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type6714);
+            	    dimension_definition345=dimension_definition();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition340.getTree());
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition345.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop119;
+            	    break loop120;
                 }
             } while (true);
 
@@ -14569,9 +14684,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1686:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 1698:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_DATA_TYPE, "VT_DATA_TYPE"), root_1);
@@ -14584,7 +14699,7 @@
 
                 }
                 stream_ID.reset();
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1686:25: ( dimension_definition )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1698:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -14625,40 +14740,40 @@
     };
 
     // $ANTLR start "dimension_definition"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1689:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
     public final DRLParser.dimension_definition_return dimension_definition() throws RecognitionException {
         DRLParser.dimension_definition_return retval = new DRLParser.dimension_definition_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_SQUARE341=null;
-        Token RIGHT_SQUARE342=null;
+        Token LEFT_SQUARE346=null;
+        Token RIGHT_SQUARE347=null;
 
-        Object LEFT_SQUARE341_tree=null;
-        Object RIGHT_SQUARE342_tree=null;
+        Object LEFT_SQUARE346_tree=null;
+        Object RIGHT_SQUARE347_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1690:4: LEFT_SQUARE RIGHT_SQUARE
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE341=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition6623); if (state.failed) return retval;
+            LEFT_SQUARE346=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition6743); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            LEFT_SQUARE341_tree = (Object)adaptor.create(LEFT_SQUARE341);
-            adaptor.addChild(root_0, LEFT_SQUARE341_tree);
+            LEFT_SQUARE346_tree = (Object)adaptor.create(LEFT_SQUARE346);
+            adaptor.addChild(root_0, LEFT_SQUARE346_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(LEFT_SQUARE341, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_SQUARE346, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE342=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition6630); if (state.failed) return retval;
+            RIGHT_SQUARE347=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition6750); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            RIGHT_SQUARE342_tree = (Object)adaptor.create(RIGHT_SQUARE342);
-            adaptor.addChild(root_0, RIGHT_SQUARE342_tree);
+            RIGHT_SQUARE347_tree = (Object)adaptor.create(RIGHT_SQUARE347);
+            adaptor.addChild(root_0, RIGHT_SQUARE347_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_SQUARE342, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_SQUARE347, DroolsEditorType.SYMBOL);	
             }
 
             }
@@ -14689,65 +14804,65 @@
     };
 
     // $ANTLR start "accessor_path"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1694:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1706:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
     public final DRLParser.accessor_path_return accessor_path() throws RecognitionException {
         DRLParser.accessor_path_return retval = new DRLParser.accessor_path_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOT344=null;
-        DRLParser.accessor_element_return accessor_element343 = null;
+        Token DOT349=null;
+        DRLParser.accessor_element_return accessor_element348 = null;
 
-        DRLParser.accessor_element_return accessor_element345 = null;
+        DRLParser.accessor_element_return accessor_element350 = null;
 
 
-        Object DOT344_tree=null;
+        Object DOT349_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_accessor_element=new RewriteRuleSubtreeStream(adaptor,"rule accessor_element");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:4: accessor_element ( DOT accessor_element )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path6644);
-            accessor_element343=accessor_element();
+            pushFollow(FOLLOW_accessor_element_in_accessor_path6764);
+            accessor_element348=accessor_element();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element343.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:21: ( DOT accessor_element )*
-            loop120:
+            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element348.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:21: ( DOT accessor_element )*
+            loop121:
             do {
-                int alt120=2;
-                int LA120_0 = input.LA(1);
+                int alt121=2;
+                int LA121_0 = input.LA(1);
 
-                if ( (LA120_0==DOT) ) {
-                    alt120=1;
+                if ( (LA121_0==DOT) ) {
+                    alt121=1;
                 }
 
 
-                switch (alt120) {
+                switch (alt121) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1695:23: DOT accessor_element
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1707:23: DOT accessor_element
             	    {
-            	    DOT344=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path6648); if (state.failed) return retval; 
-            	    if ( state.backtracking==0 ) stream_DOT.add(DOT344);
+            	    DOT349=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path6768); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(DOT349);
 
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOT344, DroolsEditorType.IDENTIFIER);	
+            	      	emit(DOT349, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path6652);
-            	    accessor_element345=accessor_element();
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path6772);
+            	    accessor_element350=accessor_element();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element345.getTree());
+            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element350.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop120;
+            	    break loop121;
                 }
             } while (true);
 
@@ -14764,9 +14879,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1696:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 1708:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1696:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1708:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_PATH, "VT_ACCESSOR_PATH"), root_1);
@@ -14814,57 +14929,57 @@
     };
 
     // $ANTLR start "accessor_element"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1699:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1711:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
     public final DRLParser.accessor_element_return accessor_element() throws RecognitionException {
         DRLParser.accessor_element_return retval = new DRLParser.accessor_element_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID346=null;
-        DRLParser.square_chunk_return square_chunk347 = null;
+        Token ID351=null;
+        DRLParser.square_chunk_return square_chunk352 = null;
 
 
-        Object ID346_tree=null;
+        Object ID351_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1700:4: ID ( square_chunk )*
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1712:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1712:4: ID ( square_chunk )*
             {
-            ID346=(Token)match(input,ID,FOLLOW_ID_in_accessor_element6676); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID346);
+            ID351=(Token)match(input,ID,FOLLOW_ID_in_accessor_element6796); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID351);
 
             if ( state.backtracking==0 ) {
-              	emit(ID346, DroolsEditorType.IDENTIFIER);	
+              	emit(ID351, DroolsEditorType.IDENTIFIER);	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:3: ( square_chunk )*
-            loop121:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:3: ( square_chunk )*
+            loop122:
             do {
-                int alt121=2;
-                int LA121_0 = input.LA(1);
+                int alt122=2;
+                int LA122_0 = input.LA(1);
 
-                if ( (LA121_0==LEFT_SQUARE) ) {
-                    alt121=1;
+                if ( (LA122_0==LEFT_SQUARE) ) {
+                    alt122=1;
                 }
 
 
-                switch (alt121) {
+                switch (alt122) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1701:3: square_chunk
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element6682);
-            	    square_chunk347=square_chunk();
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element6802);
+            	    square_chunk352=square_chunk();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk347.getTree());
+            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk352.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop121;
+            	    break loop122;
                 }
             } while (true);
 
@@ -14881,15 +14996,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1702:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 1714:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_ACCESSOR_ELEMENT, "VT_ACCESSOR_ELEMENT"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1702:30: ( square_chunk )*
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1714:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
@@ -14930,7 +15045,7 @@
     };
 
     // $ANTLR start "rhs_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1705:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1717:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
     public final DRLParser.rhs_chunk_return rhs_chunk() throws RecognitionException {
         DRLParser.rhs_chunk_return retval = new DRLParser.rhs_chunk_return();
         retval.start = input.LT(1);
@@ -14945,10 +15060,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1708:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1708:5: rc= rhs_chunk_data
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk6711);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk6831);
             rc=rhs_chunk_data();
 
             state._fsp--;
@@ -14970,7 +15085,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1709:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 1721:2: -> VT_RHS_CHUNK[$rc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_RHS_CHUNK, (rc!=null?((Token)rc.start):null), text));
 
@@ -15005,100 +15120,100 @@
     };
 
     // $ANTLR start "rhs_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1712:1: rhs_chunk_data : THEN ( not_end_key )* end_key ( SEMICOLON )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1724:1: rhs_chunk_data : THEN ( not_end_key )* end_key ( SEMICOLON )? ;
     public final DRLParser.rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
         DRLParser.rhs_chunk_data_return retval = new DRLParser.rhs_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token THEN348=null;
-        Token SEMICOLON351=null;
-        DRLParser.not_end_key_return not_end_key349 = null;
+        Token THEN353=null;
+        Token SEMICOLON356=null;
+        DRLParser.not_end_key_return not_end_key354 = null;
 
-        DRLParser.end_key_return end_key350 = null;
+        DRLParser.end_key_return end_key355 = null;
 
 
-        Object THEN348_tree=null;
-        Object SEMICOLON351_tree=null;
+        Object THEN353_tree=null;
+        Object SEMICOLON356_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1713:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1725:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN348=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data6730); if (state.failed) return retval;
+            THEN353=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data6850); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            THEN348_tree = (Object)adaptor.create(THEN348);
-            adaptor.addChild(root_0, THEN348_tree);
+            THEN353_tree = (Object)adaptor.create(THEN353);
+            adaptor.addChild(root_0, THEN353_tree);
             }
             if ( state.backtracking==0 ) {
-              	if ((THEN348!=null?THEN348.getText():null).equalsIgnoreCase("then")){
-              			emit(THEN348, DroolsEditorType.KEYWORD);
+              	if ((THEN353!=null?THEN353.getText():null).equalsIgnoreCase("then")){
+              			emit(THEN353, DroolsEditorType.KEYWORD);
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:4: ( not_end_key )*
-            loop122:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:4: ( not_end_key )*
+            loop123:
             do {
-                int alt122=2;
-                int LA122_0 = input.LA(1);
+                int alt123=2;
+                int LA123_0 = input.LA(1);
 
-                if ( (LA122_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.END)))||(!(validateIdentifierKey(DroolsSoftKeywords.END)))))) {
-                    int LA122_1 = input.LA(2);
+                if ( (LA123_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.END)))||(!(validateIdentifierKey(DroolsSoftKeywords.END)))))) {
+                    int LA123_1 = input.LA(2);
 
                     if ( ((!(validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
-                        alt122=1;
+                        alt123=1;
                     }
 
 
                 }
-                else if ( ((LA122_0>=VT_COMPILATION_UNIT && LA122_0<=SEMICOLON)||(LA122_0>=DOT && LA122_0<=MULTI_LINE_COMMENT)) && ((!(validateIdentifierKey(DroolsSoftKeywords.END))))) {
-                    alt122=1;
+                else if ( ((LA123_0>=VT_COMPILATION_UNIT && LA123_0<=SEMICOLON)||(LA123_0>=DOT && LA123_0<=MULTI_LINE_COMMENT)) && ((!(validateIdentifierKey(DroolsSoftKeywords.END))))) {
+                    alt123=1;
                 }
 
 
-                switch (alt122) {
+                switch (alt123) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1718:4: not_end_key
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:4: not_end_key
             	    {
-            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data6739);
-            	    not_end_key349=not_end_key();
+            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data6859);
+            	    not_end_key354=not_end_key();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_end_key349.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_end_key354.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop122;
+            	    break loop123;
                 }
             } while (true);
 
-            pushFollow(FOLLOW_end_key_in_rhs_chunk_data6745);
-            end_key350=end_key();
+            pushFollow(FOLLOW_end_key_in_rhs_chunk_data6865);
+            end_key355=end_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, end_key350.getTree());
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:3: ( SEMICOLON )?
-            int alt123=2;
-            int LA123_0 = input.LA(1);
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, end_key355.getTree());
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:3: ( SEMICOLON )?
+            int alt124=2;
+            int LA124_0 = input.LA(1);
 
-            if ( (LA123_0==SEMICOLON) ) {
-                alt123=1;
+            if ( (LA124_0==SEMICOLON) ) {
+                alt124=1;
             }
-            switch (alt123) {
+            switch (alt124) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1720:3: SEMICOLON
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1732:3: SEMICOLON
                     {
-                    SEMICOLON351=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data6750); if (state.failed) return retval;
+                    SEMICOLON356=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data6870); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    SEMICOLON351_tree = (Object)adaptor.create(SEMICOLON351);
-                    adaptor.addChild(root_0, SEMICOLON351_tree);
+                    SEMICOLON356_tree = (Object)adaptor.create(SEMICOLON356);
+                    adaptor.addChild(root_0, SEMICOLON356_tree);
                     }
 
                     }
@@ -15107,7 +15222,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(SEMICOLON351, DroolsEditorType.KEYWORD);	
+              	emit(SEMICOLON356, DroolsEditorType.KEYWORD);	
             }
 
             }
@@ -15138,7 +15253,7 @@
     };
 
     // $ANTLR start "curly_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1723:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1735:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
     public final DRLParser.curly_chunk_return curly_chunk() throws RecognitionException {
         DRLParser.curly_chunk_return retval = new DRLParser.curly_chunk_return();
         retval.start = input.LT(1);
@@ -15153,10 +15268,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1726:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1726:5: cc= curly_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk6769);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk6889);
             cc=curly_chunk_data(false);
 
             state._fsp--;
@@ -15178,7 +15293,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1727:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 1739:2: -> VT_CURLY_CHUNK[$cc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_CURLY_CHUNK, (cc!=null?((Token)cc.start):null), text));
 
@@ -15213,7 +15328,7 @@
     };
 
     // $ANTLR start "curly_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1730:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1742:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
     public final DRLParser.curly_chunk_data_return curly_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.curly_chunk_data_return retval = new DRLParser.curly_chunk_data_return();
         retval.start = input.LT(1);
@@ -15223,7 +15338,7 @@
         Token lc1=null;
         Token any=null;
         Token rc1=null;
-        DRLParser.curly_chunk_data_return curly_chunk_data352 = null;
+        DRLParser.curly_chunk_data_return curly_chunk_data357 = null;
 
 
         Object lc1_tree=null;
@@ -15231,12 +15346,12 @@
         Object rc1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1731:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1731:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1743:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
             {
             root_0 = (Object)adaptor.nil();
 
-            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data6792); if (state.failed) return retval;
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data6912); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
@@ -15249,23 +15364,23 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
-            loop124:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            loop125:
             do {
-                int alt124=3;
-                int LA124_0 = input.LA(1);
+                int alt125=3;
+                int LA125_0 = input.LA(1);
 
-                if ( ((LA124_0>=VT_COMPILATION_UNIT && LA124_0<=THEN)||(LA124_0>=MISC && LA124_0<=MULTI_LINE_COMMENT)) ) {
-                    alt124=1;
+                if ( ((LA125_0>=VT_COMPILATION_UNIT && LA125_0<=THEN)||(LA125_0>=MISC && LA125_0<=MULTI_LINE_COMMENT)) ) {
+                    alt125=1;
                 }
-                else if ( (LA124_0==LEFT_CURLY) ) {
-                    alt124=2;
+                else if ( (LA125_0==LEFT_CURLY) ) {
+                    alt125=2;
                 }
 
 
-                switch (alt124) {
+                switch (alt125) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=THEN)||(input.LA(1)>=MISC && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -15286,24 +15401,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1738:87: curly_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1750:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data6820);
-            	    curly_chunk_data352=curly_chunk_data(true);
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data6940);
+            	    curly_chunk_data357=curly_chunk_data(true);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data352.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data357.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop124;
+            	    break loop125;
                 }
             } while (true);
 
-            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data6831); if (state.failed) return retval;
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data6951); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
@@ -15345,7 +15460,7 @@
     };
 
     // $ANTLR start "paren_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1748:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1760:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final DRLParser.paren_chunk_return paren_chunk() throws RecognitionException {
         DRLParser.paren_chunk_return retval = new DRLParser.paren_chunk_return();
         retval.start = input.LT(1);
@@ -15360,10 +15475,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1751:5: pc= paren_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk6852);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk6972);
             pc=paren_chunk_data(false);
 
             state._fsp--;
@@ -15385,7 +15500,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1752:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1764:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -15420,7 +15535,7 @@
     };
 
     // $ANTLR start "paren_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1755:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1767:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
     public final DRLParser.paren_chunk_data_return paren_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.paren_chunk_data_return retval = new DRLParser.paren_chunk_data_return();
         retval.start = input.LT(1);
@@ -15430,7 +15545,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        DRLParser.paren_chunk_data_return paren_chunk_data353 = null;
+        DRLParser.paren_chunk_data_return paren_chunk_data358 = null;
 
 
         Object lp1_tree=null;
@@ -15438,12 +15553,12 @@
         Object rp1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1756:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1756:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1768:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1768:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data6876); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data6996); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -15456,23 +15571,23 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
-            loop125:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1775:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            loop126:
             do {
-                int alt125=3;
-                int LA125_0 = input.LA(1);
+                int alt126=3;
+                int LA126_0 = input.LA(1);
 
-                if ( ((LA125_0>=VT_COMPILATION_UNIT && LA125_0<=STRING)||LA125_0==COMMA||(LA125_0>=AT && LA125_0<=MULTI_LINE_COMMENT)) ) {
-                    alt125=1;
+                if ( ((LA126_0>=VT_COMPILATION_UNIT && LA126_0<=STRING)||LA126_0==COMMA||(LA126_0>=AT && LA126_0<=MULTI_LINE_COMMENT)) ) {
+                    alt126=1;
                 }
-                else if ( (LA125_0==LEFT_PAREN) ) {
-                    alt125=2;
+                else if ( (LA126_0==LEFT_PAREN) ) {
+                    alt126=2;
                 }
 
 
-                switch (alt125) {
+                switch (alt126) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1775:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=AT && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -15493,24 +15608,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1763:87: paren_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1775:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data6904);
-            	    paren_chunk_data353=paren_chunk_data(true);
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data7024);
+            	    paren_chunk_data358=paren_chunk_data(true);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data353.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data358.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop125;
+            	    break loop126;
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data6915); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data7035); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -15552,7 +15667,7 @@
     };
 
     // $ANTLR start "square_chunk"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1773:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1785:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
     public final DRLParser.square_chunk_return square_chunk() throws RecognitionException {
         DRLParser.square_chunk_return retval = new DRLParser.square_chunk_return();
         retval.start = input.LT(1);
@@ -15567,10 +15682,10 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1776:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1776:5: sc= square_chunk_data[false]
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk6936);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk7056);
             sc=square_chunk_data(false);
 
             state._fsp--;
@@ -15592,7 +15707,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1777:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 1789:2: -> VT_SQUARE_CHUNK[$sc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SQUARE_CHUNK, (sc!=null?((Token)sc.start):null), text));
 
@@ -15627,7 +15742,7 @@
     };
 
     // $ANTLR start "square_chunk_data"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1780:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1792:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
     public final DRLParser.square_chunk_data_return square_chunk_data(boolean isRecursive) throws RecognitionException {
         DRLParser.square_chunk_data_return retval = new DRLParser.square_chunk_data_return();
         retval.start = input.LT(1);
@@ -15637,7 +15752,7 @@
         Token ls1=null;
         Token any=null;
         Token rs1=null;
-        DRLParser.square_chunk_data_return square_chunk_data354 = null;
+        DRLParser.square_chunk_data_return square_chunk_data359 = null;
 
 
         Object ls1_tree=null;
@@ -15645,12 +15760,12 @@
         Object rs1_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1781:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1793:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data6959); if (state.failed) return retval;
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data7079); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
@@ -15663,23 +15778,23 @@
               			}	
               		
             }
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
-            loop126:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1800:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            loop127:
             do {
-                int alt126=3;
-                int LA126_0 = input.LA(1);
+                int alt127=3;
+                int LA127_0 = input.LA(1);
 
-                if ( ((LA126_0>=VT_COMPILATION_UNIT && LA126_0<=NULL)||(LA126_0>=THEN && LA126_0<=MULTI_LINE_COMMENT)) ) {
-                    alt126=1;
+                if ( ((LA127_0>=VT_COMPILATION_UNIT && LA127_0<=NULL)||(LA127_0>=THEN && LA127_0<=MULTI_LINE_COMMENT)) ) {
+                    alt127=1;
                 }
-                else if ( (LA126_0==LEFT_SQUARE) ) {
-                    alt126=2;
+                else if ( (LA127_0==LEFT_SQUARE) ) {
+                    alt127=2;
                 }
 
 
-                switch (alt126) {
+                switch (alt127) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1800:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
             	    any=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=NULL)||(input.LA(1)>=THEN && input.LA(1)<=MULTI_LINE_COMMENT) ) {
@@ -15700,24 +15815,24 @@
             	    }
             	    break;
             	case 2 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1788:88: square_chunk_data[true]
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1800:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data6986);
-            	    square_chunk_data354=square_chunk_data(true);
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data7106);
+            	    square_chunk_data359=square_chunk_data(true);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk_data354.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk_data359.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop126;
+            	    break loop127;
                 }
             } while (true);
 
-            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data6997); if (state.failed) return retval;
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data7117); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
@@ -15759,7 +15874,7 @@
     };
 
     // $ANTLR start "lock_on_active_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1798:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1810:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
     public final DRLParser.lock_on_active_key_return lock_on_active_key() throws RecognitionException {
         DRLParser.lock_on_active_key_return retval = new DRLParser.lock_on_active_key_return();
         retval.start = input.LT(1);
@@ -15784,26 +15899,26 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1801:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "lock_on_active_key", "(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, \"-\") && validateLT(5, DroolsSoftKeywords.ACTIVE))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7021); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7141); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7025); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7145); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7029); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7149); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7033); if (state.failed) return retval; 
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key7153); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis2);
 
-            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7037); if (state.failed) return retval; 
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key7157); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id3);
 
             if ( state.backtracking==0 ) {
@@ -15829,7 +15944,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1807:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 1819:3: -> VK_LOCK_ON_ACTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start), text));
 
@@ -15864,7 +15979,7 @@
     };
 
     // $ANTLR start "date_effective_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1810:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1822:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
     public final DRLParser.date_effective_key_return date_effective_key() throws RecognitionException {
         DRLParser.date_effective_key_return retval = new DRLParser.date_effective_key_return();
         retval.start = input.LT(1);
@@ -15885,20 +16000,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1813:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1825:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1825:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_effective_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7069); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7189); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key7073); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key7193); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7077); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key7197); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -15922,7 +16037,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1817:3: -> VK_DATE_EFFECTIVE[$start, text]
+            // 1829:3: -> VK_DATE_EFFECTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start), text));
 
@@ -15957,7 +16072,7 @@
     };
 
     // $ANTLR start "date_expires_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1820:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1832:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
     public final DRLParser.date_expires_key_return date_expires_key() throws RecognitionException {
         DRLParser.date_expires_key_return retval = new DRLParser.date_expires_key_return();
         retval.start = input.LT(1);
@@ -15978,20 +16093,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1823:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1823:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1835:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_expires_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EXPIRES))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7110); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7230); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key7114); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key7234); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7118); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key7238); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16015,7 +16130,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1827:3: -> VK_DATE_EXPIRES[$start, text]
+            // 1839:3: -> VK_DATE_EXPIRES[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start), text));
 
@@ -16050,7 +16165,7 @@
     };
 
     // $ANTLR start "no_loop_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1830:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1842:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
     public final DRLParser.no_loop_key_return no_loop_key() throws RecognitionException {
         DRLParser.no_loop_key_return retval = new DRLParser.no_loop_key_return();
         retval.start = input.LT(1);
@@ -16071,20 +16186,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1833:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1833:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1845:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1845:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "no_loop_key", "(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.LOOP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7150); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7270); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key7154); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key7274); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7158); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key7278); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16108,7 +16223,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1837:3: -> VK_NO_LOOP[$start, text]
+            // 1849:3: -> VK_NO_LOOP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NO_LOOP, ((Token)retval.start), text));
 
@@ -16143,7 +16258,7 @@
     };
 
     // $ANTLR start "auto_focus_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1840:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1852:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
     public final DRLParser.auto_focus_key_return auto_focus_key() throws RecognitionException {
         DRLParser.auto_focus_key_return retval = new DRLParser.auto_focus_key_return();
         retval.start = input.LT(1);
@@ -16164,20 +16279,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1843:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1855:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "auto_focus_key", "(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.FOCUS))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7190); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7310); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key7194); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key7314); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7198); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key7318); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16201,7 +16316,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1847:3: -> VK_AUTO_FOCUS[$start, text]
+            // 1859:3: -> VK_AUTO_FOCUS[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start), text));
 
@@ -16236,7 +16351,7 @@
     };
 
     // $ANTLR start "activation_group_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1850:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1862:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
     public final DRLParser.activation_group_key_return activation_group_key() throws RecognitionException {
         DRLParser.activation_group_key_return retval = new DRLParser.activation_group_key_return();
         retval.start = input.LT(1);
@@ -16257,20 +16372,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1853:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1865:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "activation_group_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7230); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7350); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key7234); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key7354); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7238); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key7358); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16294,7 +16409,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1857:3: -> VK_ACTIVATION_GROUP[$start, text]
+            // 1869:3: -> VK_ACTIVATION_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start), text));
 
@@ -16329,7 +16444,7 @@
     };
 
     // $ANTLR start "agenda_group_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1860:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1872:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
     public final DRLParser.agenda_group_key_return agenda_group_key() throws RecognitionException {
         DRLParser.agenda_group_key_return retval = new DRLParser.agenda_group_key_return();
         retval.start = input.LT(1);
@@ -16350,20 +16465,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1863:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1863:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1875:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1875:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "agenda_group_key", "(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7270); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7390); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key7274); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key7394); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7278); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key7398); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16387,7 +16502,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1867:3: -> VK_AGENDA_GROUP[$start, text]
+            // 1879:3: -> VK_AGENDA_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start), text));
 
@@ -16422,7 +16537,7 @@
     };
 
     // $ANTLR start "ruleflow_group_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1870:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1882:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
     public final DRLParser.ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
         DRLParser.ruleflow_group_key_return retval = new DRLParser.ruleflow_group_key_return();
         retval.start = input.LT(1);
@@ -16443,20 +16558,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1873:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1885:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1885:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "ruleflow_group_key", "(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7310); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7430); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key7314); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key7434); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7318); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key7438); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16480,7 +16595,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1877:3: -> VK_RULEFLOW_GROUP[$start, text]
+            // 1889:3: -> VK_RULEFLOW_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start), text));
 
@@ -16515,7 +16630,7 @@
     };
 
     // $ANTLR start "entry_point_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1880:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1892:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
     public final DRLParser.entry_point_key_return entry_point_key() throws RecognitionException {
         DRLParser.entry_point_key_return retval = new DRLParser.entry_point_key_return();
         retval.start = input.LT(1);
@@ -16536,20 +16651,20 @@
         	String text = "";
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1883:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1883:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1895:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1895:5: {...}? =>id1= ID mis1= MISC id2= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "entry_point_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.POINT))");
             }
-            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7350); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7470); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key7354); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key7474); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7358); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key7478); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -16573,7 +16688,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1887:3: -> VK_ENTRY_POINT[$start, text]
+            // 1899:3: -> VK_ENTRY_POINT[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTRY_POINT, ((Token)retval.start), text));
 
@@ -16608,7 +16723,7 @@
     };
 
     // $ANTLR start "duration_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1890:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
     public final DRLParser.duration_key_return duration_key() throws RecognitionException {
         DRLParser.duration_key_return retval = new DRLParser.duration_key_return();
         retval.start = input.LT(1);
@@ -16621,14 +16736,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1891:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DURATION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "duration_key", "(validateIdentifierKey(DroolsSoftKeywords.DURATION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key7387); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key7507); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16647,7 +16762,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1893:3: -> VK_DURATION[$id]
+            // 1905:3: -> VK_DURATION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DURATION, id));
 
@@ -16682,7 +16797,7 @@
     };
 
     // $ANTLR start "package_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1896:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1908:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
     public final DRLParser.package_key_return package_key() throws RecognitionException {
         DRLParser.package_key_return retval = new DRLParser.package_key_return();
         retval.start = input.LT(1);
@@ -16695,14 +16810,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1897:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "package_key", "(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_package_key7414); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key7534); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16721,7 +16836,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1899:3: -> VK_PACKAGE[$id]
+            // 1911:3: -> VK_PACKAGE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_PACKAGE, id));
 
@@ -16756,7 +16871,7 @@
     };
 
     // $ANTLR start "import_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1902:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
     public final DRLParser.import_key_return import_key() throws RecognitionException {
         DRLParser.import_key_return retval = new DRLParser.import_key_return();
         retval.start = input.LT(1);
@@ -16769,14 +16884,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1903:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1915:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1915:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "import_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPORT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_import_key7441); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key7561); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16795,7 +16910,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1905:3: -> VK_IMPORT[$id]
+            // 1917:3: -> VK_IMPORT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPORT, id));
 
@@ -16830,7 +16945,7 @@
     };
 
     // $ANTLR start "dialect_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1908:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1920:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
     public final DRLParser.dialect_key_return dialect_key() throws RecognitionException {
         DRLParser.dialect_key_return retval = new DRLParser.dialect_key_return();
         retval.start = input.LT(1);
@@ -16843,14 +16958,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1909:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "dialect_key", "(validateIdentifierKey(DroolsSoftKeywords.DIALECT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key7468); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key7588); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16869,7 +16984,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1911:3: -> VK_DIALECT[$id]
+            // 1923:3: -> VK_DIALECT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DIALECT, id));
 
@@ -16904,7 +17019,7 @@
     };
 
     // $ANTLR start "prior_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1914:1: prior_key : {...}? =>id= ID -> VK_PRIOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1926:1: prior_key : {...}? =>id= ID -> VK_PRIOR[$id] ;
     public final DRLParser.prior_key_return prior_key() throws RecognitionException {
         DRLParser.prior_key_return retval = new DRLParser.prior_key_return();
         retval.start = input.LT(1);
@@ -16917,14 +17032,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1915:3: ({...}? =>id= ID -> VK_PRIOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1915:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1927:3: ({...}? =>id= ID -> VK_PRIOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1927:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "prior_key", "(validateIdentifierKey(DroolsSoftKeywords.PRIOR))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_prior_key7496); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_prior_key7616); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16943,7 +17058,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1917:5: -> VK_PRIOR[$id]
+            // 1929:5: -> VK_PRIOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_PRIOR, id));
 
@@ -16978,7 +17093,7 @@
     };
 
     // $ANTLR start "entail_mode_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1920:1: entail_mode_key : {...}? =>id= ID -> VK_ENTAIL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1932:1: entail_mode_key : {...}? =>id= ID -> VK_ENTAIL[$id] ;
     public final DRLParser.entail_mode_key_return entail_mode_key() throws RecognitionException {
         DRLParser.entail_mode_key_return retval = new DRLParser.entail_mode_key_return();
         retval.start = input.LT(1);
@@ -16991,14 +17106,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:3: ({...}? =>id= ID -> VK_ENTAIL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1921:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1933:3: ({...}? =>id= ID -> VK_ENTAIL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1933:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "entail_mode_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTAIL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_entail_mode_key7529); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_entail_mode_key7649); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17017,7 +17132,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1923:5: -> VK_ENTAIL[$id]
+            // 1935:5: -> VK_ENTAIL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTAIL, id));
 
@@ -17052,7 +17167,7 @@
     };
 
     // $ANTLR start "filter_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1926:1: filter_key : {...}? =>id= ID -> VK_FILTER[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1938:1: filter_key : {...}? =>id= ID -> VK_FILTER[$id] ;
     public final DRLParser.filter_key_return filter_key() throws RecognitionException {
         DRLParser.filter_key_return retval = new DRLParser.filter_key_return();
         retval.start = input.LT(1);
@@ -17065,14 +17180,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1927:3: ({...}? =>id= ID -> VK_FILTER[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1927:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1939:3: ({...}? =>id= ID -> VK_FILTER[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1939:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FILTER)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "filter_key", "(validateIdentifierKey(DroolsSoftKeywords.FILTER))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_filter_key7562); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_filter_key7682); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17091,7 +17206,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1929:5: -> VK_FILTER[$id]
+            // 1941:5: -> VK_FILTER[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FILTER, id));
 
@@ -17126,7 +17241,7 @@
     };
 
     // $ANTLR start "salience_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1933:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1945:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
     public final DRLParser.salience_key_return salience_key() throws RecognitionException {
         DRLParser.salience_key_return retval = new DRLParser.salience_key_return();
         retval.start = input.LT(1);
@@ -17139,14 +17254,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1934:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1934:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1946:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1946:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "salience_key", "(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key7595); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key7715); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17165,7 +17280,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1936:3: -> VK_SALIENCE[$id]
+            // 1948:3: -> VK_SALIENCE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_SALIENCE, id));
 
@@ -17200,7 +17315,7 @@
     };
 
     // $ANTLR start "enabled_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1939:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1951:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
     public final DRLParser.enabled_key_return enabled_key() throws RecognitionException {
         DRLParser.enabled_key_return retval = new DRLParser.enabled_key_return();
         retval.start = input.LT(1);
@@ -17213,14 +17328,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1940:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1940:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1952:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1952:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "enabled_key", "(validateIdentifierKey(DroolsSoftKeywords.ENABLED))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key7622); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key7742); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17239,7 +17354,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1942:3: -> VK_ENABLED[$id]
+            // 1954:3: -> VK_ENABLED[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENABLED, id));
 
@@ -17274,7 +17389,7 @@
     };
 
     // $ANTLR start "attributes_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1945:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1957:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
     public final DRLParser.attributes_key_return attributes_key() throws RecognitionException {
         DRLParser.attributes_key_return retval = new DRLParser.attributes_key_return();
         retval.start = input.LT(1);
@@ -17287,14 +17402,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1946:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1946:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1958:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1958:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "attributes_key", "(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key7649); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key7769); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17313,7 +17428,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1948:3: -> VK_ATTRIBUTES[$id]
+            // 1960:3: -> VK_ATTRIBUTES[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ATTRIBUTES, id));
 
@@ -17348,7 +17463,7 @@
     };
 
     // $ANTLR start "rule_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1951:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1963:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
     public final DRLParser.rule_key_return rule_key() throws RecognitionException {
         DRLParser.rule_key_return retval = new DRLParser.rule_key_return();
         retval.start = input.LT(1);
@@ -17361,14 +17476,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1952:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1952:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1964:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1964:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RULE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "rule_key", "(validateIdentifierKey(DroolsSoftKeywords.RULE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key7676); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key7796); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17387,7 +17502,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1954:3: -> VK_RULE[$id]
+            // 1966:3: -> VK_RULE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULE, id));
 
@@ -17422,7 +17537,7 @@
     };
 
     // $ANTLR start "extend_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1957:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1969:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
     public final DRLParser.extend_key_return extend_key() throws RecognitionException {
         DRLParser.extend_key_return retval = new DRLParser.extend_key_return();
         retval.start = input.LT(1);
@@ -17435,14 +17550,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1958:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1958:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1970:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1970:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "extend_key", "(validateIdentifierKey(DroolsSoftKeywords.EXTEND))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key7703); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key7823); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17461,7 +17576,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1960:3: -> VK_EXTEND[$id]
+            // 1972:3: -> VK_EXTEND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXTEND, id));
 
@@ -17496,7 +17611,7 @@
     };
 
     // $ANTLR start "template_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1963:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1975:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
     public final DRLParser.template_key_return template_key() throws RecognitionException {
         DRLParser.template_key_return retval = new DRLParser.template_key_return();
         retval.start = input.LT(1);
@@ -17509,14 +17624,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1964:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1964:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1976:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1976:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "template_key", "(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_template_key7730); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key7850); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17535,7 +17650,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1966:3: -> VK_TEMPLATE[$id]
+            // 1978:3: -> VK_TEMPLATE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_TEMPLATE, id));
 
@@ -17570,7 +17685,7 @@
     };
 
     // $ANTLR start "query_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1969:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1981:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
     public final DRLParser.query_key_return query_key() throws RecognitionException {
         DRLParser.query_key_return retval = new DRLParser.query_key_return();
         retval.start = input.LT(1);
@@ -17583,14 +17698,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1970:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1970:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1982:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1982:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "query_key", "(validateIdentifierKey(DroolsSoftKeywords.QUERY))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_query_key7757); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key7877); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17609,7 +17724,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1972:3: -> VK_QUERY[$id]
+            // 1984:3: -> VK_QUERY[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_QUERY, id));
 
@@ -17644,7 +17759,7 @@
     };
 
     // $ANTLR start "declare_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1975:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1987:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
     public final DRLParser.declare_key_return declare_key() throws RecognitionException {
         DRLParser.declare_key_return retval = new DRLParser.declare_key_return();
         retval.start = input.LT(1);
@@ -17657,14 +17772,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1976:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1976:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1988:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1988:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "declare_key", "(validateIdentifierKey(DroolsSoftKeywords.DECLARE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key7784); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key7904); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17683,7 +17798,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1978:3: -> VK_DECLARE[$id]
+            // 1990:3: -> VK_DECLARE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DECLARE, id));
 
@@ -17718,7 +17833,7 @@
     };
 
     // $ANTLR start "function_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1981:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1993:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
     public final DRLParser.function_key_return function_key() throws RecognitionException {
         DRLParser.function_key_return retval = new DRLParser.function_key_return();
         retval.start = input.LT(1);
@@ -17731,14 +17846,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1982:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1982:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1994:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1994:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "function_key", "(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_function_key7811); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key7931); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17757,7 +17872,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1984:3: -> VK_FUNCTION[$id]
+            // 1996:3: -> VK_FUNCTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FUNCTION, id));
 
@@ -17792,7 +17907,7 @@
     };
 
     // $ANTLR start "global_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1987:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1999:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
     public final DRLParser.global_key_return global_key() throws RecognitionException {
         DRLParser.global_key_return retval = new DRLParser.global_key_return();
         retval.start = input.LT(1);
@@ -17805,14 +17920,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1988:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1988:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2000:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2000:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "global_key", "(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_global_key7838); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key7958); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17831,7 +17946,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1990:3: -> VK_GLOBAL[$id]
+            // 2002:3: -> VK_GLOBAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_GLOBAL, id));
 
@@ -17866,7 +17981,7 @@
     };
 
     // $ANTLR start "eval_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1993:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2005:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
     public final DRLParser.eval_key_return eval_key() throws RecognitionException {
         DRLParser.eval_key_return retval = new DRLParser.eval_key_return();
         retval.start = input.LT(1);
@@ -17879,14 +17994,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1994:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1994:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2006:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2006:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "eval_key", "(validateIdentifierKey(DroolsSoftKeywords.EVAL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key7865); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key7985); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17905,7 +18020,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1996:3: -> VK_EVAL[$id]
+            // 2008:3: -> VK_EVAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EVAL, id));
 
@@ -17940,7 +18055,7 @@
     };
 
     // $ANTLR start "not_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1999:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2011:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
     public final DRLParser.not_key_return not_key() throws RecognitionException {
         DRLParser.not_key_return retval = new DRLParser.not_key_return();
         retval.start = input.LT(1);
@@ -17953,14 +18068,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2000:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2000:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2012:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2012:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "not_key", "(validateIdentifierKey(DroolsSoftKeywords.NOT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_not_key7892); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key8012); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -17979,7 +18094,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2002:3: -> VK_NOT[$id]
+            // 2014:3: -> VK_NOT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NOT, id));
 
@@ -18014,7 +18129,7 @@
     };
 
     // $ANTLR start "in_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2005:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2017:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
     public final DRLParser.in_key_return in_key() throws RecognitionException {
         DRLParser.in_key_return retval = new DRLParser.in_key_return();
         retval.start = input.LT(1);
@@ -18027,14 +18142,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2006:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2006:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2018:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2018:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "in_key", "(validateIdentifierKey(DroolsSoftKeywords.IN))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_in_key7919); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key8039); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18053,7 +18168,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2008:3: -> VK_IN[$id]
+            // 2020:3: -> VK_IN[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IN, id));
 
@@ -18088,7 +18203,7 @@
     };
 
     // $ANTLR start "or_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2011:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2023:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
     public final DRLParser.or_key_return or_key() throws RecognitionException {
         DRLParser.or_key_return retval = new DRLParser.or_key_return();
         retval.start = input.LT(1);
@@ -18101,14 +18216,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2012:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2012:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2024:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2024:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "or_key", "(validateIdentifierKey(DroolsSoftKeywords.OR))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_or_key7946); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key8066); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18127,7 +18242,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2014:3: -> VK_OR[$id]
+            // 2026:3: -> VK_OR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OR, id));
 
@@ -18162,7 +18277,7 @@
     };
 
     // $ANTLR start "and_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2017:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2029:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
     public final DRLParser.and_key_return and_key() throws RecognitionException {
         DRLParser.and_key_return retval = new DRLParser.and_key_return();
         retval.start = input.LT(1);
@@ -18175,14 +18290,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2018:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2018:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2030:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2030:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "and_key", "(validateIdentifierKey(DroolsSoftKeywords.AND))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_and_key7973); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key8093); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18201,7 +18316,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2020:3: -> VK_AND[$id]
+            // 2032:3: -> VK_AND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AND, id));
 
@@ -18236,7 +18351,7 @@
     };
 
     // $ANTLR start "equiv_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2023:1: equiv_key : {...}? =>id= ID -> VK_EQUIV[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2035:1: equiv_key : {...}? =>id= ID -> VK_EQUIV[$id] ;
     public final DRLParser.equiv_key_return equiv_key() throws RecognitionException {
         DRLParser.equiv_key_return retval = new DRLParser.equiv_key_return();
         retval.start = input.LT(1);
@@ -18249,14 +18364,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2024:3: ({...}? =>id= ID -> VK_EQUIV[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2024:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2036:3: ({...}? =>id= ID -> VK_EQUIV[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2036:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EQUIV)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "equiv_key", "(validateIdentifierKey(DroolsSoftKeywords.EQUIV))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_equiv_key8003); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_equiv_key8123); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18275,7 +18390,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2026:5: -> VK_EQUIV[$id]
+            // 2038:5: -> VK_EQUIV[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EQUIV, id));
 
@@ -18310,7 +18425,7 @@
     };
 
     // $ANTLR start "xor_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2029:1: xor_key : {...}? =>id= ID -> VK_XOR[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2041:1: xor_key : {...}? =>id= ID -> VK_XOR[$id] ;
     public final DRLParser.xor_key_return xor_key() throws RecognitionException {
         DRLParser.xor_key_return retval = new DRLParser.xor_key_return();
         retval.start = input.LT(1);
@@ -18323,14 +18438,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2030:3: ({...}? =>id= ID -> VK_XOR[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2030:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2042:3: ({...}? =>id= ID -> VK_XOR[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2042:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.XOR)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "xor_key", "(validateIdentifierKey(DroolsSoftKeywords.XOR))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_xor_key8039); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_xor_key8159); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18349,7 +18464,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2032:5: -> VK_XOR[$id]
+            // 2044:5: -> VK_XOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_XOR, id));
 
@@ -18378,13 +18493,87 @@
     }
     // $ANTLR end "xor_key"
 
+    public static class implies_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "implies_key"
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2047:1: implies_key : {...}? =>id= ID -> VK_IMPLIES[$id] ;
+    public final DRLParser.implies_key_return implies_key() throws RecognitionException {
+        DRLParser.implies_key_return retval = new DRLParser.implies_key_return();
+        retval.start = input.LT(1);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2048:3: ({...}? =>id= ID -> VK_IMPLIES[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2048:5: {...}? =>id= ID
+            {
+            if ( !(((validateIdentifierKey(DroolsSoftKeywords.IMPLIES)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "implies_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPLIES))");
+            }
+            id=(Token)match(input,ID,FOLLOW_ID_in_implies_key8194); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(id);
+
+            if ( state.backtracking==0 ) {
+               emit(id, DroolsEditorType.KEYWORD);  
+            }
+
+
+            // AST REWRITE
+            // elements: 
+            // token labels: 
+            // rule labels: retval
+            // token list labels: 
+            // rule list labels: 
+            if ( state.backtracking==0 ) {
+            retval.tree = root_0;
+            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
+
+            root_0 = (Object)adaptor.nil();
+            // 2050:5: -> VK_IMPLIES[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPLIES, id));
+
+            }
+
+            retval.tree = root_0;}
+            }
+
+            retval.stop = input.LT(-1);
+
+            if ( state.backtracking==0 ) {
+
+            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
+            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+
+        }
+        finally {
+        }
+        return retval;
+    }
+    // $ANTLR end "implies_key"
+
     public static class exists_key_return extends ParserRuleReturnScope {
         Object tree;
         public Object getTree() { return tree; }
     };
 
     // $ANTLR start "exists_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2036:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2054:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
     public final DRLParser.exists_key_return exists_key() throws RecognitionException {
         DRLParser.exists_key_return retval = new DRLParser.exists_key_return();
         retval.start = input.LT(1);
@@ -18397,14 +18586,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2037:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2037:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2055:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2055:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "exists_key", "(validateIdentifierKey(DroolsSoftKeywords.EXISTS))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key8075); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key8234); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18423,7 +18612,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2039:3: -> VK_EXISTS[$id]
+            // 2057:3: -> VK_EXISTS[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXISTS, id));
 
@@ -18458,7 +18647,7 @@
     };
 
     // $ANTLR start "forall_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2042:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2060:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
     public final DRLParser.forall_key_return forall_key() throws RecognitionException {
         DRLParser.forall_key_return retval = new DRLParser.forall_key_return();
         retval.start = input.LT(1);
@@ -18471,14 +18660,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2043:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2043:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORALL)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "forall_key", "(validateIdentifierKey(DroolsSoftKeywords.FORALL))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key8102); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key8261); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18497,7 +18686,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2045:3: -> VK_FORALL[$id]
+            // 2063:3: -> VK_FORALL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FORALL, id));
 
@@ -18532,7 +18721,7 @@
     };
 
     // $ANTLR start "forany_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2048:1: forany_key : {...}? =>id= ID -> VK_FORANY[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2066:1: forany_key : {...}? =>id= ID -> VK_FORANY[$id] ;
     public final DRLParser.forany_key_return forany_key() throws RecognitionException {
         DRLParser.forany_key_return retval = new DRLParser.forany_key_return();
         retval.start = input.LT(1);
@@ -18545,14 +18734,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2049:3: ({...}? =>id= ID -> VK_FORANY[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2049:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2067:3: ({...}? =>id= ID -> VK_FORANY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2067:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.FORANY)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "forany_key", "(validateIdentifierKey(DroolsSoftKeywords.FORANY))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_forany_key8131); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_forany_key8290); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18571,7 +18760,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2051:5: -> VK_FORANY[$id]
+            // 2069:5: -> VK_FORANY[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FORANY, id));
 
@@ -18606,7 +18795,7 @@
     };
 
     // $ANTLR start "action_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2054:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2072:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
     public final DRLParser.action_key_return action_key() throws RecognitionException {
         DRLParser.action_key_return retval = new DRLParser.action_key_return();
         retval.start = input.LT(1);
@@ -18619,14 +18808,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2055:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2055:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2073:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2073:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ACTION)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "action_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTION))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_action_key8164); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key8323); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18645,7 +18834,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2057:3: -> VK_ACTION[$id]
+            // 2075:3: -> VK_ACTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTION, id));
 
@@ -18680,7 +18869,7 @@
     };
 
     // $ANTLR start "reverse_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2060:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2078:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
     public final DRLParser.reverse_key_return reverse_key() throws RecognitionException {
         DRLParser.reverse_key_return retval = new DRLParser.reverse_key_return();
         retval.start = input.LT(1);
@@ -18693,14 +18882,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2061:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2079:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2079:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "reverse_key", "(validateIdentifierKey(DroolsSoftKeywords.REVERSE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key8191); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key8350); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18719,7 +18908,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2063:3: -> VK_REVERSE[$id]
+            // 2081:3: -> VK_REVERSE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_REVERSE, id));
 
@@ -18754,7 +18943,7 @@
     };
 
     // $ANTLR start "result_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2066:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2084:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
     public final DRLParser.result_key_return result_key() throws RecognitionException {
         DRLParser.result_key_return retval = new DRLParser.result_key_return();
         retval.start = input.LT(1);
@@ -18767,14 +18956,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2067:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2067:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2085:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2085:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "result_key", "(validateIdentifierKey(DroolsSoftKeywords.RESULT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_result_key8218); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key8377); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18793,7 +18982,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2069:3: -> VK_RESULT[$id]
+            // 2087:3: -> VK_RESULT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RESULT, id));
 
@@ -18828,7 +19017,7 @@
     };
 
     // $ANTLR start "end_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2072:1: end_key : {...}? =>id= ID -> VK_END[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2090:1: end_key : {...}? =>id= ID -> VK_END[$id] ;
     public final DRLParser.end_key_return end_key() throws RecognitionException {
         DRLParser.end_key_return retval = new DRLParser.end_key_return();
         retval.start = input.LT(1);
@@ -18841,14 +19030,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2073:2: ({...}? =>id= ID -> VK_END[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2073:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2091:2: ({...}? =>id= ID -> VK_END[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2091:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "end_key", "(validateIdentifierKey(DroolsSoftKeywords.END))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_end_key8245); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_end_key8404); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -18867,7 +19056,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2075:3: -> VK_END[$id]
+            // 2093:3: -> VK_END[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_END, id));
 
@@ -18902,7 +19091,7 @@
     };
 
     // $ANTLR start "not_end_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2078:1: not_end_key : {...}? =>any= . ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2096:1: not_end_key : {...}? =>any= . ;
     public final DRLParser.not_end_key_return not_end_key() throws RecognitionException {
         DRLParser.not_end_key_return retval = new DRLParser.not_end_key_return();
         retval.start = input.LT(1);
@@ -18914,8 +19103,8 @@
         Object any_tree=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2079:2: ({...}? =>any= . )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2079:4: {...}? =>any= .
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2097:2: ({...}? =>any= . )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2097:4: {...}? =>any= .
             {
             root_0 = (Object)adaptor.nil();
 
@@ -18961,7 +19150,7 @@
     };
 
     // $ANTLR start "init_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2083:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2101:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
     public final DRLParser.init_key_return init_key() throws RecognitionException {
         DRLParser.init_key_return retval = new DRLParser.init_key_return();
         retval.start = input.LT(1);
@@ -18974,14 +19163,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2084:2: ({...}? =>id= ID -> VK_INIT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2084:4: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2102:2: ({...}? =>id= ID -> VK_INIT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2102:4: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.INIT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "init_key", "(validateIdentifierKey(DroolsSoftKeywords.INIT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_init_key8292); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_init_key8451); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19000,7 +19189,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2086:3: -> VK_INIT[$id]
+            // 2104:3: -> VK_INIT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_INIT, id));
 
@@ -19035,7 +19224,7 @@
     };
 
     // $ANTLR start "subject_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2090:1: subject_key : {...}? =>id= ID -> VK_SUBJECT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2108:1: subject_key : {...}? =>id= ID -> VK_SUBJECT[$id] ;
     public final DRLParser.subject_key_return subject_key() throws RecognitionException {
         DRLParser.subject_key_return retval = new DRLParser.subject_key_return();
         retval.start = input.LT(1);
@@ -19048,14 +19237,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2091:3: ({...}? =>id= ID -> VK_SUBJECT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2091:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2109:3: ({...}? =>id= ID -> VK_SUBJECT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2109:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.SUBJECT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "subject_key", "(validateIdentifierKey(DroolsSoftKeywords.SUBJECT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_subject_key8323); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_subject_key8482); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19074,7 +19263,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2093:5: -> VK_SUBJECT[$id]
+            // 2111:5: -> VK_SUBJECT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_SUBJECT, id));
 
@@ -19109,7 +19298,7 @@
     };
 
     // $ANTLR start "weight_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2097:1: weight_key : {...}? =>id= ID -> VK_WEIGHT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2115:1: weight_key : {...}? =>id= ID -> VK_WEIGHT[$id] ;
     public final DRLParser.weight_key_return weight_key() throws RecognitionException {
         DRLParser.weight_key_return retval = new DRLParser.weight_key_return();
         retval.start = input.LT(1);
@@ -19122,14 +19311,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2098:3: ({...}? =>id= ID -> VK_WEIGHT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2098:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2116:3: ({...}? =>id= ID -> VK_WEIGHT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2116:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.WEIGHT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "weight_key", "(validateIdentifierKey(DroolsSoftKeywords.WEIGHT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_weight_key8361); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_weight_key8520); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19148,7 +19337,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2100:5: -> VK_WEIGHT[$id]
+            // 2118:5: -> VK_WEIGHT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_WEIGHT, id));
 
@@ -19183,7 +19372,7 @@
     };
 
     // $ANTLR start "very_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2104:1: very_key : {...}? =>id= ID -> VK_VERY[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2122:1: very_key : {...}? =>id= ID -> VK_VERY[$id] ;
     public final DRLParser.very_key_return very_key() throws RecognitionException {
         DRLParser.very_key_return retval = new DRLParser.very_key_return();
         retval.start = input.LT(1);
@@ -19196,14 +19385,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2105:3: ({...}? =>id= ID -> VK_VERY[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2105:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2123:3: ({...}? =>id= ID -> VK_VERY[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2123:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.VERY)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "very_key", "(validateIdentifierKey(DroolsSoftKeywords.VERY))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_very_key8400); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_very_key8559); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19222,7 +19411,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2107:5: -> VK_VERY[$id]
+            // 2125:5: -> VK_VERY[$id]
             {
             }
 
@@ -19255,7 +19444,7 @@
     };
 
     // $ANTLR start "id_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2121:1: id_key : {...}? =>id= ID -> VK_CONSTRID[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2139:1: id_key : {...}? =>id= ID -> VK_CONSTRID[$id] ;
     public final DRLParser.id_key_return id_key() throws RecognitionException {
         DRLParser.id_key_return retval = new DRLParser.id_key_return();
         retval.start = input.LT(1);
@@ -19268,14 +19457,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2122:3: ({...}? =>id= ID -> VK_CONSTRID[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2122:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2140:3: ({...}? =>id= ID -> VK_CONSTRID[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2140:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.CID)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "id_key", "(validateIdentifierKey(DroolsSoftKeywords.CID))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_id_key8450); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_id_key8609); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19294,7 +19483,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2124:5: -> VK_CONSTRID[$id]
+            // 2142:5: -> VK_CONSTRID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_CONSTRID, id));
 
@@ -19329,7 +19518,7 @@
     };
 
     // $ANTLR start "kut_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2127:1: kut_key : {...}? =>id= ID -> VK_CUT[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2145:1: kut_key : {...}? =>id= ID -> VK_CUT[$id] ;
     public final DRLParser.kut_key_return kut_key() throws RecognitionException {
         DRLParser.kut_key_return retval = new DRLParser.kut_key_return();
         retval.start = input.LT(1);
@@ -19342,14 +19531,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2128:3: ({...}? =>id= ID -> VK_CUT[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2128:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2146:3: ({...}? =>id= ID -> VK_CUT[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2146:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.CUT)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "kut_key", "(validateIdentifierKey(DroolsSoftKeywords.CUT))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_kut_key8498); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_kut_key8657); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19368,7 +19557,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2130:5: -> VK_CUT[$id]
+            // 2148:5: -> VK_CUT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_CUT, id));
 
@@ -19403,7 +19592,7 @@
     };
 
     // $ANTLR start "type_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2133:1: type_key : {...}? =>id= ID -> VK_TYPE[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2151:1: type_key : {...}? =>id= ID -> VK_TYPE[$id] ;
     public final DRLParser.type_key_return type_key() throws RecognitionException {
         DRLParser.type_key_return retval = new DRLParser.type_key_return();
         retval.start = input.LT(1);
@@ -19416,14 +19605,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2134:3: ({...}? =>id= ID -> VK_TYPE[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2134:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2152:3: ({...}? =>id= ID -> VK_TYPE[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2152:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.TYPE)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "type_key", "(validateIdentifierKey(DroolsSoftKeywords.TYPE))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_type_key8535); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_key8694); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19442,7 +19631,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2136:5: -> VK_TYPE[$id]
+            // 2154:5: -> VK_TYPE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_TYPE, id));
 
@@ -19477,7 +19666,7 @@
     };
 
     // $ANTLR start "args_key"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2139:1: args_key : {...}? =>id= ID -> VK_PARAMS[$id] ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2157:1: args_key : {...}? =>id= ID -> VK_PARAMS[$id] ;
     public final DRLParser.args_key_return args_key() throws RecognitionException {
         DRLParser.args_key_return retval = new DRLParser.args_key_return();
         retval.start = input.LT(1);
@@ -19490,14 +19679,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2140:3: ({...}? =>id= ID -> VK_PARAMS[$id] )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2140:5: {...}? =>id= ID
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2158:3: ({...}? =>id= ID -> VK_PARAMS[$id] )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2158:5: {...}? =>id= ID
             {
             if ( !(((validateIdentifierKey(DroolsSoftKeywords.ARGS)))) ) {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 throw new FailedPredicateException(input, "args_key", "(validateIdentifierKey(DroolsSoftKeywords.ARGS))");
             }
-            id=(Token)match(input,ID,FOLLOW_ID_in_args_key8572); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_args_key8731); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -19516,7 +19705,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2142:5: -> VK_PARAMS[$id]
+            // 2160:5: -> VK_PARAMS[$id]
             {
             }
 
@@ -19549,24 +19738,24 @@
     };
 
     // $ANTLR start "approx_symb"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2150:1: approx_symb : APPROX -> VK_APPROX ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2168:1: approx_symb : APPROX -> VK_APPROX ;
     public final DRLParser.approx_symb_return approx_symb() throws RecognitionException {
         DRLParser.approx_symb_return retval = new DRLParser.approx_symb_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token APPROX355=null;
+        Token APPROX360=null;
 
-        Object APPROX355_tree=null;
+        Object APPROX360_tree=null;
         RewriteRuleTokenStream stream_APPROX=new RewriteRuleTokenStream(adaptor,"token APPROX");
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2151:3: ( APPROX -> VK_APPROX )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2151:5: APPROX
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2169:3: ( APPROX -> VK_APPROX )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:2169:5: APPROX
             {
-            APPROX355=(Token)match(input,APPROX,FOLLOW_APPROX_in_approx_symb8613); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_APPROX.add(APPROX355);
+            APPROX360=(Token)match(input,APPROX,FOLLOW_APPROX_in_approx_symb8772); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_APPROX.add(APPROX360);
 
 
 
@@ -19581,7 +19770,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 2151:12: -> VK_APPROX
+            // 2169:12: -> VK_APPROX
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_APPROX, "VK_APPROX"));
 
@@ -19612,27 +19801,27 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:5: ( LEFT_PAREN or_key ( constr_parameters )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:6: LEFT_PAREN or_key ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:5: ( LEFT_PAREN or_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:6: LEFT_PAREN or_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2304); if (state.failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred1_DRL2306);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2312); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2314);
         or_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:24: ( constr_parameters )?
-        int alt127=2;
-        int LA127_0 = input.LA(1);
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:24: ( constr_parameters )?
+        int alt128=2;
+        int LA128_0 = input.LA(1);
 
-        if ( (LA127_0==AT) ) {
-            alt127=1;
+        if ( (LA128_0==AT) ) {
+            alt128=1;
         }
-        switch (alt127) {
+        switch (alt128) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:869:24: constr_parameters
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:24: constr_parameters
                 {
-                pushFollow(FOLLOW_constr_parameters_in_synpred1_DRL2308);
+                pushFollow(FOLLOW_constr_parameters_in_synpred1_DRL2316);
                 constr_parameters();
 
                 state._fsp--;
@@ -19650,27 +19839,27 @@
 
     // $ANTLR start synpred2_DRL
     public final void synpred2_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:5: LEFT_PAREN equiv_key ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:4: ( LEFT_PAREN equiv_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:5: LEFT_PAREN equiv_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred2_DRL2380); if (state.failed) return ;
-        pushFollow(FOLLOW_equiv_key_in_synpred2_DRL2382);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred2_DRL2388); if (state.failed) return ;
+        pushFollow(FOLLOW_equiv_key_in_synpred2_DRL2390);
         equiv_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:26: ( constr_parameters )?
-        int alt128=2;
-        int LA128_0 = input.LA(1);
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:26: ( constr_parameters )?
+        int alt129=2;
+        int LA129_0 = input.LA(1);
 
-        if ( (LA128_0==AT) ) {
-            alt128=1;
+        if ( (LA129_0==AT) ) {
+            alt129=1;
         }
-        switch (alt128) {
+        switch (alt129) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:26: constr_parameters
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:881:26: constr_parameters
                 {
-                pushFollow(FOLLOW_constr_parameters_in_synpred2_DRL2384);
+                pushFollow(FOLLOW_constr_parameters_in_synpred2_DRL2392);
                 constr_parameters();
 
                 state._fsp--;
@@ -19688,27 +19877,27 @@
 
     // $ANTLR start synpred3_DRL
     public final void synpred3_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:4: ( LEFT_PAREN xor_key ( constr_parameters )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:5: LEFT_PAREN xor_key ( constr_parameters )?
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:4: ( LEFT_PAREN xor_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:5: LEFT_PAREN xor_key ( constr_parameters )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2485); if (state.failed) return ;
-        pushFollow(FOLLOW_xor_key_in_synpred3_DRL2487);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2493); if (state.failed) return ;
+        pushFollow(FOLLOW_xor_key_in_synpred3_DRL2495);
         xor_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:24: ( constr_parameters )?
-        int alt129=2;
-        int LA129_0 = input.LA(1);
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:24: ( constr_parameters )?
+        int alt130=2;
+        int LA130_0 = input.LA(1);
 
-        if ( (LA129_0==AT) ) {
-            alt129=1;
+        if ( (LA130_0==AT) ) {
+            alt130=1;
         }
-        switch (alt129) {
+        switch (alt130) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:889:24: constr_parameters
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:24: constr_parameters
                 {
-                pushFollow(FOLLOW_constr_parameters_in_synpred3_DRL2489);
+                pushFollow(FOLLOW_constr_parameters_in_synpred3_DRL2497);
                 constr_parameters();
 
                 state._fsp--;
@@ -19726,44 +19915,82 @@
 
     // $ANTLR start synpred4_DRL
     public final void synpred4_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:5: ( LEFT_PAREN implies_key ( constr_parameters )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:6: LEFT_PAREN implies_key ( constr_parameters )?
+        {
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred4_DRL2602); if (state.failed) return ;
+        pushFollow(FOLLOW_implies_key_in_synpred4_DRL2604);
+        implies_key();
+
+        state._fsp--;
+        if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:29: ( constr_parameters )?
         int alt131=2;
         int LA131_0 = input.LA(1);
 
-        if ( (LA131_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+        if ( (LA131_0==AT) ) {
             alt131=1;
         }
-        else if ( (LA131_0==DOUBLE_PIPE) ) {
-            alt131=2;
+        switch (alt131) {
+            case 1 :
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:29: constr_parameters
+                {
+                pushFollow(FOLLOW_constr_parameters_in_synpred4_DRL2606);
+                constr_parameters();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+                break;
+
         }
+
+
+        }
+    }
+    // $ANTLR end synpred4_DRL
+
+    // $ANTLR start synpred5_DRL
+    public final void synpred5_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:5: ( or_key ( constr_parameters )? | DOUBLE_PIPE )
+        int alt133=2;
+        int LA133_0 = input.LA(1);
+
+        if ( (LA133_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            alt133=1;
+        }
+        else if ( (LA133_0==DOUBLE_PIPE) ) {
+            alt133=2;
+        }
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 131, 0, input);
+                new NoViableAltException("", 133, 0, input);
 
             throw nvae;
         }
-        switch (alt131) {
+        switch (alt133) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:6: or_key ( constr_parameters )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:6: or_key ( constr_parameters )?
                 {
-                pushFollow(FOLLOW_or_key_in_synpred4_DRL2605);
+                pushFollow(FOLLOW_or_key_in_synpred5_DRL2724);
                 or_key();
 
                 state._fsp--;
                 if (state.failed) return ;
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:14: ( constr_parameters )?
-                int alt130=2;
-                int LA130_0 = input.LA(1);
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:14: ( constr_parameters )?
+                int alt132=2;
+                int LA132_0 = input.LA(1);
 
-                if ( (LA130_0==AT) ) {
-                    alt130=1;
+                if ( (LA132_0==AT) ) {
+                    alt132=1;
                 }
-                switch (alt130) {
+                switch (alt132) {
                     case 1 :
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:14: constr_parameters
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:14: constr_parameters
                         {
-                        pushFollow(FOLLOW_constr_parameters_in_synpred4_DRL2608);
+                        pushFollow(FOLLOW_constr_parameters_in_synpred5_DRL2727);
                         constr_parameters();
 
                         state._fsp--;
@@ -19778,39 +20005,39 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:901:34: DOUBLE_PIPE
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:913:34: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred4_DRL2612); if (state.failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred5_DRL2731); if (state.failed) return ;
 
                 }
                 break;
 
         }}
-    // $ANTLR end synpred4_DRL
+    // $ANTLR end synpred5_DRL
 
-    // $ANTLR start synpred5_DRL
-    public final void synpred5_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:5: ( LEFT_PAREN and_key ( square_chunk )? )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:6: LEFT_PAREN and_key ( square_chunk )?
+    // $ANTLR start synpred6_DRL
+    public final void synpred6_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:5: ( LEFT_PAREN and_key ( square_chunk )? )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:6: LEFT_PAREN and_key ( square_chunk )?
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred5_DRL2743); if (state.failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred5_DRL2745);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2862); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred6_DRL2864);
         and_key();
 
         state._fsp--;
         if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:25: ( square_chunk )?
-        int alt132=2;
-        int LA132_0 = input.LA(1);
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:25: ( square_chunk )?
+        int alt134=2;
+        int LA134_0 = input.LA(1);
 
-        if ( (LA132_0==LEFT_SQUARE) ) {
-            alt132=1;
+        if ( (LA134_0==LEFT_SQUARE) ) {
+            alt134=1;
         }
-        switch (alt132) {
+        switch (alt134) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:25: square_chunk
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:25: square_chunk
                 {
-                pushFollow(FOLLOW_square_chunk_in_synpred5_DRL2747);
+                pushFollow(FOLLOW_square_chunk_in_synpred6_DRL2866);
                 square_chunk();
 
                 state._fsp--;
@@ -19824,48 +20051,48 @@
 
         }
     }
-    // $ANTLR end synpred5_DRL
+    // $ANTLR end synpred6_DRL
 
-    // $ANTLR start synpred6_DRL
-    public final void synpred6_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:5: ( and_key ( square_chunk )? | DOUBLE_AMPER )
-        int alt134=2;
-        int LA134_0 = input.LA(1);
+    // $ANTLR start synpred7_DRL
+    public final void synpred7_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:5: ( and_key ( square_chunk )? | DOUBLE_AMPER )
+        int alt136=2;
+        int LA136_0 = input.LA(1);
 
-        if ( (LA134_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
-            alt134=1;
+        if ( (LA136_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))))) {
+            alt136=1;
         }
-        else if ( (LA134_0==DOUBLE_AMPER) ) {
-            alt134=2;
+        else if ( (LA136_0==DOUBLE_AMPER) ) {
+            alt136=2;
         }
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 134, 0, input);
+                new NoViableAltException("", 136, 0, input);
 
             throw nvae;
         }
-        switch (alt134) {
+        switch (alt136) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:6: and_key ( square_chunk )?
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:6: and_key ( square_chunk )?
                 {
-                pushFollow(FOLLOW_and_key_in_synpred6_DRL2841);
+                pushFollow(FOLLOW_and_key_in_synpred7_DRL2960);
                 and_key();
 
                 state._fsp--;
                 if (state.failed) return ;
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:14: ( square_chunk )?
-                int alt133=2;
-                int LA133_0 = input.LA(1);
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:14: ( square_chunk )?
+                int alt135=2;
+                int LA135_0 = input.LA(1);
 
-                if ( (LA133_0==LEFT_SQUARE) ) {
-                    alt133=1;
+                if ( (LA135_0==LEFT_SQUARE) ) {
+                    alt135=1;
                 }
-                switch (alt133) {
+                switch (alt135) {
                     case 1 :
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:14: square_chunk
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:14: square_chunk
                         {
-                        pushFollow(FOLLOW_square_chunk_in_synpred6_DRL2843);
+                        pushFollow(FOLLOW_square_chunk_in_synpred7_DRL2962);
                         square_chunk();
 
                         state._fsp--;
@@ -19880,50 +20107,50 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:937:29: DOUBLE_AMPER
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:949:29: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred6_DRL2847); if (state.failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred7_DRL2966); if (state.failed) return ;
 
                 }
                 break;
 
         }}
-    // $ANTLR end synpred6_DRL
+    // $ANTLR end synpred7_DRL
 
-    // $ANTLR start synpred7_DRL
-    public final void synpred7_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:4: ( SEMICOLON )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:5: SEMICOLON
+    // $ANTLR start synpred8_DRL
+    public final void synpred8_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:4: ( SEMICOLON )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred7_DRL3007); if (state.failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred8_DRL3126); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred7_DRL
+    // $ANTLR end synpred8_DRL
 
-    // $ANTLR start synpred8_DRL
-    public final void synpred8_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:13: LEFT_PAREN ( or_key | and_key )
+    // $ANTLR start synpred9_DRL
+    public final void synpred9_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3044); if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:24: ( or_key | and_key )
-        int alt135=2;
-        int LA135_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred9_DRL3163); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:24: ( or_key | and_key )
+        int alt137=2;
+        int LA137_0 = input.LA(1);
 
-        if ( (LA135_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
-            int LA135_1 = input.LA(2);
+        if ( (LA137_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA137_1 = input.LA(2);
 
             if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
-                alt135=1;
+                alt137=1;
             }
             else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
-                alt135=2;
+                alt137=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 135, 1, input);
+                    new NoViableAltException("", 137, 1, input);
 
                 throw nvae;
             }
@@ -19931,15 +20158,15 @@
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 135, 0, input);
+                new NoViableAltException("", 137, 0, input);
 
             throw nvae;
         }
-        switch (alt135) {
+        switch (alt137) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:25: or_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred8_DRL3047);
+                pushFollow(FOLLOW_or_key_in_synpred9_DRL3166);
                 or_key();
 
                 state._fsp--;
@@ -19948,9 +20175,9 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:964:32: and_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:976:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred8_DRL3049);
+                pushFollow(FOLLOW_and_key_in_synpred9_DRL3168);
                 and_key();
 
                 state._fsp--;
@@ -19964,31 +20191,31 @@
 
         }
     }
-    // $ANTLR end synpred8_DRL
+    // $ANTLR end synpred9_DRL
 
-    // $ANTLR start synpred9_DRL
-    public final void synpred9_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:6: LEFT_PAREN ( or_key | and_key )
+    // $ANTLR start synpred10_DRL
+    public final void synpred10_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred9_DRL3172); if (state.failed) return ;
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:17: ( or_key | and_key )
-        int alt136=2;
-        int LA136_0 = input.LA(1);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred10_DRL3291); if (state.failed) return ;
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:17: ( or_key | and_key )
+        int alt138=2;
+        int LA138_0 = input.LA(1);
 
-        if ( (LA136_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
-            int LA136_1 = input.LA(2);
+        if ( (LA138_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AND)))||((validateIdentifierKey(DroolsSoftKeywords.OR)))))) {
+            int LA138_1 = input.LA(2);
 
             if ( (((validateIdentifierKey(DroolsSoftKeywords.OR)))) ) {
-                alt136=1;
+                alt138=1;
             }
             else if ( (((validateIdentifierKey(DroolsSoftKeywords.AND)))) ) {
-                alt136=2;
+                alt138=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 136, 1, input);
+                    new NoViableAltException("", 138, 1, input);
 
                 throw nvae;
             }
@@ -19996,15 +20223,15 @@
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 136, 0, input);
+                new NoViableAltException("", 138, 0, input);
 
             throw nvae;
         }
-        switch (alt136) {
+        switch (alt138) {
             case 1 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:18: or_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred9_DRL3175);
+                pushFollow(FOLLOW_or_key_in_synpred10_DRL3294);
                 or_key();
 
                 state._fsp--;
@@ -20013,9 +20240,9 @@
                 }
                 break;
             case 2 :
-                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:980:25: and_key
+                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred9_DRL3177);
+                pushFollow(FOLLOW_and_key_in_synpred10_DRL3296);
                 and_key();
 
                 state._fsp--;
@@ -20029,50 +20256,50 @@
 
         }
     }
-    // $ANTLR end synpred9_DRL
+    // $ANTLR end synpred10_DRL
 
-    // $ANTLR start synpred10_DRL
-    public final void synpred10_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:5: ( LEFT_PAREN )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1173:6: LEFT_PAREN
+    // $ANTLR start synpred11_DRL
+    public final void synpred11_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:5: ( LEFT_PAREN )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1185:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred10_DRL4133); if (state.failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred11_DRL4252); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred10_DRL
+    // $ANTLR end synpred11_DRL
 
-    // $ANTLR start synpred11_DRL
-    public final void synpred11_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:5: ( and_constr SINGLE_PIPE )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1272:6: and_constr SINGLE_PIPE
+    // $ANTLR start synpred12_DRL
+    public final void synpred12_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1284:5: ( and_constr SINGLE_PIPE )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1284:6: and_constr SINGLE_PIPE
         {
-        pushFollow(FOLLOW_and_constr_in_synpred11_DRL4675);
+        pushFollow(FOLLOW_and_constr_in_synpred12_DRL4795);
         and_constr();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_synpred11_DRL4677); if (state.failed) return ;
+        match(input,SINGLE_PIPE,FOLLOW_SINGLE_PIPE_in_synpred12_DRL4797); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred11_DRL
+    // $ANTLR end synpred12_DRL
 
-    // $ANTLR start synpred12_DRL
-    public final void synpred12_DRL_fragment() throws RecognitionException {   
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:5: ( unary_constr SINGLE_AMPER )
-        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1302:6: unary_constr SINGLE_AMPER
+    // $ANTLR start synpred13_DRL
+    public final void synpred13_DRL_fragment() throws RecognitionException {   
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:5: ( unary_constr SINGLE_AMPER )
+        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1314:6: unary_constr SINGLE_AMPER
         {
-        pushFollow(FOLLOW_unary_constr_in_synpred12_DRL5016);
+        pushFollow(FOLLOW_unary_constr_in_synpred13_DRL5136);
         unary_constr();
 
         state._fsp--;
         if (state.failed) return ;
-        match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_synpred12_DRL5018); if (state.failed) return ;
+        match(input,SINGLE_AMPER,FOLLOW_SINGLE_AMPER_in_synpred13_DRL5138); if (state.failed) return ;
 
         }
     }
-    // $ANTLR end synpred12_DRL
+    // $ANTLR end synpred13_DRL
 
     // Delegated rules
 
@@ -20104,11 +20331,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred11_DRL() {
+    public final boolean synpred9_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred11_DRL_fragment(); // can never throw exception
+            synpred9_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20118,11 +20345,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred9_DRL() {
+    public final boolean synpred3_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred9_DRL_fragment(); // can never throw exception
+            synpred3_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20132,11 +20359,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred6_DRL() {
+    public final boolean synpred8_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred6_DRL_fragment(); // can never throw exception
+            synpred8_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20146,11 +20373,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred10_DRL() {
+    public final boolean synpred12_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred10_DRL_fragment(); // can never throw exception
+            synpred12_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20160,11 +20387,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred2_DRL() {
+    public final boolean synpred11_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred2_DRL_fragment(); // can never throw exception
+            synpred11_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20174,11 +20401,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred3_DRL() {
+    public final boolean synpred6_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred3_DRL_fragment(); // can never throw exception
+            synpred6_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20188,11 +20415,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred4_DRL() {
+    public final boolean synpred2_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred4_DRL_fragment(); // can never throw exception
+            synpred2_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20202,11 +20429,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred7_DRL() {
+    public final boolean synpred10_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred7_DRL_fragment(); // can never throw exception
+            synpred10_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20216,11 +20443,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred8_DRL() {
+    public final boolean synpred4_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred8_DRL_fragment(); // can never throw exception
+            synpred4_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20230,11 +20457,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred12_DRL() {
+    public final boolean synpred7_DRL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred12_DRL_fragment(); // can never throw exception
+            synpred7_DRL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -20244,6 +20471,20 @@
         state.failed=false;
         return success;
     }
+    public final boolean synpred13_DRL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred13_DRL_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 DFA1 dfa1 = new DFA1(this);
@@ -20252,33 +20493,33 @@
     protected DFA17 dfa17 = new DFA17(this);
     protected DFA29 dfa29 = new DFA29(this);
     protected DFA38 dfa38 = new DFA38(this);
-    protected DFA62 dfa62 = new DFA62(this);
-    protected DFA81 dfa81 = new DFA81(this);
-    protected DFA83 dfa83 = new DFA83(this);
-    protected DFA97 dfa97 = new DFA97(this);
-    protected DFA105 dfa105 = new DFA105(this);
+    protected DFA63 dfa63 = new DFA63(this);
+    protected DFA82 dfa82 = new DFA82(this);
+    protected DFA84 dfa84 = new DFA84(this);
+    protected DFA98 dfa98 = new DFA98(this);
+    protected DFA106 dfa106 = new DFA106(this);
     static final String DFA1_eotS =
         "\12\uffff";
     static final String DFA1_eofS =
         "\1\2\11\uffff";
     static final String DFA1_minS =
-        "\2\151\3\uffff\1\0\4\uffff";
+        "\2\153\2\uffff\1\0\5\uffff";
     static final String DFA1_maxS =
-        "\1\151\1\u008c\3\uffff\1\0\4\uffff";
+        "\1\153\1\u008e\2\uffff\1\0\5\uffff";
     static final String DFA1_acceptS =
-        "\2\uffff\3\2\1\uffff\3\2\1\1";
+        "\2\uffff\2\2\1\uffff\4\2\1\1";
     static final String DFA1_specialS =
-        "\1\uffff\1\1\3\uffff\1\0\4\uffff}>";
+        "\1\uffff\1\0\2\uffff\1\1\5\uffff}>";
     static final String[] DFA1_transitionS = {
             "\1\1",
-            "\1\5\2\uffff\1\4\1\7\6\uffff\1\10\1\6\26\uffff\1\3",
+            "\1\4\2\uffff\1\5\1\7\6\uffff\1\6\1\10\26\uffff\1\3",
             "",
             "",
-            "",
             "\1\uffff",
             "",
             "",
             "",
+            "",
             ""
     };
 
@@ -20312,48 +20553,48 @@
             this.transition = DFA1_transition;
         }
         public String getDescription() {
-            return "434:4: ( package_statement )?";
+            return "436:4: ( package_statement )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA1_5 = input.LA(1);
+                        int LA1_1 = input.LA(1);
 
                          
-                        int index1_5 = input.index();
+                        int index1_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
+                        if ( (LA1_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
 
-                        else if ( (true) ) {s = 8;}
+                        else if ( (LA1_1==ID) ) {s = 4;}
 
+                        else if ( (LA1_1==STRING) ) {s = 5;}
+
+                        else if ( (LA1_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 6;}
+
+                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 7;}
+
+                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 8;}
+
                          
-                        input.seek(index1_5);
+                        input.seek(index1_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA1_1 = input.LA(1);
+                        int LA1_4 = input.LA(1);
 
                          
-                        int index1_1 = input.index();
+                        int index1_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA1_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
 
-                        else if ( (LA1_1==STRING) ) {s = 4;}
+                        else if ( (true) ) {s = 8;}
 
-                        else if ( (LA1_1==ID) ) {s = 5;}
-
-                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 6;}
-
-                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 7;}
-
-                        else if ( (LA1_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 8;}
-
                          
-                        input.seek(index1_1);
+                        input.seek(index1_4);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -20369,16 +20610,16 @@
     static final String DFA5_eofS =
         "\20\uffff";
     static final String DFA5_minS =
-        "\2\151\1\uffff\2\0\13\uffff";
+        "\2\153\1\uffff\2\0\13\uffff";
     static final String DFA5_maxS =
-        "\1\151\1\u008c\1\uffff\2\0\13\uffff";
+        "\1\153\1\u008e\1\uffff\2\0\13\uffff";
     static final String DFA5_acceptS =
         "\2\uffff\1\1\2\uffff\3\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11";
     static final String DFA5_specialS =
         "\1\uffff\1\0\1\uffff\1\1\1\2\13\uffff}>";
     static final String[] DFA5_transitionS = {
             "\1\1",
-            "\1\3\2\uffff\1\4\1\6\6\uffff\1\5\1\7\26\uffff\1\2",
+            "\1\3\2\uffff\1\4\1\6\6\uffff\1\7\1\5\26\uffff\1\2",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -20425,7 +20666,7 @@
             this.transition = DFA5_transition;
         }
         public String getDescription() {
-            return "492:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
+            return "494:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -20440,15 +20681,15 @@
                         s = -1;
                         if ( (LA5_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 2;}
 
-                        else if ( (LA5_1==ID) && ((!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIden!
 tifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifier!
 Key(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftK
eywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords!
 .TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPL!
 ATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((valida
teIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(!
 1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, Dro!
 olsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(
2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLA!
 RE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((vali!
 dateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifier
Key(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(!
 DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Drools!
 SoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "f
unction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function!
 ") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&!
 ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1,
 DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftK!
 eywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)
))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((v!
 alidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey!
 (DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKey
words.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, Dro!
 olsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSof!
 tKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBA
L)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateId!
 entifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((val!
 idateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Dro
olsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLAR!
 E)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((v
alidateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((val!
 idateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Dro!
 olsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeyword
s.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyw!
 ords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.!
 IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateI
dentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdenti!
 fierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1,!
  DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeyw
ords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FU!
 NCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION!
 ))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validat
eLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validat!
 eIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(!
 DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywo
rds.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "functi!
 on") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 ||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifier
Key(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSo!
 ftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2!
 , "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))
)||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((vali!
 dateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validat
eLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsS!
 oftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECL!
 ARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((vali
dateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((!
 validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((valida!
 teLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drools
SoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBA!
 L)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function"!
 ) ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validat
eIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsS!
 oftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSof!
 tKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)
))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QU!
 ERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIden
tifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && va!
 lidateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Drools!
 SoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPO
RT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((v!
 alidateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdent!
 ifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Drool
sSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSof!
 tKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywo!
 rds.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((valid
ateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateL!
 T(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIden!
 tifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsS
oftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeyw!
 ords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLA!
 RE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((vali
dateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateId!
 entifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifi!
 erKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoft
Keywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeyword!
 s.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))!
 )||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIde
ntifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifier!
 Key(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(D!
 roolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECL
ARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((va!
 lidateLT(1, "import") && validateLT(2, "function") ))&&((validateIdent
ifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierK!
 ey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Droo!
 lsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.
FUNCTION))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((!
 validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((valida!
 teIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1,
 DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, Drools!
 SoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") &!
 & validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyw
ords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((!
 (validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((valid!
 ateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drool
sSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywor!
 ds.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTI!
 ON))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valida
teIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1!
 , DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validat!
 eIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSo
ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.D!
 ECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((!
 validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdenti
fierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifier!
 Key(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, D!
 roolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywor
ds.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.!
 IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT!
 ))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdenti
fierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.!
 TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") )
)&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validate!
 IdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(!
 1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKe
ywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsS!
 oftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL!
 )))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateL
T(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((val!
 idateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Drools!
 SoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.G
LOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))))) {s = 3;}
+                        else if ( (LA5_1==ID) && ((!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIden!
 tifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifier!
 Key(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoft
Keywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPOR!
 T))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((va!
 lidateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifie
rKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Dr!
 oolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoft!
 Keywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCT
ION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateI!
 dentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(Dro
olsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoft!
 Keywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&
&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((vali!
 dateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdenti!
 fierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoft
Keywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeyword!
 s.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateL!
 T(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT
))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdent!
 ifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, Droo!
 lsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.
DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywo!
 rds.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&!
 ((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIden
tifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.
QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyword!
 s.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QU!
 ERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((valid
ateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierK!
 ey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT!
 (1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftK
eywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.D!
 ECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function"!
 ) ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validat
eIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdenti!
 fierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateI!
 dentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoft
Keywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKey!
 words.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "functi!
 on") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((vali
dateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIde!
 ntifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(!
 DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywo
rds.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPO!
 RT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(!
 (validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifi
erKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(D!
 roolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2!
 , "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))
)||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validate!
 IdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSof!
 tKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywo!
 rds.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))
&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateI!
 dentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSof
tKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((
validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifie!
 rKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(D!
 roolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywo
rds.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLO!
 BAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1
, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, Drool!
 sSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsS!
 oftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "
function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(!
 ((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((vali!
 dateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentif
ierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, Droo!
 lsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validat!
 eLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPO
RT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateL!
 T(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(!
 DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeyw
ords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GL!
 OBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((v
alidateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIde!
 ntifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftK
eywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLAR!
 E)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.!
 TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validat
eIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(D!
 roolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && valida
teLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&!
 &((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((valida!
 teIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1
, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "impo!
 rt") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)
))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((v!
 alidateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((valid!
 ateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(Drool
sSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && val!
 idateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftK!
 eywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "
function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateI!
 dentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifier!
 Key(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKe
ywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IM!
 PORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)!
 ))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateL
T(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSof!
 tKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Droo!
 lsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE))
)&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 ||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1!
 , DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKey
words.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsS!
 oftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))!
 )||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIden
tifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey!
 (DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifie!
 rKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftK
eywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywo!
 rds.FUNCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FU!
 NCTION)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateI
dentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((vali!
 dateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1!
 , DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKe
ywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECL!
 ARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))!
 &&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateId
entifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifier!
 Key(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateL!
 T(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywor
ds.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))))) {s = 3;}
 
-                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden!
 tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifier!
 Key(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|!
 |!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIden!
 tifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Drool
sSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.!
 ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER!
 )))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentif
ierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(!
 DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.!
 DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(
((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSo!
 ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENT
AIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))|!
 |((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentif!
 ierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dro
olsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIAL!
 ECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierK
ey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUE!
 RY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((
validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey!
 (DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Drool!
 sSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))
)||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validate!
 IdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsS!
 oftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.EN
TAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))!
 ||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdenti!
 fierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dr
oolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIA!
 LECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifier
Key(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QU!
 ERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||(
(validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSof!
 tKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC
T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIden!
 tifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyw
ords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC!
 T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey
(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyw!
 ords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY!
 ))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((va
lidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey!
 (DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))
)||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateI!
 dentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentif!
 ierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))!
 ))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateI!
 dentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FIL!
 TER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden
tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierK!
 ey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|
|!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.
ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)!
 ))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIden!
 tifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(
DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))))) {s = 4;}
+                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden!
 tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifier!
 Key(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|!
 |!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIden!
 tifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Drool
sSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.!
 ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER!
 )))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentif
ierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(!
 DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.!
 DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(
((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSo!
 ftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENT
AIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))|!
 |((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentif!
 ierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dro
olsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIAL!
 ECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierK
ey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUE!
 RY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((
validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierK!
 ey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoft!
 Keywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT
)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((va!
 lidateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey!
 (DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeyw
ords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))!
 ||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdenti!
 fierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Dr
oolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIA!
 LECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((va!
 lidateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifier
Key(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QU!
 ERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||(
(validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifier!
 Key(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSof!
 tKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC
T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(Drool
sSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALEC!
 T)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey
(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyw!
 ords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY!
 ))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((va
lidateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey!
 (DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))
)||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateI!
 dentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentif!
 ierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))!
 ))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateI!
 dentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FIL!
 TER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIden
tifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierK!
 ey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywor!
 ds.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))|
|!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, Drool!
 sSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.
ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)!
 ))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIden!
 tifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(
DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY))))))))) {s = 4;}
 
-                        else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
+                        else if ( (LA5_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 5;}
 
                         else if ( (LA5_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 6;}
 
-                        else if ( (LA5_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
+                        else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 7;}
 
                          
                         input.seek(index5_1);
@@ -20473,7 +20714,7 @@
 
                         else if ( ((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))) ) {s = 13;}
 
-                        else if ( (!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))) ) {s = 14;}
+                        else if ( (!(((((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))))) ) {s = 14;}
 
                         else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
 
@@ -20513,11 +20754,11 @@
     static final String DFA12_eofS =
         "\23\uffff";
     static final String DFA12_minS =
-        "\2\151\1\uffff\1\151\1\uffff\1\151\1\4\3\151\2\u0088\1\151\1\u0088"+
-        "\1\155\1\151\1\u0088\1\151\1\155";
+        "\2\153\1\uffff\1\153\1\uffff\1\153\1\4\3\153\2\u008a\1\153\1\u008a"+
+        "\1\157\1\153\1\u008a\1\153\1\157";
     static final String DFA12_maxS =
-        "\1\155\1\157\1\uffff\1\u0087\1\uffff\1\151\1\u0097\3\u0087\2\u0088"+
-        "\1\u0087\1\u0088\2\u0087\1\u0088\2\u0087";
+        "\1\157\1\161\1\uffff\1\u0089\1\uffff\1\153\1\u0099\3\u0089\2\u008a"+
+        "\1\u0089\1\u008a\2\u0089\1\u008a\2\u0089";
     static final String DFA12_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\16\uffff";
     static final String DFA12_specialS =
@@ -20529,7 +20770,7 @@
             "\1\7\1\5\2\uffff\1\2\2\4\2\2\25\uffff\1\6",
             "",
             "\1\10",
-            "\u0084\2\1\11\17\2",
+            "\u0086\2\1\11\17\2",
             "\2\2\2\uffff\1\2\2\4\1\uffff\1\2\25\uffff\1\12",
             "\1\4\1\5\2\uffff\1\2\31\uffff\1\13",
             "\1\14\3\uffff\1\2\2\4\1\2\26\uffff\1\15",
@@ -20574,7 +20815,7 @@
             this.transition = DFA12_transition;
         }
         public String getDescription() {
-            return "563:3: ( parameters )?";
+            return "565:3: ( parameters )?";
         }
     }
     static final String DFA17_eotS =
@@ -20582,9 +20823,9 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\151\1\uffff\1\u0088\1\uffff\1\151";
+        "\2\153\1\uffff\1\u008a\1\uffff\1\153";
     static final String DFA17_maxS =
-        "\1\151\1\u0087\1\uffff\1\u0088\1\uffff\1\u0087";
+        "\1\153\1\u0089\1\uffff\1\u008a\1\uffff\1\u0089";
     static final String DFA17_acceptS =
         "\2\uffff\1\1\1\uffff\1\2\1\uffff";
     static final String DFA17_specialS =
@@ -20628,7 +20869,7 @@
             this.transition = DFA17_transition;
         }
         public String getDescription() {
-            return "588:4: ( data_type )?";
+            return "590:4: ( data_type )?";
         }
     }
     static final String DFA29_eotS =
@@ -20636,24 +20877,24 @@
     static final String DFA29_eofS =
         "\12\uffff";
     static final String DFA29_minS =
-        "\2\151\2\uffff\1\0\5\uffff";
+        "\2\153\3\uffff\1\0\4\uffff";
     static final String DFA29_maxS =
-        "\1\u0089\1\u008c\2\uffff\1\0\5\uffff";
+        "\1\u008b\1\u008e\3\uffff\1\0\4\uffff";
     static final String DFA29_acceptS =
-        "\2\uffff\2\2\1\uffff\3\2\1\1\1\2";
+        "\2\uffff\2\2\1\1\1\uffff\4\2";
     static final String DFA29_specialS =
-        "\1\2\1\0\2\uffff\1\1\5\uffff}>";
+        "\1\0\1\1\3\uffff\1\2\4\uffff}>";
     static final String[] DFA29_transitionS = {
             "\1\1\6\uffff\1\2\2\uffff\1\2\25\uffff\1\2",
-            "\1\10\2\uffff\1\4\1\6\3\uffff\1\11\2\uffff\1\5\1\7\26\uffff"+
+            "\1\4\2\uffff\1\5\1\10\3\uffff\1\6\2\uffff\1\11\1\7\26\uffff"+
             "\1\3",
             "",
             "",
+            "",
             "\1\uffff",
             "",
             "",
             "",
-            "",
             ""
     };
 
@@ -20687,13 +20928,28 @@
             this.transition = DFA29_transition;
         }
         public String getDescription() {
-            return "678:3: ( extend_key rule_id )?";
+            return "680:3: ( extend_key rule_id )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
+                        int LA29_0 = input.LA(1);
+
+                         
+                        int index29_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA29_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 1;}
+
+                        else if ( (LA29_0==AT||LA29_0==WHEN||LA29_0==THEN) ) {s = 2;}
+
+                         
+                        input.seek(index29_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
                         int LA29_1 = input.LA(1);
 
                          
@@ -20702,52 +20958,37 @@
                         s = -1;
                         if ( (LA29_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.DAT!
 E) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
 
-                        else if ( (LA29_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 4;}
+                        else if ( (LA29_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 4;}
 
-                        else if ( (LA29_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 5;}
+                        else if ( (LA29_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 5;}
 
-                        else if ( (LA29_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 6;}
+                        else if ( (LA29_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 6;}
 
                         else if ( (LA29_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
 
-                        else if ( (LA29_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 8;}
+                        else if ( (LA29_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 8;}
 
-                        else if ( (LA29_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 9;}
+                        else if ( (LA29_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 9;}
 
                          
                         input.seek(index29_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 1 : 
-                        int LA29_4 = input.LA(1);
+                    case 2 : 
+                        int LA29_5 = input.LA(1);
 
                          
-                        int index29_4 = input.index();
+                        int index29_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 8;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 4;}
 
                         else if ( ((((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) ) {s = 9;}
 
                          
-                        input.seek(index29_4);
+                        input.seek(index29_5);
                         if ( s>=0 ) return s;
                         break;
-                    case 2 : 
-                        int LA29_0 = input.LA(1);
-
-                         
-                        int index29_0 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA29_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.FILTER)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.ENTAIL)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.PRIOR)))))) {s = 1;}
-
-                        else if ( (LA29_0==AT||LA29_0==WHEN||LA29_0==THEN) ) {s = 2;}
-
-                         
-                        input.seek(index29_0);
-                        if ( s>=0 ) return s;
-                        break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
@@ -20761,9 +21002,9 @@
     static final String DFA38_eofS =
         "\21\uffff";
     static final String DFA38_minS =
-        "\1\151\1\0\17\uffff";
+        "\1\153\1\0\17\uffff";
     static final String DFA38_maxS =
-        "\1\151\1\0\17\uffff";
+        "\1\153\1\0\17\uffff";
     static final String DFA38_acceptS =
         "\2\uffff\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";
@@ -20819,7 +21060,7 @@
             this.transition = DFA38_transition;
         }
         public String getDescription() {
-            return "747:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );";
+            return "749:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect | prior | entail_mode | filter );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -20887,19 +21128,19 @@
             throw nvae;
         }
     }
-    static final String DFA62_eotS =
+    static final String DFA63_eotS =
         "\12\uffff";
-    static final String DFA62_eofS =
+    static final String DFA63_eofS =
         "\12\uffff";
-    static final String DFA62_minS =
-        "\1\151\1\0\10\uffff";
-    static final String DFA62_maxS =
-        "\1\155\1\0\10\uffff";
-    static final String DFA62_acceptS =
+    static final String DFA63_minS =
+        "\1\153\1\0\10\uffff";
+    static final String DFA63_maxS =
+        "\1\157\1\0\10\uffff";
+    static final String DFA63_acceptS =
         "\2\uffff\1\7\1\1\1\2\1\3\1\4\1\5\1\6\1\10";
-    static final String DFA62_specialS =
+    static final String DFA63_specialS =
         "\1\uffff\1\0\10\uffff}>";
-    static final String[] DFA62_transitionS = {
+    static final String[] DFA63_transitionS = {
             "\1\1\3\uffff\1\2",
             "\1\uffff",
             "",
@@ -20912,47 +21153,47 @@
             ""
     };
 
-    static final short[] DFA62_eot = DFA.unpackEncodedString(DFA62_eotS);
-    static final short[] DFA62_eof = DFA.unpackEncodedString(DFA62_eofS);
-    static final char[] DFA62_min = DFA.unpackEncodedStringToUnsignedChars(DFA62_minS);
-    static final char[] DFA62_max = DFA.unpackEncodedStringToUnsignedChars(DFA62_maxS);
-    static final short[] DFA62_accept = DFA.unpackEncodedString(DFA62_acceptS);
-    static final short[] DFA62_special = DFA.unpackEncodedString(DFA62_specialS);
-    static final short[][] DFA62_transition;
+    static final short[] DFA63_eot = DFA.unpackEncodedString(DFA63_eotS);
+    static final short[] DFA63_eof = DFA.unpackEncodedString(DFA63_eofS);
+    static final char[] DFA63_min = DFA.unpackEncodedStringToUnsignedChars(DFA63_minS);
+    static final char[] DFA63_max = DFA.unpackEncodedStringToUnsignedChars(DFA63_maxS);
+    static final short[] DFA63_accept = DFA.unpackEncodedString(DFA63_acceptS);
+    static final short[] DFA63_special = DFA.unpackEncodedString(DFA63_specialS);
+    static final short[][] DFA63_transition;
 
     static {
-        int numStates = DFA62_transitionS.length;
-        DFA62_transition = new short[numStates][];
+        int numStates = DFA63_transitionS.length;
+        DFA63_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA62_transition[i] = DFA.unpackEncodedString(DFA62_transitionS[i]);
+            DFA63_transition[i] = DFA.unpackEncodedString(DFA63_transitionS[i]);
         }
     }
 
-    class DFA62 extends DFA {
+    class DFA63 extends DFA {
 
-        public DFA62(BaseRecognizer recognizer) {
+        public DFA63(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 62;
-            this.eot = DFA62_eot;
-            this.eof = DFA62_eof;
-            this.min = DFA62_min;
-            this.max = DFA62_max;
-            this.accept = DFA62_accept;
-            this.special = DFA62_special;
-            this.transition = DFA62_transition;
+            this.decisionNumber = 63;
+            this.eot = DFA63_eot;
+            this.eof = DFA63_eof;
+            this.min = DFA63_min;
+            this.max = DFA63_max;
+            this.accept = DFA63_accept;
+            this.special = DFA63_special;
+            this.transition = DFA63_transition;
         }
         public String getDescription() {
-            return "947:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )";
+            return "959:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | lhs_forany | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA62_1 = input.LA(1);
+                        int LA63_1 = input.LA(1);
 
                          
-                        int index62_1 = input.index();
+                        int index63_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))) ) {s = 3;}
@@ -20970,30 +21211,30 @@
                         else if ( (true) ) {s = 9;}
 
                          
-                        input.seek(index62_1);
+                        input.seek(index63_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 62, _s, input);
+                new NoViableAltException(getDescription(), 63, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA81_eotS =
+    static final String DFA82_eotS =
         "\13\uffff";
-    static final String DFA81_eofS =
+    static final String DFA82_eofS =
         "\13\uffff";
-    static final String DFA81_minS =
-        "\1\150\1\0\11\uffff";
-    static final String DFA81_maxS =
-        "\1\u0089\1\0\11\uffff";
-    static final String DFA81_acceptS =
+    static final String DFA82_minS =
+        "\1\152\1\0\11\uffff";
+    static final String DFA82_maxS =
+        "\1\u008b\1\0\11\uffff";
+    static final String DFA82_acceptS =
         "\2\uffff\1\2\7\uffff\1\1";
-    static final String DFA81_specialS =
+    static final String DFA82_specialS =
         "\1\uffff\1\0\11\uffff}>";
-    static final String[] DFA81_transitionS = {
+    static final String[] DFA82_transitionS = {
             "\3\2\2\uffff\1\1\2\2\6\uffff\2\2\21\uffff\1\2",
             "\1\uffff",
             "",
@@ -21007,78 +21248,78 @@
             ""
     };
 
-    static final short[] DFA81_eot = DFA.unpackEncodedString(DFA81_eotS);
-    static final short[] DFA81_eof = DFA.unpackEncodedString(DFA81_eofS);
-    static final char[] DFA81_min = DFA.unpackEncodedStringToUnsignedChars(DFA81_minS);
-    static final char[] DFA81_max = DFA.unpackEncodedStringToUnsignedChars(DFA81_maxS);
-    static final short[] DFA81_accept = DFA.unpackEncodedString(DFA81_acceptS);
-    static final short[] DFA81_special = DFA.unpackEncodedString(DFA81_specialS);
-    static final short[][] DFA81_transition;
+    static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
+    static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
+    static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
+    static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
+    static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
+    static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
+    static final short[][] DFA82_transition;
 
     static {
-        int numStates = DFA81_transitionS.length;
-        DFA81_transition = new short[numStates][];
+        int numStates = DFA82_transitionS.length;
+        DFA82_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA81_transition[i] = DFA.unpackEncodedString(DFA81_transitionS[i]);
+            DFA82_transition[i] = DFA.unpackEncodedString(DFA82_transitionS[i]);
         }
     }
 
-    class DFA81 extends DFA {
+    class DFA82 extends DFA {
 
-        public DFA81(BaseRecognizer recognizer) {
+        public DFA82(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 81;
-            this.eot = DFA81_eot;
-            this.eof = DFA81_eof;
-            this.min = DFA81_min;
-            this.max = DFA81_max;
-            this.accept = DFA81_accept;
-            this.special = DFA81_special;
-            this.transition = DFA81_transition;
+            this.decisionNumber = 82;
+            this.eot = DFA82_eot;
+            this.eof = DFA82_eof;
+            this.min = DFA82_min;
+            this.max = DFA82_max;
+            this.accept = DFA82_accept;
+            this.special = DFA82_special;
+            this.transition = DFA82_transition;
         }
         public String getDescription() {
-            return "1173:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
+            return "1185:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
         }
         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 LA82_1 = input.LA(1);
 
                          
-                        int index81_1 = input.index();
+                        int index82_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred10_DRL()) ) {s = 10;}
+                        if ( (synpred11_DRL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index81_1);
+                        input.seek(index82_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(), 82, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA83_eotS =
+    static final String DFA84_eotS =
         "\14\uffff";
-    static final String DFA83_eofS =
+    static final String DFA84_eofS =
         "\14\uffff";
-    static final String DFA83_minS =
-        "\1\150\1\0\12\uffff";
-    static final String DFA83_maxS =
-        "\1\u0089\1\0\12\uffff";
-    static final String DFA83_acceptS =
+    static final String DFA84_minS =
+        "\1\152\1\0\12\uffff";
+    static final String DFA84_maxS =
+        "\1\u008b\1\0\12\uffff";
+    static final String DFA84_acceptS =
         "\2\uffff\1\2\1\3\7\uffff\1\1";
-    static final String DFA83_specialS =
+    static final String DFA84_specialS =
         "\1\uffff\1\0\12\uffff}>";
-    static final String[] DFA83_transitionS = {
+    static final String[] DFA84_transitionS = {
             "\3\3\2\uffff\1\1\2\3\6\uffff\2\3\17\uffff\1\2\1\uffff\1\3",
             "\1\uffff",
             "",
@@ -21093,47 +21334,47 @@
             ""
     };
 
-    static final short[] DFA83_eot = DFA.unpackEncodedString(DFA83_eotS);
-    static final short[] DFA83_eof = DFA.unpackEncodedString(DFA83_eofS);
-    static final char[] DFA83_min = DFA.unpackEncodedStringToUnsignedChars(DFA83_minS);
-    static final char[] DFA83_max = DFA.unpackEncodedStringToUnsignedChars(DFA83_maxS);
-    static final short[] DFA83_accept = DFA.unpackEncodedString(DFA83_acceptS);
-    static final short[] DFA83_special = DFA.unpackEncodedString(DFA83_specialS);
-    static final short[][] DFA83_transition;
+    static final short[] DFA84_eot = DFA.unpackEncodedString(DFA84_eotS);
+    static final short[] DFA84_eof = DFA.unpackEncodedString(DFA84_eofS);
+    static final char[] DFA84_min = DFA.unpackEncodedStringToUnsignedChars(DFA84_minS);
+    static final char[] DFA84_max = DFA.unpackEncodedStringToUnsignedChars(DFA84_maxS);
+    static final short[] DFA84_accept = DFA.unpackEncodedString(DFA84_acceptS);
+    static final short[] DFA84_special = DFA.unpackEncodedString(DFA84_specialS);
+    static final short[][] DFA84_transition;
 
     static {
-        int numStates = DFA83_transitionS.length;
-        DFA83_transition = new short[numStates][];
+        int numStates = DFA84_transitionS.length;
+        DFA84_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA83_transition[i] = DFA.unpackEncodedString(DFA83_transitionS[i]);
+            DFA84_transition[i] = DFA.unpackEncodedString(DFA84_transitionS[i]);
         }
     }
 
-    class DFA83 extends DFA {
+    class DFA84 extends DFA {
 
-        public DFA83(BaseRecognizer recognizer) {
+        public DFA84(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 83;
-            this.eot = DFA83_eot;
-            this.eof = DFA83_eof;
-            this.min = DFA83_min;
-            this.max = DFA83_max;
-            this.accept = DFA83_accept;
-            this.special = DFA83_special;
-            this.transition = DFA83_transition;
+            this.decisionNumber = 84;
+            this.eot = DFA84_eot;
+            this.eof = DFA84_eof;
+            this.min = DFA84_min;
+            this.max = DFA84_max;
+            this.accept = DFA84_accept;
+            this.special = DFA84_special;
+            this.transition = DFA84_transition;
         }
         public String getDescription() {
-            return "1187:4: ({...}? paren_chunk | square_chunk )?";
+            return "1199:4: ({...}? paren_chunk | square_chunk )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA83_1 = input.LA(1);
+                        int LA84_1 = input.LA(1);
 
                          
-                        int index83_1 = input.index();
+                        int index84_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 11;}
@@ -21141,34 +21382,35 @@
                         else if ( (true) ) {s = 3;}
 
                          
-                        input.seek(index83_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(), 83, _s, input);
+                new NoViableAltException(getDescription(), 84, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA97_eotS =
+    static final String DFA98_eotS =
         "\20\uffff";
-    static final String DFA97_eofS =
+    static final String DFA98_eofS =
         "\20\uffff";
-    static final String DFA97_minS =
-        "\2\151\13\uffff\1\0\2\uffff";
-    static final String DFA97_maxS =
-        "\1\155\1\u008d\13\uffff\1\0\2\uffff";
-    static final String DFA97_acceptS =
-        "\2\uffff\1\3\1\2\13\uffff\1\1";
-    static final String DFA97_specialS =
-        "\15\uffff\1\0\2\uffff}>";
-    static final String[] DFA97_transitionS = {
+    static final String DFA98_minS =
+        "\2\153\1\uffff\1\0\14\uffff";
+    static final String DFA98_maxS =
+        "\1\157\1\u008f\1\uffff\1\0\14\uffff";
+    static final String DFA98_acceptS =
+        "\2\uffff\1\3\1\uffff\1\2\12\uffff\1\1";
+    static final String DFA98_specialS =
+        "\3\uffff\1\0\14\uffff}>";
+    static final String[] DFA98_transitionS = {
             "\1\1\3\uffff\1\2",
-            "\2\3\2\uffff\1\15\3\uffff\1\3\15\uffff\6\3\2\uffff\1\3\5\uffff"+
-            "\1\3",
+            "\2\4\2\uffff\1\3\3\uffff\1\4\15\uffff\6\4\2\uffff\1\4\5\uffff"+
+            "\1\4",
             "",
+            "\1\uffff",
             "",
             "",
             "",
@@ -21179,89 +21421,87 @@
             "",
             "",
             "",
-            "\1\uffff",
             "",
             ""
     };
 
-    static final short[] DFA97_eot = DFA.unpackEncodedString(DFA97_eotS);
-    static final short[] DFA97_eof = DFA.unpackEncodedString(DFA97_eofS);
-    static final char[] DFA97_min = DFA.unpackEncodedStringToUnsignedChars(DFA97_minS);
-    static final char[] DFA97_max = DFA.unpackEncodedStringToUnsignedChars(DFA97_maxS);
-    static final short[] DFA97_accept = DFA.unpackEncodedString(DFA97_acceptS);
-    static final short[] DFA97_special = DFA.unpackEncodedString(DFA97_specialS);
-    static final short[][] DFA97_transition;
+    static final short[] DFA98_eot = DFA.unpackEncodedString(DFA98_eotS);
+    static final short[] DFA98_eof = DFA.unpackEncodedString(DFA98_eofS);
+    static final char[] DFA98_min = DFA.unpackEncodedStringToUnsignedChars(DFA98_minS);
+    static final char[] DFA98_max = DFA.unpackEncodedStringToUnsignedChars(DFA98_maxS);
+    static final short[] DFA98_accept = DFA.unpackEncodedString(DFA98_acceptS);
+    static final short[] DFA98_special = DFA.unpackEncodedString(DFA98_specialS);
+    static final short[][] DFA98_transition;
 
     static {
-        int numStates = DFA97_transitionS.length;
-        DFA97_transition = new short[numStates][];
+        int numStates = DFA98_transitionS.length;
+        DFA98_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA97_transition[i] = DFA.unpackEncodedString(DFA97_transitionS[i]);
+            DFA98_transition[i] = DFA.unpackEncodedString(DFA98_transitionS[i]);
         }
     }
 
-    class DFA97 extends DFA {
+    class DFA98 extends DFA {
 
-        public DFA97(BaseRecognizer recognizer) {
+        public DFA98(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 97;
-            this.eot = DFA97_eot;
-            this.eof = DFA97_eof;
-            this.min = DFA97_min;
-            this.max = DFA97_max;
-            this.accept = DFA97_accept;
-            this.special = DFA97_special;
-            this.transition = DFA97_transition;
+            this.decisionNumber = 98;
+            this.eot = DFA98_eot;
+            this.eof = DFA98_eof;
+            this.min = DFA98_min;
+            this.max = DFA98_max;
+            this.accept = DFA98_accept;
+            this.special = DFA98_special;
+            this.transition = DFA98_transition;
         }
         public String getDescription() {
-            return "1375:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
+            return "1387:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA97_13 = input.LA(1);
+                        int LA98_3 = input.LA(1);
 
                          
-                        int index97_13 = input.index();
+                        int index98_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.EVAL)))) ) {s = 15;}
 
-                        else if ( (true) ) {s = 3;}
+                        else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index97_13);
+                        input.seek(index98_3);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 97, _s, input);
+                new NoViableAltException(getDescription(), 98, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String DFA105_eotS =
+    static final String DFA106_eotS =
         "\64\uffff";
-    static final String DFA105_eofS =
+    static final String DFA106_eofS =
         "\64\uffff";
-    static final String DFA105_minS =
-        "\2\151\12\uffff\1\151\5\uffff\1\4\17\uffff\1\0\7\uffff\7\0\3\uffff";
-    static final String DFA105_maxS =
-        "\2\u008d\12\uffff\1\u0087\5\uffff\1\u0097\17\uffff\1\0\7\uffff\7"+
-        "\0\3\uffff";
-    static final String DFA105_acceptS =
-        "\2\uffff\1\2\5\uffff\1\3\1\4\1\3\16\uffff\3\3\7\uffff\7\3\11\uffff"+
-        "\1\1";
-    static final String DFA105_specialS =
-        "\1\0\1\1\12\uffff\1\2\5\uffff\1\3\17\uffff\1\4\7\uffff\1\5\1\6\1"+
-        "\7\1\10\1\11\1\12\1\13\3\uffff}>";
-    static final String[] DFA105_transitionS = {
+    static final String DFA106_minS =
+        "\2\153\11\uffff\1\153\1\4\15\uffff\1\0\17\uffff\7\0\3\uffff";
+    static final String DFA106_maxS =
+        "\2\u008f\11\uffff\1\u0089\1\u0099\15\uffff\1\0\17\uffff\7\0\3\uffff";
+    static final String DFA106_acceptS =
+        "\2\uffff\1\2\5\uffff\1\3\1\4\1\3\2\uffff\1\3\15\uffff\11\3\15\uffff"+
+        "\1\3\1\uffff\1\1";
+    static final String DFA106_specialS =
+        "\1\0\1\1\11\uffff\1\2\1\3\15\uffff\1\4\17\uffff\1\5\1\6\1\7\1\10"+
+        "\1\11\1\12\1\13\3\uffff}>";
+    static final String[] DFA106_transitionS = {
             "\1\1\3\uffff\1\11\21\uffff\6\2\10\uffff\1\10",
-            "\1\14\2\uffff\1\12\1\22\3\12\3\uffff\4\12\4\uffff\2\12\7\uffff"+
-            "\3\12\5\uffff\1\31",
+            "\1\13\2\uffff\1\15\1\14\3\15\3\uffff\4\15\4\uffff\2\15\7\uffff"+
+            "\3\15\5\uffff\1\12",
             "",
             "",
             "",
@@ -21271,16 +21511,16 @@
             "",
             "",
             "",
+            "\1\43\1\34\1\uffff\1\43\1\32\1\37\1\40\1\43\3\uffff\2\43\1"+
+            "\36\1\35\4\uffff\1\41\1\42\7\uffff\2\43\1\33",
+            "\147\61\1\52\2\61\1\53\1\60\6\61\1\56\1\54\17\61\1\55\1\57"+
+            "\21\61",
             "",
-            "\1\33\1\51\1\uffff\1\33\1\42\1\45\1\46\1\33\3\uffff\2\33\1"+
-            "\44\1\43\4\uffff\1\47\1\50\7\uffff\2\33\1\32",
             "",
             "",
             "",
             "",
             "",
-            "\145\51\1\52\2\51\1\53\1\60\6\51\1\56\1\54\17\51\1\55\1\57"+
-            "\21\51",
             "",
             "",
             "",
@@ -21288,6 +21528,7 @@
             "",
             "",
             "",
+            "\1\uffff",
             "",
             "",
             "",
@@ -21296,7 +21537,6 @@
             "",
             "",
             "",
-            "\1\uffff",
             "",
             "",
             "",
@@ -21316,805 +21556,815 @@
             ""
     };
 
-    static final short[] DFA105_eot = DFA.unpackEncodedString(DFA105_eotS);
-    static final short[] DFA105_eof = DFA.unpackEncodedString(DFA105_eofS);
-    static final char[] DFA105_min = DFA.unpackEncodedStringToUnsignedChars(DFA105_minS);
-    static final char[] DFA105_max = DFA.unpackEncodedStringToUnsignedChars(DFA105_maxS);
-    static final short[] DFA105_accept = DFA.unpackEncodedString(DFA105_acceptS);
-    static final short[] DFA105_special = DFA.unpackEncodedString(DFA105_specialS);
-    static final short[][] DFA105_transition;
+    static final short[] DFA106_eot = DFA.unpackEncodedString(DFA106_eotS);
+    static final short[] DFA106_eof = DFA.unpackEncodedString(DFA106_eofS);
+    static final char[] DFA106_min = DFA.unpackEncodedStringToUnsignedChars(DFA106_minS);
+    static final char[] DFA106_max = DFA.unpackEncodedStringToUnsignedChars(DFA106_maxS);
+    static final short[] DFA106_accept = DFA.unpackEncodedString(DFA106_acceptS);
+    static final short[] DFA106_special = DFA.unpackEncodedString(DFA106_specialS);
+    static final short[][] DFA106_transition;
 
     static {
-        int numStates = DFA105_transitionS.length;
-        DFA105_transition = new short[numStates][];
+        int numStates = DFA106_transitionS.length;
+        DFA106_transition = new short[numStates][];
         for (int i=0; i<numStates; i++) {
-            DFA105_transition[i] = DFA.unpackEncodedString(DFA105_transitionS[i]);
+            DFA106_transition[i] = DFA.unpackEncodedString(DFA106_transitionS[i]);
         }
     }
 
-    class DFA105 extends DFA {
+    class DFA106 extends DFA {
 
-        public DFA105(BaseRecognizer recognizer) {
+        public DFA106(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 105;
-            this.eot = DFA105_eot;
-            this.eof = DFA105_eof;
-            this.min = DFA105_min;
-            this.max = DFA105_max;
-            this.accept = DFA105_accept;
-            this.special = DFA105_special;
-            this.transition = DFA105_transition;
+            this.decisionNumber = 106;
+            this.eot = DFA106_eot;
+            this.eof = DFA106_eof;
+            this.min = DFA106_min;
+            this.max = DFA106_max;
+            this.accept = DFA106_accept;
+            this.special = DFA106_special;
+            this.transition = DFA106_transition;
         }
         public String getDescription() {
-            return "1440:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
+            return "1452:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator (ans= constr_parameters )? expression_value -> ^( simple_operator expression_value ) ( ^( constr_parameters ) )? | custom_operator (ans= constr_parameters )? ( expression_value )? -> ^( custom_operator ( expression_value )? ) ( ^( constr_parameters ) )? | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA105_0 = input.LA(1);
+                        int LA106_0 = input.LA(1);
 
                          
-                        int index105_0 = input.index();
+                        int index106_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA105_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 1;}
+                        if ( (LA106_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 1;}
 
-                        else if ( ((LA105_0>=EQUAL && LA105_0<=NOT_EQUAL)) ) {s = 2;}
+                        else if ( ((LA106_0>=EQUAL && LA106_0<=NOT_EQUAL)) ) {s = 2;}
 
-                        else if ( (LA105_0==APPROX) ) {s = 8;}
+                        else if ( (LA106_0==APPROX) ) {s = 8;}
 
-                        else if ( (LA105_0==LEFT_PAREN) ) {s = 9;}
+                        else if ( (LA106_0==LEFT_PAREN) ) {s = 9;}
 
                          
-                        input.seek(index105_0);
+                        input.seek(index106_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA105_1 = input.LA(1);
+                        int LA106_1 = input.LA(1);
 
                          
-                        int index105_1 = input.index();
+                        int index106_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA105_1==STRING||(LA105_1>=COMMA && LA105_1<=AT)||(LA105_1>=BOOL && LA105_1<=DOUBLE_AMPER)||(LA105_1>=SINGLE_PIPE && LA105_1<=SINGLE_AMPER)||(LA105_1>=FLOAT && LA105_1<=LEFT_SQUARE)) && (((isPluggableEvaluator(false))))) {s = 10;}
+                        if ( (LA106_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 10;}
 
-                        else if ( (LA105_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 12;}
+                        else if ( (LA106_1==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 11;}
 
-                        else if ( (LA105_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 18;}
+                        else if ( (LA106_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 12;}
 
-                        else if ( (LA105_1==APPROX) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 25;}
+                        else if ( (LA106_1==STRING||(LA106_1>=COMMA && LA106_1<=AT)||(LA106_1>=BOOL && LA106_1<=DOUBLE_AMPER)||(LA106_1>=SINGLE_PIPE && LA106_1<=SINGLE_AMPER)||(LA106_1>=FLOAT && LA106_1<=LEFT_SQUARE)) && (((isPluggableEvaluator(false))))) {s = 13;}
 
                          
-                        input.seek(index105_1);
+                        input.seek(index106_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA105_12 = input.LA(1);
+                        int LA106_11 = input.LA(1);
 
                          
-                        int index105_12 = input.index();
+                        int index106_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA105_12==LEFT_SQUARE) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 26;}
+                        if ( (LA106_11==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 26;}
 
-                        else if ( (LA105_12==ID||LA105_12==STRING||LA105_12==AT||(LA105_12>=BOOL && LA105_12<=INT)||(LA105_12>=FLOAT && LA105_12<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 27;}
+                        else if ( (LA106_11==LEFT_SQUARE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 27;}
 
-                        else if ( (LA105_12==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 34;}
+                        else if ( (LA106_11==DOT) && (((isPluggableEvaluator(false))))) {s = 28;}
 
-                        else if ( (LA105_12==DOUBLE_AMPER) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 35;}
+                        else if ( (LA106_11==DOUBLE_AMPER) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 29;}
 
-                        else if ( (LA105_12==DOUBLE_PIPE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 36;}
+                        else if ( (LA106_11==DOUBLE_PIPE) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 30;}
 
-                        else if ( (LA105_12==COMMA) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 37;}
+                        else if ( (LA106_11==COMMA) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 31;}
 
-                        else if ( (LA105_12==RIGHT_PAREN) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 38;}
+                        else if ( (LA106_11==RIGHT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 32;}
 
-                        else if ( (LA105_12==SINGLE_PIPE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 39;}
+                        else if ( (LA106_11==SINGLE_PIPE) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 33;}
 
-                        else if ( (LA105_12==SINGLE_AMPER) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 40;}
+                        else if ( (LA106_11==SINGLE_AMPER) && ((((isPluggableEvaluator(false)))||((validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 34;}
 
-                        else if ( (LA105_12==DOT) && (((isPluggableEvaluator(false))))) {s = 41;}
+                        else if ( (LA106_11==ID||LA106_11==STRING||LA106_11==AT||(LA106_11>=BOOL && LA106_11<=INT)||(LA106_11>=FLOAT && LA106_11<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 35;}
 
                          
-                        input.seek(index105_12);
+                        input.seek(index106_11);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA105_18 = input.LA(1);
+                        int LA106_12 = input.LA(1);
 
                          
-                        int index105_18 = input.index();
+                        int index106_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA105_18==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 42;}
+                        if ( (LA106_12==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 42;}
 
-                        else if ( (LA105_18==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 43;}
+                        else if ( (LA106_12==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 43;}
 
-                        else if ( (LA105_18==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 44;}
+                        else if ( (LA106_12==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 44;}
 
-                        else if ( (LA105_18==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 45;}
+                        else if ( (LA106_12==FLOAT) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 45;}
 
-                        else if ( (LA105_18==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 46;}
+                        else if ( (LA106_12==BOOL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 46;}
 
-                        else if ( (LA105_18==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 47;}
+                        else if ( (LA106_12==NULL) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 47;}
 
-                        else if ( (LA105_18==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 48;}
+                        else if ( (LA106_12==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 48;}
 
-                        else if ( ((LA105_18>=VT_COMPILATION_UNIT && LA105_18<=SEMICOLON)||(LA105_18>=DOT && LA105_18<=DOT_STAR)||(LA105_18>=COMMA && LA105_18<=WHEN)||(LA105_18>=DOUBLE_PIPE && LA105_18<=NOT_EQUAL)||(LA105_18>=LEFT_SQUARE && LA105_18<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 41;}
+                        else if ( ((LA106_12>=VT_COMPILATION_UNIT && LA106_12<=SEMICOLON)||(LA106_12>=DOT && LA106_12<=DOT_STAR)||(LA106_12>=COMMA && LA106_12<=WHEN)||(LA106_12>=DOUBLE_PIPE && LA106_12<=NOT_EQUAL)||(LA106_12>=LEFT_SQUARE && LA106_12<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 49;}
 
                          
-                        input.seek(index105_18);
+                        input.seek(index106_12);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA105_34 = input.LA(1);
+                        int LA106_26 = input.LA(1);
 
                          
-                        int index105_34 = input.index();
+                        int index106_26 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 51;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 41;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 49;}
 
                          
-                        input.seek(index105_34);
+                        input.seek(index106_26);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA105_42 = input.LA(1);
+                        int LA106_42 = input.LA(1);
 
                          
-                        int index105_42 = input.index();
+                        int index106_42 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 49;}
 
                          
-                        input.seek(index105_42);
+                        input.seek(index106_42);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA105_43 = input.LA(1);
+                        int LA106_43 = input.LA(1);
 
                          
-                        int index105_43 = input.index();
+                        int index106_43 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 49;}
 
                          
-                        input.seek(index105_43);
+                        input.seek(index106_43);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA105_44 = input.LA(1);
+                        int LA106_44 = input.LA(1);
 
                          
-                        int index105_44 = input.index();
+                        int index106_44 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 49;}
 
                          
-                        input.seek(index105_44);
+                        input.seek(index106_44);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA105_45 = input.LA(1);
+                        int LA106_45 = input.LA(1);
 
                          
-                        int index105_45 = input.index();
+                        int index106_45 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 49;}
 
                          
-                        input.seek(index105_45);
+                        input.seek(index106_45);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA105_46 = input.LA(1);
+                        int LA106_46 = input.LA(1);
 
                          
-                        int index105_46 = input.index();
+                        int index106_46 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 49;}
 
                          
-                        input.seek(index105_46);
+                        input.seek(index106_46);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA105_47 = input.LA(1);
+                        int LA106_47 = input.LA(1);
 
                          
-                        int index105_47 = input.index();
+                        int index106_47 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 49;}
 
                          
-                        input.seek(index105_47);
+                        input.seek(index106_47);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA105_48 = input.LA(1);
+                        int LA106_48 = input.LA(1);
 
                          
-                        int index105_48 = input.index();
+                        int index106_48 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 51;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 41;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 49;}
 
                          
-                        input.seek(index105_48);
+                        input.seek(index106_48);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 105, _s, input);
+                new NoViableAltException(getDescription(), 106, _s, input);
             error(nvae);
             throw nvae;
         }
     }
  
 
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit530 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit535 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_EOF_in_compilation_unit540 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_package_key_in_package_statement595 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_package_id_in_package_statement599 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_package_statement601 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_id628 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_DOT_in_package_id634 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_package_id638 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_statement676 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement683 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement689 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement695 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement701 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement709 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_declaration_in_statement717 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement722 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement727 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_import_statement749 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_import_name_in_import_statement751 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_import_statement754 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_function_import_statement792 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_function_key_in_function_import_statement794 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement796 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement799 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name833 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
-    public static final BitSet FOLLOW_DOT_in_import_name839 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_import_name843 = new BitSet(new long[]{0x0000000000000002L,0x00000C0000000000L});
-    public static final BitSet FOLLOW_DOT_STAR_in_import_name850 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_key_in_global890 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_data_type_in_global892 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_global_id_in_global894 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_global896 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_id925 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_key_in_function957 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_data_type_in_function959 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_function_id_in_function962 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_parameters_in_function964 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_curly_chunk_in_function966 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_id996 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_key_in_query1028 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
-    public static final BitSet FOLLOW_query_id_in_query1030 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_parameters_in_query1038 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query1047 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_end_key_in_query1054 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_query1056 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_id1091 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_query_id1107 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1126 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1135 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
-    public static final BitSet FOLLOW_COMMA_in_parameters1138 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters1142 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1151 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_param_definition1177 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_argument_in_param_definition1180 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument1191 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument1197 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_declare_key_in_type_declaration1220 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1223 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1227 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration1232 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_end_key_in_type_declaration1237 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_type_declare_id1269 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata1288 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata1296 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1303 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_decl_field1328 = new BitSet(new long[]{0x0000000000000000L,0x0006000000000000L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1334 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_COLON_in_decl_field1340 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field1346 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field1350 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1378 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1384 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_key_in_template1421 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
-    public static final BitSet FOLLOW_template_id_in_template1423 = new BitSet(new long[]{0x0000000000000000L,0x0000030000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1430 = new BitSet(new long[]{0x0000000000000000L,0x0000030000000000L});
-    public static final BitSet FOLLOW_template_slot_in_template1438 = new BitSet(new long[]{0x0000000000000000L,0x0000230000000000L});
-    public static final BitSet FOLLOW_end_key_in_template1445 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1449 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_id1482 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_template_id1498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_template_slot1518 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_slot_id_in_template_slot1520 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1522 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_slot_id1551 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_key_in_rule1588 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1590 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_extend_key_in_rule1599 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1601 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule1605 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1608 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_when_part_in_rule1611 = new BitSet(new long[]{0x0000000000000000L,0x0009020000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule1614 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_when_part1658 = new BitSet(new long[]{0x0000000000000000L,0x0002220000000000L});
-    public static final BitSet FOLLOW_COLON_in_when_part1664 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1674 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_id1695 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_rule_id1711 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1732 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_COLON_in_rule_attributes1734 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1744 = new BitSet(new long[]{0x0000000000000002L,0x0000420000000000L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1748 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1755 = new BitSet(new long[]{0x0000000000000002L,0x0000420000000000L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1794 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1800 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1805 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1812 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1819 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1825 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1831 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1837 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1843 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1849 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1855 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1860 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prior_in_rule_attribute1866 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entail_mode_in_rule_attribute1871 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_filter_in_rule_attribute1876 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1890 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1895 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1909 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1914 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1929 = new BitSet(new long[]{0x0000000000000000L,0x0010200000000000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1942 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_enabled1953 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1973 = new BitSet(new long[]{0x0000000000000000L,0x0020200000000000L});
-    public static final BitSet FOLLOW_INT_in_salience1982 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1991 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop2006 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop2011 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus2026 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus2031 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group2048 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group2053 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group2067 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group2072 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group2086 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group2091 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration2105 = new BitSet(new long[]{0x0000000000000000L,0x0020200000000000L});
-    public static final BitSet FOLLOW_INT_in_duration2118 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_duration2129 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect2149 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_dialect2154 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2172 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active2177 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prior_key_in_prior2194 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_prior2199 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entail_mode_key_in_entail_mode2216 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_entail_mode2221 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_filter_key_in_filter2243 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_filter2248 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2268 = new BitSet(new long[]{0x0000000000000002L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2289 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2316 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2326 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2335 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2344 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2350 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2394 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_equiv_key_in_lhs_or2407 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2421 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2434 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2442 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2454 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2499 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_xor_key_in_lhs_or2512 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2526 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2539 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2547 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2559 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2592 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2619 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_square_chunk_in_lhs_or2621 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2634 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2645 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
-    public static final BitSet FOLLOW_hedge_in_lhs_or2675 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_or2677 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_very_key_in_hedge2719 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2755 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2765 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_square_chunk_in_lhs_and2770 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2776 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2785 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2791 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2828 = new BitSet(new long[]{0x0000000000000002L,0x0080020000000000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2858 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2860 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_square_chunk_in_lhs_and2863 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2876 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2890 = new BitSet(new long[]{0x0000000000000002L,0x0080020000000000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2934 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2942 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2948 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2954 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2960 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_lhs_forany_in_lhs_unary2966 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2972 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2983 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2989 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2997 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary3011 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist3027 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3054 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3061 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3069 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3076 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3091 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding3137 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding3139 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not3162 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not3184 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3191 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not3200 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3206 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3216 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval3255 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3264 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall3291 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3296 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_forall3304 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3310 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forany_key_in_lhs_forany3341 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forany3348 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3359 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
-    public static final BitSet FOLLOW_subject_key_in_lhs_forany3378 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3382 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
-    public static final BitSet FOLLOW_weight_key_in_lhs_forany3393 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3397 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forany3413 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source3474 = new BitSet(new long[]{0x0000000000000002L,0x0300000000000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source3478 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source3488 = new BitSet(new long[]{0x0000000000000000L,0x0C00020000000000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source3508 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source3524 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source3541 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source3557 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause3589 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause3594 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause3601 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause3606 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_ID_in_over_elements3621 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements3628 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_over_elements3637 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements3644 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement3670 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement3679 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement3687 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement3692 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement3702 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement3708 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement3716 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3762 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3772 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3777 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3788 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3792 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3797 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3809 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3813 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3818 = new BitSet(new long[]{0x0000000000000000L,0x0000420000000000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3834 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3840 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3898 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3922 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3934 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3950 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3961 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3977 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3983 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement4005 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement4014 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement4021 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement4026 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement4053 = new BitSet(new long[]{0x0000000000000000L,0x0000120000000000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement4061 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id4087 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id4104 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source4124 = new BitSet(new long[]{0x0000000000000002L,0x0000240000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source4139 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source4146 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain4179 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain4186 = new BitSet(new long[]{0x0000000000000002L,0x0000240000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain4202 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain4216 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain4227 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern4263 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern4278 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding4306 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding4312 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding4319 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding4327 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding4335 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression4376 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression4388 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4394 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression4399 = new BitSet(new long[]{0x0000000000000002L,0x0040020000000000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact4439 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact4444 = new BitSet(new long[]{0x0000000000000000L,0x0000A20000000000L});
-    public static final BitSet FOLLOW_constraints_in_fact4455 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact4461 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_fact4468 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints4514 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints4518 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_constraint_in_constraints4525 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint4539 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_constr_config_in_or_constr4572 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr4594 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr4630 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr_config4688 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_PIPE_in_or_constr_config4699 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_or_constr_config4748 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr_config4774 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr_config4844 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_config_in_and_constr4886 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr4910 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr4949 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5029 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_AMPER_in_and_constr_config5040 = new BitSet(new long[]{0x0000000000000000L,0x0001220000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_and_constr_config5089 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5120 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5201 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr5250 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr5253 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr5258 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr5264 = new BitSet(new long[]{0x0000000000000000L,0x0000220000000000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr5274 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr5279 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint5299 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint5301 = new BitSet(new long[]{0x0000000000000002L,0xC000220000000000L,0x000000000000201FL});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5308 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint5314 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint5318 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint5376 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5378 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label5405 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_COLON_in_label5412 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5433 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective5439 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5449 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5470 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective5476 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5483 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression5511 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression5516 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
-    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5520 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
-    public static final BitSet FOLLOW_expression_value_in_constraint_expression5523 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_custom_operator_in_constraint_expression5545 = new BitSet(new long[]{0x0000000000000002L,0x0031320000000000L,0x0000000000000060L});
-    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5549 = new BitSet(new long[]{0x0000000000000002L,0x0031320000000000L,0x0000000000000060L});
-    public static final BitSet FOLLOW_expression_value_in_constraint_expression5552 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression5576 = new BitSet(new long[]{0x0000000000000000L,0x8000220000000000L,0x000000000000201FL});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression5585 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression5590 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator5633 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator5692 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator5731 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator5766 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator5801 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator5836 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_custom_operator5908 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_approx_symb_in_custom_operator5916 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_operator_key_in_custom_operator5919 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_square_chunk_in_custom_operator5927 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator5972 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator5977 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator5979 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator5990 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator5998 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator6002 = new BitSet(new long[]{0x0000000000000000L,0x0031320000000000L,0x0000000000000060L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator6007 = new BitSet(new long[]{0x0000000000000000L,0x0000C00000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator6015 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_constr_parameters6050 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constr_parameters6055 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
-    public static final BitSet FOLLOW_constr_attr_in_constr_parameters6062 = new BitSet(new long[]{0x0000000000000000L,0x0000820000000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constr_parameters6067 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_id_in_constr_attr6103 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_type_in_constr_attr6115 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_args_in_constr_attr6123 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_cut_in_constr_attr6131 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_c_param_prior_in_constr_attr6139 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_id_key_in_c_param_id6161 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_id6168 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_id6177 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_key_in_c_param_type6198 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_type6205 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_type6214 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_kut_key_in_c_param_cut6237 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_cut6244 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_cut6253 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_args_key_in_c_param_args6275 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_args6282 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_args6291 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_prior_key_in_c_param_prior6314 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
-    public static final BitSet FOLLOW_EQUALS_in_c_param_prior6321 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
-    public static final BitSet FOLLOW_STRING_in_c_param_prior6331 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_operator_key6371 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_neg_operator_key6416 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value6453 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value6458 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value6464 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint6483 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint6490 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint6497 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint6504 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint6511 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type6526 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type6532 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type6536 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type6551 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_ID_in_data_type6579 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_DOT_in_data_type6585 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type6589 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type6594 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition6623 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition6630 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path6644 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path6648 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path6652 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element6676 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element6682 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk6711 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data6730 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data6739 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data6745 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data6750 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk6769 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data6792 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data6804 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data6820 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data6831 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk6852 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data6876 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data6888 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data6904 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data6915 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk6936 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data6959 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk_data6971 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data6986 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000000FFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data6997 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key7021 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7025 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key7029 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7033 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key7037 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key7069 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key7073 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key7077 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key7110 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key7114 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key7118 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key7150 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key7154 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key7158 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key7190 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key7194 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key7198 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key7230 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key7234 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key7238 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key7270 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key7274 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key7278 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7310 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key7314 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7318 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key7350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key7354 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key7358 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key7387 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key7414 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key7441 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key7468 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_prior_key7496 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entail_mode_key7529 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_filter_key7562 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key7595 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key7622 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key7649 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key7676 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_extend_key7703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key7730 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key7757 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key7784 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key7811 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key7838 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key7865 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key7892 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key7919 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key7946 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key7973 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_equiv_key8003 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_xor_key8039 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key8075 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key8102 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forany_key8131 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key8164 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key8191 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key8218 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_end_key8245 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_init_key8292 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_subject_key8323 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_weight_key8361 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_very_key8400 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_id_key8450 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_kut_key8498 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_type_key8535 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_args_key8572 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_APPROX_in_approx_symb8613 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2304 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2306 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred1_DRL2308 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred2_DRL2380 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_equiv_key_in_synpred2_DRL2382 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred2_DRL2384 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2485 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_xor_key_in_synpred3_DRL2487 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred3_DRL2489 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred4_DRL2605 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
-    public static final BitSet FOLLOW_constr_parameters_in_synpred4_DRL2608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred4_DRL2612 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred5_DRL2743 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_and_key_in_synpred5_DRL2745 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_square_chunk_in_synpred5_DRL2747 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2841 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_square_chunk_in_synpred6_DRL2843 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred6_DRL2847 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred7_DRL3007 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3044 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_or_key_in_synpred8_DRL3047 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred8_DRL3049 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred9_DRL3172 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_or_key_in_synpred9_DRL3175 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred9_DRL3177 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred10_DRL4133 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_synpred11_DRL4675 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_PIPE_in_synpred11_DRL4677 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_unary_constr_in_synpred12_DRL5016 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
-    public static final BitSet FOLLOW_SINGLE_AMPER_in_synpred12_DRL5018 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit538 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit543 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_EOF_in_compilation_unit548 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_key_in_package_statement603 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_package_id_in_package_statement607 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_package_statement609 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_id636 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_DOT_in_package_id642 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_package_id646 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_statement684 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement691 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement697 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement709 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement717 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement725 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement730 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement735 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_import_statement757 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_import_name_in_import_statement759 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_import_statement762 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_function_import_statement800 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_function_key_in_function_import_statement802 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement804 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement807 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name841 = new BitSet(new long[]{0x0000000000000002L,0x0000300000000000L});
+    public static final BitSet FOLLOW_DOT_in_import_name847 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_import_name851 = new BitSet(new long[]{0x0000000000000002L,0x0000300000000000L});
+    public static final BitSet FOLLOW_DOT_STAR_in_import_name858 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_key_in_global898 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_data_type_in_global900 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_global_id_in_global902 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_global904 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_id933 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_key_in_function965 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_data_type_in_function967 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_function_id_in_function970 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_parameters_in_function972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_curly_chunk_in_function974 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_id1004 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_key_in_query1036 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
+    public static final BitSet FOLLOW_query_id_in_query1038 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_parameters_in_query1046 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query1055 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_end_key_in_query1062 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_query1064 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_id1099 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_query_id1115 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters1134 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1143 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_parameters1146 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters1150 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1159 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_param_definition1185 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_argument_in_param_definition1188 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument1199 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument1205 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_declare_key_in_type_declaration1228 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1231 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1235 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration1240 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_end_key_in_type_declaration1245 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_declare_id1277 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata1296 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata1304 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1311 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_decl_field1336 = new BitSet(new long[]{0x0000000000000000L,0x0018000000000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1342 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_COLON_in_decl_field1348 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field1354 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field1358 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1386 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1392 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_key_in_template1429 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
+    public static final BitSet FOLLOW_template_id_in_template1431 = new BitSet(new long[]{0x0000000000000000L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1438 = new BitSet(new long[]{0x0000000000000000L,0x00000C0000000000L});
+    public static final BitSet FOLLOW_template_slot_in_template1446 = new BitSet(new long[]{0x0000000000000000L,0x00008C0000000000L});
+    public static final BitSet FOLLOW_end_key_in_template1453 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_id1490 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_template_id1506 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_template_slot1526 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_slot_id_in_template_slot1528 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1530 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_slot_id1559 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_key_in_rule1596 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1598 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_extend_key_in_rule1607 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1609 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1613 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1616 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_when_part_in_rule1619 = new BitSet(new long[]{0x0000000000000000L,0x0024080000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1622 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1666 = new BitSet(new long[]{0x0000000000000000L,0x0008880000000000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1672 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1682 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1703 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1719 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1740 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1742 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1752 = new BitSet(new long[]{0x0000000000000002L,0x0001080000000000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1756 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1763 = new BitSet(new long[]{0x0000000000000002L,0x0001080000000000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1802 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1808 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1813 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1820 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1827 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1833 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1839 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1845 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1851 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1857 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1863 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1868 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_in_rule_attribute1874 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_in_rule_attribute1879 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_in_rule_attribute1884 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1898 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1903 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1917 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1922 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1937 = new BitSet(new long[]{0x0000000000000000L,0x0040800000000000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1950 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1961 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1981 = new BitSet(new long[]{0x0000000000000000L,0x0080800000000000L});
+    public static final BitSet FOLLOW_INT_in_salience1990 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1999 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop2014 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop2019 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus2034 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus2039 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group2056 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group2061 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group2075 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group2080 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group2094 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group2099 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration2113 = new BitSet(new long[]{0x0000000000000000L,0x0080800000000000L});
+    public static final BitSet FOLLOW_INT_in_duration2126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_duration2137 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect2157 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_dialect2162 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2180 = new BitSet(new long[]{0x0000000000000002L,0x0040000000000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active2185 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_prior2202 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_prior2207 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entail_mode_key_in_entail_mode2224 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_entail_mode2229 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_filter_key_in_filter2251 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_filter2256 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2276 = new BitSet(new long[]{0x0000000000000002L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2297 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2324 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2334 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2343 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2352 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2358 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2402 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_lhs_or2415 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2429 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2442 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2450 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2462 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2507 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_xor_key_in_lhs_or2520 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2534 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2547 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2555 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2567 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2616 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_implies_key_in_lhs_or2629 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_or2643 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2656 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2664 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2676 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2711 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2738 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_square_chunk_in_lhs_or2740 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2753 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2764 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
+    public static final BitSet FOLLOW_hedge_in_lhs_or2794 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_or2796 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_very_key_in_hedge2838 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2874 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2884 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_square_chunk_in_lhs_and2889 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2895 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2904 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2910 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2947 = new BitSet(new long[]{0x0000000000000002L,0x0200080000000000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2977 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_constr_parameters_in_lhs_and2979 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_square_chunk_in_lhs_and2982 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2995 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and3009 = new BitSet(new long[]{0x0000000000000002L,0x0200080000000000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary3053 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary3061 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary3067 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary3073 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary3079 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_lhs_forany_in_lhs_unary3085 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary3091 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary3102 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary3108 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary3116 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary3130 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist3146 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3173 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist3180 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist3188 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist3195 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist3210 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding3256 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding3258 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not3281 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3303 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not3310 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not3319 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not3325 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not3335 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval3374 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval3383 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall3410 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall3415 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_forall3423 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall3429 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forany_key_in_lhs_forany3460 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forany3467 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3478 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
+    public static final BitSet FOLLOW_subject_key_in_lhs_forany3497 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3501 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
+    public static final BitSet FOLLOW_weight_key_in_lhs_forany3512 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_forany3516 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forany3532 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source3593 = new BitSet(new long[]{0x0000000000000002L,0x0C00000000000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source3597 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source3607 = new BitSet(new long[]{0x0000000000000000L,0x3000080000000000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source3627 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source3643 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source3660 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source3676 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause3708 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3713 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause3720 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause3725 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3740 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements3747 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_over_elements3756 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements3763 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement3789 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement3798 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement3806 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement3811 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement3821 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement3827 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement3835 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3881 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3891 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3896 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3907 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3911 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3916 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3928 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3932 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3937 = new BitSet(new long[]{0x0000000000000000L,0x0001080000000000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3953 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3959 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk4017 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data4041 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data4053 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data4069 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data4080 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause4096 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause4102 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement4124 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement4133 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement4140 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement4145 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement4172 = new BitSet(new long[]{0x0000000000000000L,0x0000480000000000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement4180 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id4206 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id4223 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source4243 = new BitSet(new long[]{0x0000000000000002L,0x0000900000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source4258 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source4265 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain4298 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain4305 = new BitSet(new long[]{0x0000000000000002L,0x0000900000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain4321 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain4335 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain4346 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern4382 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern4397 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding4425 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding4431 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding4438 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding4446 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding4454 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4495 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression4507 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression4513 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression4518 = new BitSet(new long[]{0x0000000000000002L,0x0100080000000000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact4558 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact4563 = new BitSet(new long[]{0x0000000000000000L,0x0002880000000000L});
+    public static final BitSet FOLLOW_constraints_in_fact4574 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact4580 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_fact4587 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints4633 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints4637 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_constraint_in_constraints4644 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint4658 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_constr_config_in_or_constr4691 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr4713 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr4749 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4808 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_or_constr_config4819 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_or_constr_config4868 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4894 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr_config4964 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_config_in_and_constr5006 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr5030 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr5069 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5149 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_and_constr_config5160 = new BitSet(new long[]{0x0000000000000000L,0x0004880000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_and_constr_config5209 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5240 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr_config5321 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr5370 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr5373 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr5378 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr5384 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr5394 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr5399 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint5419 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5421 = new BitSet(new long[]{0x0000000000000002L,0x0000880000000000L,0x000000000000807FL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5428 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint5434 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint5438 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint5496 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint5498 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label5525 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_COLON_in_label5532 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5553 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective5559 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective5569 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5590 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective5596 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective5603 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression5631 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression5636 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5640 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5643 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_custom_operator_in_constraint_expression5665 = new BitSet(new long[]{0x0000000000000002L,0x00C4C80000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_constr_parameters_in_constraint_expression5669 = new BitSet(new long[]{0x0000000000000002L,0x00C4C80000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_expression_value_in_constraint_expression5672 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression5696 = new BitSet(new long[]{0x0000000000000000L,0x0000880000000000L,0x000000000000807EL});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression5705 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression5710 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator5753 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator5812 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator5851 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator5886 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator5921 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator5956 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_custom_operator6028 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_approx_symb_in_custom_operator6036 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_operator_key_in_custom_operator6039 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_square_chunk_in_custom_operator6047 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator6092 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator6097 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator6099 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator6110 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator6118 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator6122 = new BitSet(new long[]{0x0000000000000000L,0x00C4C80000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator6127 = new BitSet(new long[]{0x0000000000000000L,0x0003000000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator6135 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_constr_parameters6170 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constr_parameters6175 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
+    public static final BitSet FOLLOW_constr_attr_in_constr_parameters6182 = new BitSet(new long[]{0x0000000000000000L,0x0002080000000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constr_parameters6187 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_id_in_constr_attr6223 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_type_in_constr_attr6235 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_args_in_constr_attr6243 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_cut_in_constr_attr6251 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_c_param_prior_in_constr_attr6259 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_id_key_in_c_param_id6281 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_id6288 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_id6297 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_key_in_c_param_type6318 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_type6325 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_type6334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_kut_key_in_c_param_cut6357 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_cut6364 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_cut6373 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_args_key_in_c_param_args6395 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_args6402 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_args6411 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_prior_key_in_c_param_prior6434 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_EQUALS_in_c_param_prior6441 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_STRING_in_c_param_prior6451 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key6491 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key6536 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value6573 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value6578 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value6584 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint6603 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint6610 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint6617 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint6624 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint6631 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6646 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type6652 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type6656 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type6671 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_ID_in_data_type6699 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_DOT_in_data_type6705 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type6709 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type6714 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition6743 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition6750 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6764 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path6768 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path6772 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element6796 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element6802 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk6831 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data6850 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data6859 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data6865 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data6870 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk6889 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data6912 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data6924 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data6940 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data6951 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk6972 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data6996 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data7008 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data7024 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data7035 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk7056 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data7079 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data7091 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data7106 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0xFFFFFFFFFFFFFFFFL,0x0000000003FFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data7117 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7141 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7145 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7149 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key7153 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key7157 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7189 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key7193 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key7197 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7230 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key7234 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key7238 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7270 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key7274 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key7278 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7310 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key7314 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key7318 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key7354 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key7358 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7390 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key7394 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key7398 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7430 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key7434 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key7438 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7470 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key7474 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key7478 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key7507 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key7534 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key7561 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key7588 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_prior_key7616 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entail_mode_key7649 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_filter_key7682 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key7715 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key7742 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key7769 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key7796 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key7823 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key7850 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key7877 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key7904 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key7931 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key7958 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key7985 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key8012 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key8039 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key8066 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key8093 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_equiv_key8123 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_xor_key8159 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_implies_key8194 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key8234 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key8261 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forany_key8290 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key8323 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key8350 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key8377 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_end_key8404 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_init_key8451 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_subject_key8482 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_weight_key8520 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_very_key8559 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_id_key8609 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_kut_key8657 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_key8694 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_args_key8731 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_APPROX_in_approx_symb8772 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2312 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2314 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred1_DRL2316 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred2_DRL2388 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_equiv_key_in_synpred2_DRL2390 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred2_DRL2392 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2493 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_xor_key_in_synpred3_DRL2495 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred3_DRL2497 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred4_DRL2602 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_implies_key_in_synpred4_DRL2604 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred4_DRL2606 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred5_DRL2724 = new BitSet(new long[]{0x0000000000000002L,0x0004000000000000L});
+    public static final BitSet FOLLOW_constr_parameters_in_synpred5_DRL2727 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred5_DRL2731 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2862 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2864 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_square_chunk_in_synpred6_DRL2866 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2960 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_square_chunk_in_synpred7_DRL2962 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred7_DRL2966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred8_DRL3126 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred9_DRL3163 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred9_DRL3166 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred9_DRL3168 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred10_DRL3291 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_or_key_in_synpred10_DRL3294 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred10_DRL3296 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred11_DRL4252 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_synpred12_DRL4795 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_PIPE_in_synpred12_DRL4797 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_unary_constr_in_synpred13_DRL5136 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
+    public static final BitSet FOLLOW_SINGLE_AMPER_in_synpred13_DRL5138 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-05-14 14:06:23
+// $ANTLR 3.1.1 /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-05-20 03:15:20
 
 	package org.drools.lang;
 
@@ -36,157 +36,159 @@
 
 public class DescrBuilderTree extends TreeParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_TYPE", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO_FOCUS", "VK_A!
 CTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_TYPE", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CU!
 RLY", "MISC", "APPROX", "EOL", "WS", "EscapeSequence", "HexDigit", "Un
icodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "VT_COMPILATION_UNIT", "VT_FUNCTION_IMPORT", "VT_FACT", "VT_CONSTRAINTS", "VT_LABEL", "VT_QUERY_ID", "VT_TEMPLATE_ID", "VT_TYPE_DECLARE_ID", "VT_RULE_ID", "VT_ENTRYPOINT_ID", "VT_SLOT_ID", "VT_SLOT", "VT_RULE_ATTRIBUTES", "VT_RHS_CHUNK", "VT_CURLY_CHUNK", "VT_SQUARE_CHUNK", "VT_PAREN_CHUNK", "VT_BEHAVIOR", "VT_AND_IMPLICIT", "VT_AND_PREFIX", "VT_OR_PREFIX", "VT_AND_INFIX", "VT_OR_INFIX", "VT_EQUIV", "VT_XOR", "VT_IMPLIES", "VT_ACCUMULATE_INIT_CLAUSE", "VT_ACCUMULATE_ID_CLAUSE", "VT_FROM_SOURCE", "VT_EXPRESSION_CHAIN", "VT_PATTERN", "VT_FACT_BINDING", "VT_FACT_OR", "VT_BIND_FIELD", "VT_FIELD", "VT_ACCESSOR_PATH", "VT_ACCESSOR_ELEMENT", "VT_DATA_TYPE", "VT_PATTERN_TYPE", "VT_PACKAGE_ID", "VT_IMPORT_ID", "VT_GLOBAL_ID", "VT_FUNCTION_ID", "VT_PARAM_LIST", "VT_CONSTRID", "VT_HEDGE", "VT_CONSTR_ATTRIBUTES", "VT_CUT", "VT_PRIOR", "VT_ARGS", "VT_TYPE", "VK_DATE_EFFECTIVE", "VK_DATE_EXPIRES", "VK_LOCK_ON_ACTIVE", "VK_NO_LOOP", "VK_AUTO!
 _FOCUS", "VK_ACTIVATION_GROUP", "VK_AGENDA_GROUP", "VK_RULEFLOW_GROUP", "VK_DURATION", "VK_DIALECT", "VK_SALIENCE", "VK_ENABLED", "VK_ATTRIBUTES", "VK_RULE", "VK_EXTEND", "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EQUIV", "VK_XOR", "VK_IMPLIES", "VK_EXISTS", "VK_FORALL", "VK_FORANY", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "VK_SUBJECT", "VK_WEIGHT", "VK_CUT", "VK_APPROX", "VK_ENTAIL", "VK_PRIOR", "VK_FILTER", "VK_AT", "VK_CONSTRID", "VK_ARGS", "VK_TYPE", "SEMICOLON", "ID", "DOT", "DOT_STAR", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "COLLECT", "SINGLE_PIPE", "SINGLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "TH!
 EN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "APPROX", "EOL", "WS", "Esca
peSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "CUT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int VT_ACCESSOR_ELEMENT=39;
-    public static final int ACCUMULATE=122;
-    public static final int VT_DATA_TYPE=40;
-    public static final int VK_TYPE=103;
-    public static final int DOT_STAR=107;
-    public static final int VK_APPROX=96;
-    public static final int VT_CONSTRID=47;
-    public static final int VK_OPERATOR=90;
-    public static final int VK_FUNCTION=74;
-    public static final int VK_GLOBAL=75;
-    public static final int VK_AND=81;
-    public static final int VT_TYPE=53;
-    public static final int EQUALS=114;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=149;
-    public static final int VK_AUTO_FOCUS=58;
-    public static final int VK_SALIENCE=64;
+    public static final int VT_ACCESSOR_ELEMENT=40;
+    public static final int ACCUMULATE=124;
+    public static final int VT_DATA_TYPE=41;
+    public static final int VK_TYPE=105;
+    public static final int DOT_STAR=109;
+    public static final int VK_APPROX=98;
+    public static final int VK_OPERATOR=92;
+    public static final int VT_CONSTRID=48;
+    public static final int VK_FUNCTION=75;
+    public static final int VK_GLOBAL=76;
+    public static final int VK_AND=82;
+    public static final int VT_TYPE=54;
+    public static final int EQUALS=116;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=151;
+    public static final int VK_AUTO_FOCUS=59;
+    public static final int VK_SALIENCE=65;
     public static final int EOF=-1;
-    public static final int VT_CUT=50;
-    public static final int VT_CONSTR_ATTRIBUTES=49;
-    public static final int VT_PATTERN_TYPE=41;
+    public static final int VT_CUT=51;
+    public static final int VT_CONSTR_ATTRIBUTES=50;
+    public static final int VT_PATTERN_TYPE=42;
     public static final int VT_FUNCTION_IMPORT=5;
     public static final int VT_OR_INFIX=26;
-    public static final int DOUBLE_AMPER=119;
-    public static final int GREATER=128;
-    public static final int EOL=142;
-    public static final int VK_EQUIV=82;
-    public static final int VK_IMPORT=69;
-    public static final int NOT_EQUAL=132;
-    public static final int VK_ACTION=87;
+    public static final int DOUBLE_AMPER=121;
+    public static final int GREATER=130;
+    public static final int EOL=144;
+    public static final int VK_EQUIV=83;
+    public static final int VK_IMPORT=70;
+    public static final int NOT_EQUAL=134;
+    public static final int VK_ACTION=89;
     public static final int VT_EQUIV=27;
-    public static final int VK_RULE=67;
-    public static final int LESS=130;
+    public static final int VK_RULE=68;
+    public static final int LESS=132;
     public static final int VT_SLOT=15;
-    public static final int VK_OR=80;
-    public static final int VK_ARGS=102;
-    public static final int VT_HEDGE=48;
-    public static final int VK_CUT=95;
+    public static final int VK_OR=81;
+    public static final int VK_ARGS=104;
+    public static final int VT_HEDGE=49;
+    public static final int VK_CUT=97;
     public static final int VT_AND_PREFIX=23;
-    public static final int VK_AT=100;
-    public static final int VK_FILTER=99;
-    public static final int NULL=134;
-    public static final int BOOL=116;
-    public static final int VK_ENTAIL=97;
-    public static final int VK_QUERY=72;
-    public static final int VK_SUBJECT=93;
-    public static final int INT=117;
-    public static final int SEMICOLON=104;
-    public static final int VK_PRIOR=98;
-    public static final int VT_FUNCTION_ID=45;
+    public static final int VK_AT=102;
+    public static final int VK_FILTER=101;
+    public static final int NULL=136;
+    public static final int BOOL=118;
+    public static final int VK_ENTAIL=99;
+    public static final int VK_QUERY=73;
+    public static final int VK_SUBJECT=95;
+    public static final int INT=119;
+    public static final int SEMICOLON=106;
+    public static final int VK_PRIOR=100;
+    public static final int VT_FUNCTION_ID=46;
     public static final int VT_RHS_CHUNK=17;
-    public static final int VT_FACT_BINDING=34;
-    public static final int CUT=148;
-    public static final int VK_RULEFLOW_GROUP=61;
-    public static final int VK_ENTRY_POINT=77;
-    public static final int SINGLE_AMPER=125;
-    public static final int VT_PACKAGE_ID=42;
-    public static final int VK_RESULT=89;
+    public static final int VT_FACT_BINDING=35;
+    public static final int CUT=150;
+    public static final int VK_RULEFLOW_GROUP=62;
+    public static final int VK_ENTRY_POINT=78;
+    public static final int SINGLE_AMPER=127;
+    public static final int VT_PACKAGE_ID=43;
+    public static final int VK_RESULT=91;
     public static final int VT_LABEL=8;
-    public static final int WS=143;
-    public static final int VK_NO_LOOP=57;
-    public static final int LEFT_CURLY=138;
+    public static final int WS=145;
+    public static final int VK_NO_LOOP=58;
+    public static final int LEFT_CURLY=140;
     public static final int VT_FACT=6;
-    public static final int VT_PATTERN=33;
-    public static final int VK_IN=79;
-    public static final int LEFT_PAREN=109;
-    public static final int LESS_EQUAL=131;
-    public static final int VT_IMPORT_ID=43;
+    public static final int VT_PATTERN=34;
+    public static final int VK_IN=80;
+    public static final int LEFT_PAREN=111;
+    public static final int LESS_EQUAL=133;
     public static final int VT_RULE_ID=12;
-    public static final int MISC=140;
-    public static final int FROM=120;
+    public static final int VT_IMPORT_ID=44;
+    public static final int MISC=142;
+    public static final int FROM=122;
     public static final int VT_XOR=28;
-    public static final int COLLECT=123;
-    public static final int EscapeSequence=144;
-    public static final int VK_ACTIVATION_GROUP=59;
-    public static final int VK_ENABLED=65;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=150;
-    public static final int VK_PACKAGE=70;
-    public static final int VK_END=91;
-    public static final int OVER=121;
-    public static final int VK_EXTEND=68;
-    public static final int RIGHT_SQUARE=136;
-    public static final int RIGHT_CURLY=139;
-    public static final int SINGLE_PIPE=124;
-    public static final int VT_FACT_OR=35;
-    public static final int VT_FIELD=37;
-    public static final int FLOAT=133;
-    public static final int VT_ACCUMULATE_ID_CLAUSE=30;
-    public static final int VK_EXISTS=84;
-    public static final int VK_FORANY=86;
-    public static final int VK_DATE_EXPIRES=55;
-    public static final int ID=105;
-    public static final int HexDigit=145;
-    public static final int VK_EVAL=76;
+    public static final int COLLECT=125;
+    public static final int EscapeSequence=146;
+    public static final int VK_ACTIVATION_GROUP=60;
+    public static final int VK_ENABLED=66;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=152;
+    public static final int VK_END=93;
+    public static final int VK_PACKAGE=71;
+    public static final int OVER=123;
+    public static final int VK_EXTEND=69;
+    public static final int RIGHT_SQUARE=138;
+    public static final int RIGHT_CURLY=141;
+    public static final int SINGLE_PIPE=126;
+    public static final int VT_FACT_OR=36;
+    public static final int VK_IMPLIES=85;
+    public static final int VT_FIELD=38;
+    public static final int FLOAT=135;
+    public static final int VT_ACCUMULATE_ID_CLAUSE=31;
+    public static final int VK_EXISTS=86;
+    public static final int VK_FORANY=88;
+    public static final int VK_DATE_EXPIRES=56;
+    public static final int ID=107;
+    public static final int HexDigit=147;
+    public static final int VK_EVAL=77;
     public static final int VT_OR_PREFIX=24;
-    public static final int VK_WEIGHT=94;
-    public static final int APPROX=141;
-    public static final int AT=112;
-    public static final int DOUBLE_PIPE=118;
-    public static final int VT_ARGS=52;
-    public static final int RIGHT_PAREN=111;
-    public static final int VK_XOR=83;
+    public static final int VK_WEIGHT=96;
+    public static final int APPROX=143;
+    public static final int AT=114;
+    public static final int DOUBLE_PIPE=120;
+    public static final int VT_ARGS=53;
+    public static final int RIGHT_PAREN=113;
+    public static final int VT_IMPLIES=29;
+    public static final int VK_XOR=84;
     public static final int VT_COMPILATION_UNIT=4;
-    public static final int THEN=137;
-    public static final int VT_EXPRESSION_CHAIN=32;
-    public static final int COMMA=110;
-    public static final int EQUAL=127;
+    public static final int THEN=139;
+    public static final int VT_EXPRESSION_CHAIN=33;
+    public static final int COMMA=112;
+    public static final int EQUAL=129;
     public static final int VT_BEHAVIOR=21;
-    public static final int VK_CONSTRID=101;
-    public static final int VK_DIALECT=63;
+    public static final int VK_CONSTRID=103;
+    public static final int VK_DIALECT=64;
     public static final int VT_QUERY_ID=9;
-    public static final int DOT=106;
-    public static final int VT_PRIOR=51;
-    public static final int VT_GLOBAL_ID=44;
-    public static final int VK_NOT=78;
-    public static final int VT_FROM_SOURCE=31;
-    public static final int VK_DECLARE=73;
+    public static final int DOT=108;
+    public static final int VT_PRIOR=52;
+    public static final int VT_GLOBAL_ID=45;
+    public static final int VK_NOT=79;
+    public static final int VT_FROM_SOURCE=32;
+    public static final int VK_DECLARE=74;
     public static final int VT_ENTRYPOINT_ID=13;
     public static final int VT_PAREN_CHUNK=20;
     public static final int VT_TYPE_DECLARE_ID=11;
-    public static final int VK_REVERSE=88;
-    public static final int VK_LOCK_ON_ACTIVE=56;
-    public static final int VK_TEMPLATE=71;
-    public static final int VK_DURATION=62;
+    public static final int VK_REVERSE=90;
+    public static final int VK_LOCK_ON_ACTIVE=57;
+    public static final int VK_TEMPLATE=72;
+    public static final int VK_DURATION=63;
     public static final int VT_RULE_ATTRIBUTES=16;
     public static final int VT_AND_INFIX=25;
-    public static final int VT_ACCESSOR_PATH=38;
-    public static final int MULTI_LINE_COMMENT=151;
-    public static final int VK_FORALL=85;
-    public static final int COLON=113;
+    public static final int VT_ACCESSOR_PATH=39;
+    public static final int MULTI_LINE_COMMENT=153;
+    public static final int VK_FORALL=87;
+    public static final int COLON=115;
     public static final int VT_AND_IMPLICIT=22;
-    public static final int VT_ACCUMULATE_INIT_CLAUSE=29;
+    public static final int VT_ACCUMULATE_INIT_CLAUSE=30;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_SLOT_ID=14;
-    public static final int VK_ATTRIBUTES=66;
-    public static final int WHEN=115;
-    public static final int UnicodeEscape=146;
+    public static final int VK_ATTRIBUTES=67;
+    public static final int WHEN=117;
+    public static final int UnicodeEscape=148;
     public static final int VT_SQUARE_CHUNK=19;
-    public static final int VK_DATE_EFFECTIVE=54;
+    public static final int VK_DATE_EFFECTIVE=55;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int VT_PARAM_LIST=46;
-    public static final int ARROW=126;
-    public static final int VT_BIND_FIELD=36;
-    public static final int VK_AGENDA_GROUP=60;
+    public static final int VT_PARAM_LIST=47;
+    public static final int ARROW=128;
+    public static final int VT_BIND_FIELD=37;
+    public static final int VK_AGENDA_GROUP=61;
     public static final int VT_CONSTRAINTS=7;
-    public static final int LEFT_SQUARE=135;
-    public static final int GREATER_EQUAL=129;
-    public static final int OctalEscape=147;
-    public static final int VK_INIT=92;
-    public static final int STRING=108;
+    public static final int LEFT_SQUARE=137;
+    public static final int GREATER_EQUAL=131;
+    public static final int OctalEscape=149;
+    public static final int VK_INIT=94;
+    public static final int STRING=110;
 
     // delegates
     // delegators
@@ -2509,7 +2511,7 @@
                     int alt33=2;
                     int LA33_0 = input.LA(1);
 
-                    if ( ((LA33_0>=VT_AND_PREFIX && LA33_0<=VT_XOR)||LA33_0==VT_PATTERN||LA33_0==VT_HEDGE||LA33_0==VK_EVAL||LA33_0==VK_NOT||(LA33_0>=VK_EXISTS && LA33_0<=VK_FORANY)||LA33_0==FROM) ) {
+                    if ( ((LA33_0>=VT_AND_PREFIX && LA33_0<=VT_IMPLIES)||LA33_0==VT_PATTERN||LA33_0==VT_HEDGE||LA33_0==VK_EVAL||LA33_0==VK_NOT||(LA33_0>=VK_EXISTS && LA33_0<=VK_FORANY)||LA33_0==FROM) ) {
                         alt33=1;
                     }
 
@@ -2555,7 +2557,7 @@
     };
 
     // $ANTLR start "lhs"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:238:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_OR_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_AND_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_EQUIV (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_XOR (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VT_HEDGE dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:238:1: lhs returns [BaseDescr baseDescr] : ( ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_OR_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_AND_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_EQUIV (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_XOR (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_IMPLIES (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VT_HEDGE dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) ) | ^( FROM pn= lhs_pattern fe= from_elements ) |!
  pn= lhs_pattern );
     public final DescrBuilderTree.lhs_return lhs() throws RecognitionException {
         DescrBuilderTree.lhs_return retval = new DescrBuilderTree.lhs_return();
         retval.start = input.LT(1);
@@ -2585,87 +2587,92 @@
         	List<BaseDescr> lhsList = new LinkedList<BaseDescr>();
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:3: ( ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_OR_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_AND_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_EQUIV (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_XOR (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VT_HEDGE dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
-            int alt45=14;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:3: ( ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_OR_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_AND_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ ) | ^(start= VT_AND_INFIX (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_EQUIV (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_XOR (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VT_IMPLIES (attribs= constraint_attributes )? dt1= lhs dt2= lhs ) | ^(start= VK_EXISTS dt= lhs ) | ^(start= VK_NOT dt= lhs ) | ^(start= VT_HEDGE dt= lhs ) | ^(start= VK_EVAL pc= VT_PAREN_CHUNK ) | ^(start= VK_FORALL (dt= lhs )+ ) | ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) ) | ^( FROM pn= lhs_pattern fe= from_elements ) | pn= lhs_pattern )
+            int alt46=15;
             switch ( input.LA(1) ) {
             case VT_OR_PREFIX:
                 {
-                alt45=1;
+                alt46=1;
                 }
                 break;
             case VT_OR_INFIX:
                 {
-                alt45=2;
+                alt46=2;
                 }
                 break;
             case VT_AND_PREFIX:
                 {
-                alt45=3;
+                alt46=3;
                 }
                 break;
             case VT_AND_INFIX:
                 {
-                alt45=4;
+                alt46=4;
                 }
                 break;
             case VT_EQUIV:
                 {
-                alt45=5;
+                alt46=5;
                 }
                 break;
             case VT_XOR:
                 {
-                alt45=6;
+                alt46=6;
                 }
                 break;
+            case VT_IMPLIES:
+                {
+                alt46=7;
+                }
+                break;
             case VK_EXISTS:
                 {
-                alt45=7;
+                alt46=8;
                 }
                 break;
             case VK_NOT:
                 {
-                alt45=8;
+                alt46=9;
                 }
                 break;
             case VT_HEDGE:
                 {
-                alt45=9;
+                alt46=10;
                 }
                 break;
             case VK_EVAL:
                 {
-                alt45=10;
+                alt46=11;
                 }
                 break;
             case VK_FORALL:
                 {
-                alt45=11;
+                alt46=12;
                 }
                 break;
             case VK_FORANY:
                 {
-                alt45=12;
+                alt46=13;
                 }
                 break;
             case FROM:
                 {
-                alt45=13;
+                alt46=14;
                 }
                 break;
             case VT_PATTERN:
                 {
-                alt45=14;
+                alt46=15;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 45, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt45) {
+            switch (alt46) {
                 case 1 :
                     // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:241:5: ^(start= VT_OR_PREFIX (attribs= constraint_attributes )? (dt= lhs )+ )
                     {
@@ -2701,7 +2708,7 @@
                         int alt35=2;
                         int LA35_0 = input.LA(1);
 
-                        if ( ((LA35_0>=VT_AND_PREFIX && LA35_0<=VT_XOR)||LA35_0==VT_PATTERN||LA35_0==VT_HEDGE||LA35_0==VK_EVAL||LA35_0==VK_NOT||(LA35_0>=VK_EXISTS && LA35_0<=VK_FORANY)||LA35_0==FROM) ) {
+                        if ( ((LA35_0>=VT_AND_PREFIX && LA35_0<=VT_IMPLIES)||LA35_0==VT_PATTERN||LA35_0==VT_HEDGE||LA35_0==VK_EVAL||LA35_0==VK_NOT||(LA35_0>=VK_EXISTS && LA35_0<=VK_FORANY)||LA35_0==FROM) ) {
                             alt35=1;
                         }
 
@@ -2816,7 +2823,7 @@
                         int alt38=2;
                         int LA38_0 = input.LA(1);
 
-                        if ( ((LA38_0>=VT_AND_PREFIX && LA38_0<=VT_XOR)||LA38_0==VT_PATTERN||LA38_0==VT_HEDGE||LA38_0==VK_EVAL||LA38_0==VK_NOT||(LA38_0>=VK_EXISTS && LA38_0<=VK_FORANY)||LA38_0==FROM) ) {
+                        if ( ((LA38_0>=VT_AND_PREFIX && LA38_0<=VT_IMPLIES)||LA38_0==VT_PATTERN||LA38_0==VT_HEDGE||LA38_0==VK_EVAL||LA38_0==VK_NOT||(LA38_0>=VK_EXISTS && LA38_0<=VK_FORANY)||LA38_0==FROM) ) {
                             alt38=1;
                         }
 
@@ -2989,12 +2996,58 @@
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:265:4: ^(start= VK_EXISTS dt= lhs )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:263:6: ^(start= VT_IMPLIES (attribs= constraint_attributes )? dt1= lhs dt2= lhs )
                     {
-                    start=(DroolsTree)match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1462); 
+                    start=(DroolsTree)match(input,VT_IMPLIES,FOLLOW_VT_IMPLIES_in_lhs1460); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1466);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:263:32: (attribs= constraint_attributes )?
+                    int alt42=2;
+                    int LA42_0 = input.LA(1);
+
+                    if ( (LA42_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt42=1;
+                    }
+                    switch (alt42) {
+                        case 1 :
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:263:32: attribs= constraint_attributes
+                            {
+                            pushFollow(FOLLOW_constraint_attributes_in_lhs1464);
+                            attribs=constraint_attributes();
+
+                            state._fsp--;
+
+
+                            }
+                            break;
+
+                    }
+
+                    pushFollow(FOLLOW_lhs_in_lhs1469);
+                    dt1=lhs();
+
+                    state._fsp--;
+
+                    pushFollow(FOLLOW_lhs_in_lhs1473);
+                    dt2=lhs();
+
+                    state._fsp--;
+
+
+                    match(input, Token.UP, null); 
+                     lhsList.add((dt1!=null?dt1.baseDescr:null));
+                        lhsList.add((dt2!=null?dt2.baseDescr:null));
+                        retval.baseDescr = factory.createImplies(start, lhsList, attribs);  
+
+                    }
+                    break;
+                case 8 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:270:4: ^(start= VK_EXISTS dt= lhs )
+                    {
+                    start=(DroolsTree)match(input,VK_EXISTS,FOLLOW_VK_EXISTS_in_lhs1497); 
+
+                    match(input, Token.DOWN, null); 
+                    pushFollow(FOLLOW_lhs_in_lhs1501);
                     dt=lhs();
 
                     state._fsp--;
@@ -3005,13 +3058,13 @@
 
                     }
                     break;
-                case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:267:4: ^(start= VK_NOT dt= lhs )
+                case 9 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:272:4: ^(start= VK_NOT dt= lhs )
                     {
-                    start=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1478); 
+                    start=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_lhs1513); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1482);
+                    pushFollow(FOLLOW_lhs_in_lhs1517);
                     dt=lhs();
 
                     state._fsp--;
@@ -3022,13 +3075,13 @@
 
                     }
                     break;
-                case 9 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:270:5: ^(start= VT_HEDGE dt= lhs )
+                case 10 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:275:5: ^(start= VT_HEDGE dt= lhs )
                     {
-                    start=(DroolsTree)match(input,VT_HEDGE,FOLLOW_VT_HEDGE_in_lhs1497); 
+                    start=(DroolsTree)match(input,VT_HEDGE,FOLLOW_VT_HEDGE_in_lhs1532); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_lhs1501);
+                    pushFollow(FOLLOW_lhs_in_lhs1536);
                     dt=lhs();
 
                     state._fsp--;
@@ -3039,42 +3092,42 @@
 
                     }
                     break;
-                case 10 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:274:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
+                case 11 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:4: ^(start= VK_EVAL pc= VT_PAREN_CHUNK )
                     {
-                    start=(DroolsTree)match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1518); 
+                    start=(DroolsTree)match(input,VK_EVAL,FOLLOW_VK_EVAL_in_lhs1553); 
 
                     match(input, Token.DOWN, null); 
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1522); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_lhs1557); 
 
                     match(input, Token.UP, null); 
                     	retval.baseDescr = factory.createEval(start, pc);	
 
                     }
                     break;
-                case 11 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:276:4: ^(start= VK_FORALL (dt= lhs )+ )
+                case 12 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:281:4: ^(start= VK_FORALL (dt= lhs )+ )
                     {
-                    start=(DroolsTree)match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1534); 
+                    start=(DroolsTree)match(input,VK_FORALL,FOLLOW_VK_FORALL_in_lhs1569); 
 
                     match(input, Token.DOWN, null); 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:276:22: (dt= lhs )+
-                    int cnt42=0;
-                    loop42:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:281:22: (dt= lhs )+
+                    int cnt43=0;
+                    loop43:
                     do {
-                        int alt42=2;
-                        int LA42_0 = input.LA(1);
+                        int alt43=2;
+                        int LA43_0 = input.LA(1);
 
-                        if ( ((LA42_0>=VT_AND_PREFIX && LA42_0<=VT_XOR)||LA42_0==VT_PATTERN||LA42_0==VT_HEDGE||LA42_0==VK_EVAL||LA42_0==VK_NOT||(LA42_0>=VK_EXISTS && LA42_0<=VK_FORANY)||LA42_0==FROM) ) {
-                            alt42=1;
+                        if ( ((LA43_0>=VT_AND_PREFIX && LA43_0<=VT_IMPLIES)||LA43_0==VT_PATTERN||LA43_0==VT_HEDGE||LA43_0==VK_EVAL||LA43_0==VK_NOT||(LA43_0>=VK_EXISTS && LA43_0<=VK_FORANY)||LA43_0==FROM) ) {
+                            alt43=1;
                         }
 
 
-                        switch (alt42) {
+                        switch (alt43) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:276:23: dt= lhs
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:281:23: dt= lhs
                     	    {
-                    	    pushFollow(FOLLOW_lhs_in_lhs1539);
+                    	    pushFollow(FOLLOW_lhs_in_lhs1574);
                     	    dt=lhs();
 
                     	    state._fsp--;
@@ -3085,12 +3138,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt42 >= 1 ) break loop42;
+                    	    if ( cnt43 >= 1 ) break loop43;
                                 EarlyExitException eee =
-                                    new EarlyExitException(42, input);
+                                    new EarlyExitException(43, input);
                                 throw eee;
                         }
-                        cnt42++;
+                        cnt43++;
                     } while (true);
 
 
@@ -3099,33 +3152,33 @@
 
                     }
                     break;
-                case 12 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:5: ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) )
+                case 13 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:5: ^(start= VK_FORANY (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? ) )
                     {
-                    start=(DroolsTree)match(input,VK_FORANY,FOLLOW_VK_FORANY_in_lhs1558); 
+                    start=(DroolsTree)match(input,VK_FORANY,FOLLOW_VK_FORANY_in_lhs1593); 
 
                     match(input, Token.DOWN, null); 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:23: (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? )
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:24: arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )?
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:23: (arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:24: arg= lhs ( VK_SUBJECT sub= lhs )? ( VK_WEIGHT wgt= lhs )?
                     {
-                    pushFollow(FOLLOW_lhs_in_lhs1563);
+                    pushFollow(FOLLOW_lhs_in_lhs1598);
                     arg=lhs();
 
                     state._fsp--;
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:32: ( VK_SUBJECT sub= lhs )?
-                    int alt43=2;
-                    int LA43_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:32: ( VK_SUBJECT sub= lhs )?
+                    int alt44=2;
+                    int LA44_0 = input.LA(1);
 
-                    if ( (LA43_0==VK_SUBJECT) ) {
-                        alt43=1;
+                    if ( (LA44_0==VK_SUBJECT) ) {
+                        alt44=1;
                     }
-                    switch (alt43) {
+                    switch (alt44) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:33: VK_SUBJECT sub= lhs
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:33: VK_SUBJECT sub= lhs
                             {
-                            match(input,VK_SUBJECT,FOLLOW_VK_SUBJECT_in_lhs1566); 
-                            pushFollow(FOLLOW_lhs_in_lhs1570);
+                            match(input,VK_SUBJECT,FOLLOW_VK_SUBJECT_in_lhs1601); 
+                            pushFollow(FOLLOW_lhs_in_lhs1605);
                             sub=lhs();
 
                             state._fsp--;
@@ -3136,19 +3189,19 @@
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:54: ( VK_WEIGHT wgt= lhs )?
-                    int alt44=2;
-                    int LA44_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:54: ( VK_WEIGHT wgt= lhs )?
+                    int alt45=2;
+                    int LA45_0 = input.LA(1);
 
-                    if ( (LA44_0==VK_WEIGHT) ) {
-                        alt44=1;
+                    if ( (LA45_0==VK_WEIGHT) ) {
+                        alt45=1;
                     }
-                    switch (alt44) {
+                    switch (alt45) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:279:55: VK_WEIGHT wgt= lhs
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:55: VK_WEIGHT wgt= lhs
                             {
-                            match(input,VK_WEIGHT,FOLLOW_VK_WEIGHT_in_lhs1575); 
-                            pushFollow(FOLLOW_lhs_in_lhs1579);
+                            match(input,VK_WEIGHT,FOLLOW_VK_WEIGHT_in_lhs1610); 
+                            pushFollow(FOLLOW_lhs_in_lhs1614);
                             wgt=lhs();
 
                             state._fsp--;
@@ -3168,18 +3221,18 @@
 
                     }
                     break;
-                case 13 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:282:4: ^( FROM pn= lhs_pattern fe= from_elements )
+                case 14 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:287:4: ^( FROM pn= lhs_pattern fe= from_elements )
                     {
-                    match(input,FROM,FOLLOW_FROM_in_lhs1597); 
+                    match(input,FROM,FOLLOW_FROM_in_lhs1632); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs1601);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs1636);
                     pn=lhs_pattern();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_from_elements_in_lhs1605);
+                    pushFollow(FOLLOW_from_elements_in_lhs1640);
                     fe=from_elements();
 
                     state._fsp--;
@@ -3190,10 +3243,10 @@
 
                     }
                     break;
-                case 14 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:284:4: pn= lhs_pattern
+                case 15 :
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:289:4: pn= lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs1616);
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs1651);
                     pn=lhs_pattern();
 
                     state._fsp--;
@@ -3220,7 +3273,7 @@
     };
 
     // $ANTLR start "from_elements"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:288:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:293:1: from_elements returns [PatternSourceDescr patternSourceDescr] : ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause );
     public final DescrBuilderTree.from_elements_return from_elements() throws RecognitionException {
         DescrBuilderTree.from_elements_return retval = new DescrBuilderTree.from_elements_return();
         retval.start = input.LT(1);
@@ -3235,50 +3288,50 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:289:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
-            int alt46=4;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:294:2: ( ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] ) | ^(start= COLLECT dt= lhs ) | ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID ) | fs= from_source_clause )
+            int alt47=4;
             switch ( input.LA(1) ) {
             case ACCUMULATE:
                 {
-                alt46=1;
+                alt47=1;
                 }
                 break;
             case COLLECT:
                 {
-                alt46=2;
+                alt47=2;
                 }
                 break;
             case VK_ENTRY_POINT:
                 {
-                alt46=3;
+                alt47=3;
                 }
                 break;
             case VT_FROM_SOURCE:
                 {
-                alt46=4;
+                alt47=4;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 46, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt46) {
+            switch (alt47) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:289:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:294:4: ^(start= ACCUMULATE dt= lhs ret= accumulate_parts[$patternSourceDescr] )
                     {
-                    start=(DroolsTree)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1637); 
+                    start=(DroolsTree)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_from_elements1672); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_from_elements1641);
+                    pushFollow(FOLLOW_lhs_in_from_elements1676);
                     dt=lhs();
 
                     state._fsp--;
 
                     	retval.patternSourceDescr = factory.createAccumulate(start, (dt!=null?dt.baseDescr:null));	
-                    pushFollow(FOLLOW_accumulate_parts_in_from_elements1651);
+                    pushFollow(FOLLOW_accumulate_parts_in_from_elements1686);
                     ret=accumulate_parts(retval.patternSourceDescr);
 
                     state._fsp--;
@@ -3290,12 +3343,12 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:293:4: ^(start= COLLECT dt= lhs )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:298:4: ^(start= COLLECT dt= lhs )
                     {
-                    start=(DroolsTree)match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1664); 
+                    start=(DroolsTree)match(input,COLLECT,FOLLOW_COLLECT_in_from_elements1699); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_lhs_in_from_elements1668);
+                    pushFollow(FOLLOW_lhs_in_from_elements1703);
                     dt=lhs();
 
                     state._fsp--;
@@ -3307,12 +3360,12 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:295:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:300:4: ^(start= VK_ENTRY_POINT entryId= VT_ENTRYPOINT_ID )
                     {
-                    start=(DroolsTree)match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1680); 
+                    start=(DroolsTree)match(input,VK_ENTRY_POINT,FOLLOW_VK_ENTRY_POINT_in_from_elements1715); 
 
                     match(input, Token.DOWN, null); 
-                    entryId=(DroolsTree)match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1684); 
+                    entryId=(DroolsTree)match(input,VT_ENTRYPOINT_ID,FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1719); 
 
                     match(input, Token.UP, null); 
                     	retval.patternSourceDescr = factory.createEntryPoint(start, entryId);	
@@ -3320,9 +3373,9 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:297:4: fs= from_source_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:302:4: fs= from_source_clause
                     {
-                    pushFollow(FOLLOW_from_source_clause_in_from_elements1695);
+                    pushFollow(FOLLOW_from_source_clause_in_from_elements1730);
                     fs=from_source_clause();
 
                     state._fsp--;
@@ -3346,7 +3399,7 @@
 
 
     // $ANTLR start "accumulate_parts"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:301:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:306:1: accumulate_parts[PatternSourceDescr patternSourceDescr] returns [AccumulateDescr accumulateDescr] : (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] );
     public final AccumulateDescr accumulate_parts(PatternSourceDescr patternSourceDescr) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
@@ -3356,27 +3409,27 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:302:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
-            int alt47=2;
-            int LA47_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:2: (ac1= accumulate_init_clause[$patternSourceDescr] | ac2= accumulate_id_clause[$patternSourceDescr] )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
 
-            if ( (LA47_0==VT_ACCUMULATE_INIT_CLAUSE) ) {
-                alt47=1;
+            if ( (LA48_0==VT_ACCUMULATE_INIT_CLAUSE) ) {
+                alt48=1;
             }
-            else if ( (LA47_0==VT_ACCUMULATE_ID_CLAUSE) ) {
-                alt47=2;
+            else if ( (LA48_0==VT_ACCUMULATE_ID_CLAUSE) ) {
+                alt48=2;
             }
             else {
                 NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
+                    new NoViableAltException("", 48, 0, input);
 
                 throw nvae;
             }
-            switch (alt47) {
+            switch (alt48) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:302:4: ac1= accumulate_init_clause[$patternSourceDescr]
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:307:4: ac1= accumulate_init_clause[$patternSourceDescr]
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_parts1716);
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_parts1751);
                     ac1=accumulate_init_clause(patternSourceDescr);
 
                     state._fsp--;
@@ -3386,9 +3439,9 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:304:4: ac2= accumulate_id_clause[$patternSourceDescr]
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:4: ac2= accumulate_id_clause[$patternSourceDescr]
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_parts1727);
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_parts1762);
                     ac2=accumulate_id_clause(patternSourceDescr);
 
                     state._fsp--;
@@ -3415,7 +3468,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:308:1: accumulate_init_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= VK_INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:313:1: accumulate_init_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= VK_INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) ;
     public final DescrBuilderTree.accumulate_init_clause_return accumulate_init_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
         DescrBuilderTree.accumulate_init_clause_return retval = new DescrBuilderTree.accumulate_init_clause_return();
         retval.start = input.LT(1);
@@ -3428,36 +3481,36 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= VK_INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:309:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= VK_INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:314:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= VK_INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:314:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= VK_INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) )
             {
-            match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1750); 
+            match(input,VT_ACCUMULATE_INIT_CLAUSE,FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1785); 
 
             match(input, Token.DOWN, null); 
-            start=(DroolsTree)match(input,VK_INIT,FOLLOW_VK_INIT_in_accumulate_init_clause1759); 
+            start=(DroolsTree)match(input,VK_INIT,FOLLOW_VK_INIT_in_accumulate_init_clause1794); 
 
             match(input, Token.DOWN, null); 
-            pc1=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1763); 
+            pc1=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1798); 
 
             match(input, Token.UP, null); 
-            match(input,VK_ACTION,FOLLOW_VK_ACTION_in_accumulate_init_clause1771); 
+            match(input,VK_ACTION,FOLLOW_VK_ACTION_in_accumulate_init_clause1806); 
 
             match(input, Token.DOWN, null); 
-            pc2=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1775); 
+            pc2=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1810); 
 
             match(input, Token.UP, null); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:7: (rev= accumulate_init_reverse_clause )?
-            int alt48=2;
-            int LA48_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:7: (rev= accumulate_init_reverse_clause )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
 
-            if ( (LA48_0==VK_REVERSE) ) {
-                alt48=1;
+            if ( (LA49_0==VK_REVERSE) ) {
+                alt49=1;
             }
-            switch (alt48) {
+            switch (alt49) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:312:7: rev= accumulate_init_reverse_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:317:7: rev= accumulate_init_reverse_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1784);
+                    pushFollow(FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1819);
                     rev=accumulate_init_reverse_clause();
 
                     state._fsp--;
@@ -3468,10 +3521,10 @@
 
             }
 
-            match(input,VK_RESULT,FOLLOW_VK_RESULT_in_accumulate_init_clause1791); 
+            match(input,VK_RESULT,FOLLOW_VK_RESULT_in_accumulate_init_clause1826); 
 
             match(input, Token.DOWN, null); 
-            pc3=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1795); 
+            pc3=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1830); 
 
             match(input, Token.UP, null); 
 
@@ -3501,7 +3554,7 @@
     };
 
     // $ANTLR start "accumulate_init_reverse_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:321:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:326:1: accumulate_init_reverse_clause returns [DroolsTree vkReverse, DroolsTree vkReverseChunk] : ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) ;
     public final DescrBuilderTree.accumulate_init_reverse_clause_return accumulate_init_reverse_clause() throws RecognitionException {
         DescrBuilderTree.accumulate_init_reverse_clause_return retval = new DescrBuilderTree.accumulate_init_reverse_clause_return();
         retval.start = input.LT(1);
@@ -3510,13 +3563,13 @@
         DroolsTree pc=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:322:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:2: ( ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:4: ^(vk= VK_REVERSE pc= VT_PAREN_CHUNK )
             {
-            vk=(DroolsTree)match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1818); 
+            vk=(DroolsTree)match(input,VK_REVERSE,FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1853); 
 
             match(input, Token.DOWN, null); 
-            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1822); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1857); 
 
             match(input, Token.UP, null); 
             	retval.vkReverse = vk;
@@ -3537,7 +3590,7 @@
 
 
     // $ANTLR start "accumulate_id_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:327:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:332:1: accumulate_id_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) ;
     public final AccumulateDescr accumulate_id_clause(PatternSourceDescr accumulateParam) throws RecognitionException {
         AccumulateDescr accumulateDescr = null;
 
@@ -3545,14 +3598,14 @@
         DroolsTree pc=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:328:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:328:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:333:2: ( ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:333:4: ^( VT_ACCUMULATE_ID_CLAUSE id= ID pc= VT_PAREN_CHUNK )
             {
-            match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1844); 
+            match(input,VT_ACCUMULATE_ID_CLAUSE,FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1879); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accumulate_id_clause1848); 
-            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1852); 
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accumulate_id_clause1883); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1887); 
 
             match(input, Token.UP, null); 
             	accumulateDescr = factory.setupAccumulateId(accumulateParam, id, pc);	
@@ -3581,7 +3634,7 @@
     };
 
     // $ANTLR start "from_source_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:332:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:337:1: from_source_clause returns [FromDescr fromDescr, AccessorDescr retAccessorDescr] : ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final DescrBuilderTree.from_source_clause_return from_source_clause() throws RecognitionException {
         from_source_clause_stack.push(new from_source_clause_scope());
         DescrBuilderTree.from_source_clause_return retval = new DescrBuilderTree.from_source_clause_return();
@@ -3591,25 +3644,25 @@
         DroolsTree pc=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:340:3: ( ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:340:5: ^( VT_FROM_SOURCE id= ID (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
-            match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_source_clause1874); 
+            match(input,VT_FROM_SOURCE,FOLLOW_VT_FROM_SOURCE_in_from_source_clause1909); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_from_source_clause1878); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:30: (pc= VT_PAREN_CHUNK )?
-            int alt49=2;
-            int LA49_0 = input.LA(1);
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_from_source_clause1913); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:340:30: (pc= VT_PAREN_CHUNK )?
+            int alt50=2;
+            int LA50_0 = input.LA(1);
 
-            if ( (LA49_0==VT_PAREN_CHUNK) ) {
-                alt49=1;
+            if ( (LA50_0==VT_PAREN_CHUNK) ) {
+                alt50=1;
             }
-            switch (alt49) {
+            switch (alt50) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:335:30: pc= VT_PAREN_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:340:30: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1882); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1917); 
 
                     }
                     break;
@@ -3618,18 +3671,18 @@
 
             	((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr = factory.createAccessor(id, pc);	
             		retval.retAccessorDescr = ((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr;	
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:338:3: ( expression_chain )?
-            int alt50=2;
-            int LA50_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:3: ( expression_chain )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
 
-            if ( (LA50_0==VT_EXPRESSION_CHAIN) ) {
-                alt50=1;
+            if ( (LA51_0==VT_EXPRESSION_CHAIN) ) {
+                alt51=1;
             }
-            switch (alt50) {
+            switch (alt51) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:338:3: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source_clause1891);
+                    pushFollow(FOLLOW_expression_chain_in_from_source_clause1926);
                     expression_chain();
 
                     state._fsp--;
@@ -3662,7 +3715,7 @@
     };
 
     // $ANTLR start "expression_chain"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:342:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:347:1: expression_chain : ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) ;
     public final DescrBuilderTree.expression_chain_return expression_chain() throws RecognitionException {
         DescrBuilderTree.expression_chain_return retval = new DescrBuilderTree.expression_chain_return();
         retval.start = input.LT(1);
@@ -3673,43 +3726,43 @@
         DroolsTree pc=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:348:2: ( ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:348:4: ^(start= VT_EXPRESSION_CHAIN id= ID (sc= VT_SQUARE_CHUNK )? (pc= VT_PAREN_CHUNK )? ( expression_chain )? )
             {
-            start=(DroolsTree)match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1910); 
+            start=(DroolsTree)match(input,VT_EXPRESSION_CHAIN,FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1945); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_expression_chain1914); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:40: (sc= VT_SQUARE_CHUNK )?
-            int alt51=2;
-            int LA51_0 = input.LA(1);
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_expression_chain1949); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:348:40: (sc= VT_SQUARE_CHUNK )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            if ( (LA51_0==VT_SQUARE_CHUNK) ) {
-                alt51=1;
+            if ( (LA52_0==VT_SQUARE_CHUNK) ) {
+                alt52=1;
             }
-            switch (alt51) {
+            switch (alt52) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:40: sc= VT_SQUARE_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:348:40: sc= VT_SQUARE_CHUNK
                     {
-                    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1918); 
+                    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1953); 
 
                     }
                     break;
 
             }
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:60: (pc= VT_PAREN_CHUNK )?
-            int alt52=2;
-            int LA52_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:348:60: (pc= VT_PAREN_CHUNK )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
 
-            if ( (LA52_0==VT_PAREN_CHUNK) ) {
-                alt52=1;
+            if ( (LA53_0==VT_PAREN_CHUNK) ) {
+                alt53=1;
             }
-            switch (alt52) {
+            switch (alt53) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:343:60: pc= VT_PAREN_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:348:60: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1923); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_expression_chain1958); 
 
                     }
                     break;
@@ -3718,18 +3771,18 @@
 
             	DeclarativeInvokerDescr declarativeInvokerResult = factory.createExpressionChain(start, id, sc, pc);	
             		((from_source_clause_scope)from_source_clause_stack.peek()).accessorDescr.addInvoker(declarativeInvokerResult);	
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:346:3: ( expression_chain )?
-            int alt53=2;
-            int LA53_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:351:3: ( expression_chain )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
 
-            if ( (LA53_0==VT_EXPRESSION_CHAIN) ) {
-                alt53=1;
+            if ( (LA54_0==VT_EXPRESSION_CHAIN) ) {
+                alt54=1;
             }
-            switch (alt53) {
+            switch (alt54) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:346:3: expression_chain
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:351:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain1931);
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain1966);
                     expression_chain();
 
                     state._fsp--;
@@ -3758,7 +3811,7 @@
 
 
     // $ANTLR start "lhs_pattern"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:349:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:354:1: lhs_pattern returns [BaseDescr baseDescr] : ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? ;
     public final BaseDescr lhs_pattern() throws RecognitionException {
         BaseDescr baseDescr = null;
 
@@ -3768,31 +3821,31 @@
 
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:2: ( ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )? )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:4: ^( VT_PATTERN fe= fact_expression ) (oc= over_clause )?
             {
-            match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1950); 
+            match(input,VT_PATTERN,FOLLOW_VT_PATTERN_in_lhs_pattern1985); 
 
             match(input, Token.DOWN, null); 
-            pushFollow(FOLLOW_fact_expression_in_lhs_pattern1954);
+            pushFollow(FOLLOW_fact_expression_in_lhs_pattern1989);
             fe=fact_expression();
 
             state._fsp--;
 
 
             match(input, Token.UP, null); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:40: (oc= over_clause )?
-            int alt54=2;
-            int LA54_0 = input.LA(1);
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:40: (oc= over_clause )?
+            int alt55=2;
+            int LA55_0 = input.LA(1);
 
-            if ( (LA54_0==OVER) ) {
-                alt54=1;
+            if ( (LA55_0==OVER) ) {
+                alt55=1;
             }
-            switch (alt54) {
+            switch (alt55) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:350:40: oc= over_clause
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:355:40: oc= over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_lhs_pattern1960);
+                    pushFollow(FOLLOW_over_clause_in_lhs_pattern1995);
                     oc=over_clause();
 
                     state._fsp--;
@@ -3822,7 +3875,7 @@
 
 
     // $ANTLR start "over_clause"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:356:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:1: over_clause returns [List behaviorList] : ^( OVER (oe= over_element )+ ) ;
     public final List over_clause() throws RecognitionException {
         List behaviorList = null;
 
@@ -3831,29 +3884,29 @@
 
         behaviorList = new LinkedList();
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:2: ( ^( OVER (oe= over_element )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:4: ^( OVER (oe= over_element )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:2: ( ^( OVER (oe= over_element )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:4: ^( OVER (oe= over_element )+ )
             {
-            match(input,OVER,FOLLOW_OVER_in_over_clause1985); 
+            match(input,OVER,FOLLOW_OVER_in_over_clause2020); 
 
             match(input, Token.DOWN, null); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:11: (oe= over_element )+
-            int cnt55=0;
-            loop55:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:11: (oe= over_element )+
+            int cnt56=0;
+            loop56:
             do {
-                int alt55=2;
-                int LA55_0 = input.LA(1);
+                int alt56=2;
+                int LA56_0 = input.LA(1);
 
-                if ( (LA55_0==VT_BEHAVIOR) ) {
-                    alt55=1;
+                if ( (LA56_0==VT_BEHAVIOR) ) {
+                    alt56=1;
                 }
 
 
-                switch (alt55) {
+                switch (alt56) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:358:12: oe= over_element
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:363:12: oe= over_element
             	    {
-            	    pushFollow(FOLLOW_over_element_in_over_clause1990);
+            	    pushFollow(FOLLOW_over_element_in_over_clause2025);
             	    oe=over_element();
 
             	    state._fsp--;
@@ -3864,12 +3917,12 @@
             	    break;
 
             	default :
-            	    if ( cnt55 >= 1 ) break loop55;
+            	    if ( cnt56 >= 1 ) break loop56;
                         EarlyExitException eee =
-                            new EarlyExitException(55, input);
+                            new EarlyExitException(56, input);
                         throw eee;
                 }
-                cnt55++;
+                cnt56++;
             } while (true);
 
 
@@ -3890,7 +3943,7 @@
 
 
     // $ANTLR start "over_element"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:361:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:366:1: over_element returns [BehaviorDescr behavior] : ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) ;
     public final BehaviorDescr over_element() throws RecognitionException {
         BehaviorDescr behavior = null;
 
@@ -3898,15 +3951,15 @@
         DroolsTree pc=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:362:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:362:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:367:2: ( ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:367:4: ^( VT_BEHAVIOR ID id2= ID pc= VT_PAREN_CHUNK )
             {
-            match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element2011); 
+            match(input,VT_BEHAVIOR,FOLLOW_VT_BEHAVIOR_in_over_element2046); 
 
             match(input, Token.DOWN, null); 
-            match(input,ID,FOLLOW_ID_in_over_element2013); 
-            id2=(DroolsTree)match(input,ID,FOLLOW_ID_in_over_element2017); 
-            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element2021); 
+            match(input,ID,FOLLOW_ID_in_over_element2048); 
+            id2=(DroolsTree)match(input,ID,FOLLOW_ID_in_over_element2052); 
+            pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_over_element2056); 
 
             match(input, Token.UP, null); 
             	behavior = factory.createBehavior(id2,pc);	
@@ -3929,7 +3982,7 @@
     };
 
     // $ANTLR start "fact_expression"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:366:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? ) | ^( VK_IN (not= VK_NOT )? (!
 fe= fact_expression )+ ) | ^( ( DOUBLE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:371:1: fact_expression returns [BaseDescr descr] : ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? ) | ^( VK_IN (not= VK_NOT )? (!
 fe= fact_expression )+ ) | ^( ( DOUBLE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK );
     public final DescrBuilderTree.fact_expression_return fact_expression() throws RecognitionException {
         DescrBuilderTree.fact_expression_return retval = new DescrBuilderTree.fact_expression_return();
         retval.start = input.LT(1);
@@ -3967,161 +4020,161 @@
         	List<BaseDescr> exprList = new LinkedList<BaseDescr>();
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( ( DOUB!
 LE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
-            int alt70=23;
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374:3: ( ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? ) | ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression ) | ^(start= VT_FACT_OR left= fact_expression right= fact_expression ) | ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? ) | ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression ) | ^( VK_EVAL pc= VT_PAREN_CHUNK ) | ^(op= EQUAL fe= fact_expression ) | ^(op= NOT_EQUAL fe= fact_expression ) | ^(op= GREATER fe= fact_expression ) | ^(op= GREATER_EQUAL fe= fact_expression ) | ^(op= LESS fe= fact_expression ) | ^(op= LESS_EQUAL fe= fact_expression ) | ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? ) | ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ ) | ^( ( DOUB!
 LE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression ) | ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) | s= STRING | i= INT | f= FLOAT | b= BOOL | n= NULL | pc= VT_PAREN_CHUNK )
+            int alt71=23;
             switch ( input.LA(1) ) {
             case VT_FACT:
                 {
-                alt70=1;
+                alt71=1;
                 }
                 break;
             case VT_FACT_BINDING:
                 {
-                alt70=2;
+                alt71=2;
                 }
                 break;
             case VT_FACT_OR:
                 {
-                alt70=3;
+                alt71=3;
                 }
                 break;
             case VT_FIELD:
                 {
-                alt70=4;
+                alt71=4;
                 }
                 break;
             case VT_BIND_FIELD:
                 {
-                alt70=5;
+                alt71=5;
                 }
                 break;
             case VK_EVAL:
                 {
-                alt70=6;
+                alt71=6;
                 }
                 break;
             case EQUAL:
                 {
-                alt70=7;
+                alt71=7;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt70=8;
+                alt71=8;
                 }
                 break;
             case GREATER:
                 {
-                alt70=9;
+                alt71=9;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt70=10;
+                alt71=10;
                 }
                 break;
             case LESS:
                 {
-                alt70=11;
+                alt71=11;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt70=12;
+                alt71=12;
                 }
                 break;
             case VK_OPERATOR:
                 {
-                alt70=13;
+                alt71=13;
                 }
                 break;
             case VK_IN:
                 {
-                alt70=14;
+                alt71=14;
                 }
                 break;
             case DOUBLE_PIPE:
             case SINGLE_PIPE:
                 {
-                alt70=15;
+                alt71=15;
                 }
                 break;
             case DOUBLE_AMPER:
             case SINGLE_AMPER:
                 {
-                alt70=16;
+                alt71=16;
                 }
                 break;
             case VT_ACCESSOR_PATH:
                 {
-                alt70=17;
+                alt71=17;
                 }
                 break;
             case STRING:
                 {
-                alt70=18;
+                alt71=18;
                 }
                 break;
             case INT:
                 {
-                alt70=19;
+                alt71=19;
                 }
                 break;
             case FLOAT:
                 {
-                alt70=20;
+                alt71=20;
                 }
                 break;
             case BOOL:
                 {
-                alt70=21;
+                alt71=21;
                 }
                 break;
             case NULL:
                 {
-                alt70=22;
+                alt71=22;
                 }
                 break;
             case VT_PAREN_CHUNK:
                 {
-                alt70=23;
+                alt71=23;
                 }
                 break;
             default:
                 NoViableAltException nvae =
-                    new NoViableAltException("", 70, 0, input);
+                    new NoViableAltException("", 71, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt70) {
+            switch (alt71) {
                 case 1 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374:5: ^( VT_FACT pt= pattern_type (fe= fact_expression )* (attribs= constraint_attributes )? )
                     {
-                    match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression2044); 
+                    match(input,VT_FACT,FOLLOW_VT_FACT_in_fact_expression2079); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_pattern_type_in_fact_expression2048);
+                    pushFollow(FOLLOW_pattern_type_in_fact_expression2083);
                     pt=pattern_type();
 
                     state._fsp--;
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:31: (fe= fact_expression )*
-                    loop56:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374:31: (fe= fact_expression )*
+                    loop57:
                     do {
-                        int alt56=2;
-                        int LA56_0 = input.LA(1);
+                        int alt57=2;
+                        int LA57_0 = input.LA(1);
 
-                        if ( (LA56_0==VT_FACT||LA56_0==VT_PAREN_CHUNK||(LA56_0>=VT_FACT_BINDING && LA56_0<=VT_ACCESSOR_PATH)||LA56_0==VK_EVAL||LA56_0==VK_IN||LA56_0==VK_OPERATOR||LA56_0==STRING||(LA56_0>=BOOL && LA56_0<=DOUBLE_AMPER)||(LA56_0>=SINGLE_PIPE && LA56_0<=SINGLE_AMPER)||(LA56_0>=EQUAL && LA56_0<=NULL)) ) {
-                            alt56=1;
+                        if ( (LA57_0==VT_FACT||LA57_0==VT_PAREN_CHUNK||(LA57_0>=VT_FACT_BINDING && LA57_0<=VT_ACCESSOR_PATH)||LA57_0==VK_EVAL||LA57_0==VK_IN||LA57_0==VK_OPERATOR||LA57_0==STRING||(LA57_0>=BOOL && LA57_0<=DOUBLE_AMPER)||(LA57_0>=SINGLE_PIPE && LA57_0<=SINGLE_AMPER)||(LA57_0>=EQUAL && LA57_0<=NULL)) ) {
+                            alt57=1;
                         }
 
 
-                        switch (alt56) {
+                        switch (alt57) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:32: fe= fact_expression
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374:32: fe= fact_expression
                     	    {
-                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2053);
+                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2088);
                     	    fe=fact_expression();
 
                     	    state._fsp--;
@@ -4132,22 +4185,22 @@
                     	    break;
 
                     	default :
-                    	    break loop56;
+                    	    break loop57;
                         }
                     } while (true);
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:87: (attribs= constraint_attributes )?
-                    int alt57=2;
-                    int LA57_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374:87: (attribs= constraint_attributes )?
+                    int alt58=2;
+                    int LA58_0 = input.LA(1);
 
-                    if ( (LA57_0==VT_CONSTR_ATTRIBUTES) ) {
-                        alt57=1;
+                    if ( (LA58_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt58=1;
                     }
-                    switch (alt57) {
+                    switch (alt58) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:369:87: attribs= constraint_attributes
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:374:87: attribs= constraint_attributes
                             {
-                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2061);
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2096);
                             attribs=constraint_attributes();
 
                             state._fsp--;
@@ -4165,13 +4218,13 @@
                     }
                     break;
                 case 2 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:371:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:4: ^( VT_FACT_BINDING label= VT_LABEL fact= fact_expression )
                     {
-                    match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression2072); 
+                    match(input,VT_FACT_BINDING,FOLLOW_VT_FACT_BINDING_in_fact_expression2107); 
 
                     match(input, Token.DOWN, null); 
-                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression2076); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2080);
+                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression2111); 
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2115);
                     fact=fact_expression();
 
                     state._fsp--;
@@ -4183,17 +4236,17 @@
                     }
                     break;
                 case 3 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:373:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:378:4: ^(start= VT_FACT_OR left= fact_expression right= fact_expression )
                     {
-                    start=(DroolsTree)match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression2093); 
+                    start=(DroolsTree)match(input,VT_FACT_OR,FOLLOW_VT_FACT_OR_in_fact_expression2128); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2097);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2132);
                     left=fact_expression();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2101);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2136);
                     right=fact_expression();
 
                     state._fsp--;
@@ -4205,28 +4258,28 @@
                     }
                     break;
                 case 4 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:4: ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:381:4: ^( VT_FIELD field= field_element (fe= fact_expression )? (attribs= constraint_attributes )? )
                     {
-                    match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression2113); 
+                    match(input,VT_FIELD,FOLLOW_VT_FIELD_in_fact_expression2148); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_field_element_in_fact_expression2117);
+                    pushFollow(FOLLOW_field_element_in_fact_expression2152);
                     field=field_element();
 
                     state._fsp--;
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:37: (fe= fact_expression )?
-                    int alt58=2;
-                    int LA58_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:381:37: (fe= fact_expression )?
+                    int alt59=2;
+                    int LA59_0 = input.LA(1);
 
-                    if ( (LA58_0==VT_FACT||LA58_0==VT_PAREN_CHUNK||(LA58_0>=VT_FACT_BINDING && LA58_0<=VT_ACCESSOR_PATH)||LA58_0==VK_EVAL||LA58_0==VK_IN||LA58_0==VK_OPERATOR||LA58_0==STRING||(LA58_0>=BOOL && LA58_0<=DOUBLE_AMPER)||(LA58_0>=SINGLE_PIPE && LA58_0<=SINGLE_AMPER)||(LA58_0>=EQUAL && LA58_0<=NULL)) ) {
-                        alt58=1;
+                    if ( (LA59_0==VT_FACT||LA59_0==VT_PAREN_CHUNK||(LA59_0>=VT_FACT_BINDING && LA59_0<=VT_ACCESSOR_PATH)||LA59_0==VK_EVAL||LA59_0==VK_IN||LA59_0==VK_OPERATOR||LA59_0==STRING||(LA59_0>=BOOL && LA59_0<=DOUBLE_AMPER)||(LA59_0>=SINGLE_PIPE && LA59_0<=SINGLE_AMPER)||(LA59_0>=EQUAL && LA59_0<=NULL)) ) {
+                        alt59=1;
                     }
-                    switch (alt58) {
+                    switch (alt59) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:37: fe= fact_expression
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:381:37: fe= fact_expression
                             {
-                            pushFollow(FOLLOW_fact_expression_in_fact_expression2121);
+                            pushFollow(FOLLOW_fact_expression_in_fact_expression2156);
                             fe=fact_expression();
 
                             state._fsp--;
@@ -4237,18 +4290,18 @@
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:62: (attribs= constraint_attributes )?
-                    int alt59=2;
-                    int LA59_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:381:62: (attribs= constraint_attributes )?
+                    int alt60=2;
+                    int LA60_0 = input.LA(1);
 
-                    if ( (LA59_0==VT_CONSTR_ATTRIBUTES) ) {
-                        alt59=1;
+                    if ( (LA60_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt60=1;
                     }
-                    switch (alt59) {
+                    switch (alt60) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:376:62: attribs= constraint_attributes
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:381:62: attribs= constraint_attributes
                             {
-                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2126);
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2161);
                             attribs=constraint_attributes();
 
                             state._fsp--;
@@ -4270,13 +4323,13 @@
                     }
                     break;
                 case 5 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:382:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:387:4: ^( VT_BIND_FIELD label= VT_LABEL fe= fact_expression )
                     {
-                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression2137); 
+                    match(input,VT_BIND_FIELD,FOLLOW_VT_BIND_FIELD_in_fact_expression2172); 
 
                     match(input, Token.DOWN, null); 
-                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression2141); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2145);
+                    label=(DroolsTree)match(input,VT_LABEL,FOLLOW_VT_LABEL_in_fact_expression2176); 
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2180);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -4288,12 +4341,12 @@
                     }
                     break;
                 case 6 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:385:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:390:4: ^( VK_EVAL pc= VT_PAREN_CHUNK )
                     {
-                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression2156); 
+                    match(input,VK_EVAL,FOLLOW_VK_EVAL_in_fact_expression2191); 
 
                     match(input, Token.DOWN, null); 
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2160); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2195); 
 
                     match(input, Token.UP, null); 
                     	retval.descr = factory.createPredicate(pc);	
@@ -4301,12 +4354,12 @@
                     }
                     break;
                 case 7 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:388:4: ^(op= EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:393:4: ^(op= EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression2174); 
+                    op=(DroolsTree)match(input,EQUAL,FOLLOW_EQUAL_in_fact_expression2209); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2178);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2213);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -4318,12 +4371,12 @@
                     }
                     break;
                 case 8 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:390:4: ^(op= NOT_EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:395:4: ^(op= NOT_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression2190); 
+                    op=(DroolsTree)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_fact_expression2225); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2194);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2229);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -4335,12 +4388,12 @@
                     }
                     break;
                 case 9 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:392:4: ^(op= GREATER fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:397:4: ^(op= GREATER fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,GREATER,FOLLOW_GREATER_in_fact_expression2206); 
+                    op=(DroolsTree)match(input,GREATER,FOLLOW_GREATER_in_fact_expression2241); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2210);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2245);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -4352,12 +4405,12 @@
                     }
                     break;
                 case 10 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:394:4: ^(op= GREATER_EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:399:4: ^(op= GREATER_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression2222); 
+                    op=(DroolsTree)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_fact_expression2257); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2226);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2261);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -4369,12 +4422,12 @@
                     }
                     break;
                 case 11 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:396:4: ^(op= LESS fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:401:4: ^(op= LESS fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,LESS,FOLLOW_LESS_in_fact_expression2238); 
+                    op=(DroolsTree)match(input,LESS,FOLLOW_LESS_in_fact_expression2273); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2242);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2277);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -4386,12 +4439,12 @@
                     }
                     break;
                 case 12 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:398:4: ^(op= LESS_EQUAL fe= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:403:4: ^(op= LESS_EQUAL fe= fact_expression )
                     {
-                    op=(DroolsTree)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression2254); 
+                    op=(DroolsTree)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_fact_expression2289); 
 
                     match(input, Token.DOWN, null); 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2258);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2293);
                     fe=fact_expression();
 
                     state._fsp--;
@@ -4403,100 +4456,100 @@
                     }
                     break;
                 case 13 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:4: ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:4: ^(op= VK_OPERATOR (not= VK_NOT )? (approx= VK_APPROX )? (param= VT_SQUARE_CHUNK )? (attribs= constraint_attributes )? (fe= fact_expression )? )
                     {
-                    op=(DroolsTree)match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_in_fact_expression2270); 
+                    op=(DroolsTree)match(input,VK_OPERATOR,FOLLOW_VK_OPERATOR_in_fact_expression2305); 
 
                     if ( input.LA(1)==Token.DOWN ) {
                         match(input, Token.DOWN, null); 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:24: (not= VK_NOT )?
-                        int alt60=2;
-                        int LA60_0 = input.LA(1);
-
-                        if ( (LA60_0==VK_NOT) ) {
-                            alt60=1;
-                        }
-                        switch (alt60) {
-                            case 1 :
-                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:24: not= VK_NOT
-                                {
-                                not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2274); 
-
-                                }
-                                break;
-
-                        }
-
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:39: (approx= VK_APPROX )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:24: (not= VK_NOT )?
                         int alt61=2;
                         int LA61_0 = input.LA(1);
 
-                        if ( (LA61_0==VK_APPROX) ) {
+                        if ( (LA61_0==VK_NOT) ) {
                             alt61=1;
                         }
                         switch (alt61) {
                             case 1 :
-                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:39: approx= VK_APPROX
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:24: not= VK_NOT
                                 {
-                                approx=(DroolsTree)match(input,VK_APPROX,FOLLOW_VK_APPROX_in_fact_expression2279); 
+                                not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2309); 
 
                                 }
                                 break;
 
                         }
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:56: (param= VT_SQUARE_CHUNK )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:39: (approx= VK_APPROX )?
                         int alt62=2;
                         int LA62_0 = input.LA(1);
 
-                        if ( (LA62_0==VT_SQUARE_CHUNK) ) {
+                        if ( (LA62_0==VK_APPROX) ) {
                             alt62=1;
                         }
                         switch (alt62) {
                             case 1 :
-                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:56: param= VT_SQUARE_CHUNK
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:39: approx= VK_APPROX
                                 {
-                                param=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2284); 
+                                approx=(DroolsTree)match(input,VK_APPROX,FOLLOW_VK_APPROX_in_fact_expression2314); 
 
                                 }
                                 break;
 
                         }
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:81: (attribs= constraint_attributes )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:56: (param= VT_SQUARE_CHUNK )?
                         int alt63=2;
                         int LA63_0 = input.LA(1);
 
-                        if ( (LA63_0==VT_CONSTR_ATTRIBUTES) ) {
+                        if ( (LA63_0==VT_SQUARE_CHUNK) ) {
                             alt63=1;
                         }
                         switch (alt63) {
                             case 1 :
-                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:81: attribs= constraint_attributes
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:56: param= VT_SQUARE_CHUNK
                                 {
-                                pushFollow(FOLLOW_constraint_attributes_in_fact_expression2289);
-                                attribs=constraint_attributes();
+                                param=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2319); 
 
-                                state._fsp--;
-
-
                                 }
                                 break;
 
                         }
 
-                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:107: (fe= fact_expression )?
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:81: (attribs= constraint_attributes )?
                         int alt64=2;
                         int LA64_0 = input.LA(1);
 
-                        if ( (LA64_0==VT_FACT||LA64_0==VT_PAREN_CHUNK||(LA64_0>=VT_FACT_BINDING && LA64_0<=VT_ACCESSOR_PATH)||LA64_0==VK_EVAL||LA64_0==VK_IN||LA64_0==VK_OPERATOR||LA64_0==STRING||(LA64_0>=BOOL && LA64_0<=DOUBLE_AMPER)||(LA64_0>=SINGLE_PIPE && LA64_0<=SINGLE_AMPER)||(LA64_0>=EQUAL && LA64_0<=NULL)) ) {
+                        if ( (LA64_0==VT_CONSTR_ATTRIBUTES) ) {
                             alt64=1;
                         }
                         switch (alt64) {
                             case 1 :
-                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:400:107: fe= fact_expression
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:81: attribs= constraint_attributes
                                 {
-                                pushFollow(FOLLOW_fact_expression_in_fact_expression2294);
+                                pushFollow(FOLLOW_constraint_attributes_in_fact_expression2324);
+                                attribs=constraint_attributes();
+
+                                state._fsp--;
+
+
+                                }
+                                break;
+
+                        }
+
+                        // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:107: (fe= fact_expression )?
+                        int alt65=2;
+                        int LA65_0 = input.LA(1);
+
+                        if ( (LA65_0==VT_FACT||LA65_0==VT_PAREN_CHUNK||(LA65_0>=VT_FACT_BINDING && LA65_0<=VT_ACCESSOR_PATH)||LA65_0==VK_EVAL||LA65_0==VK_IN||LA65_0==VK_OPERATOR||LA65_0==STRING||(LA65_0>=BOOL && LA65_0<=DOUBLE_AMPER)||(LA65_0>=SINGLE_PIPE && LA65_0<=SINGLE_AMPER)||(LA65_0>=EQUAL && LA65_0<=NULL)) ) {
+                            alt65=1;
+                        }
+                        switch (alt65) {
+                            case 1 :
+                                // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:405:107: fe= fact_expression
+                                {
+                                pushFollow(FOLLOW_fact_expression_in_fact_expression2329);
                                 fe=fact_expression();
 
                                 state._fsp--;
@@ -4515,46 +4568,46 @@
                     }
                     break;
                 case 14 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:409:4: ^( VK_IN (not= VK_NOT )? (fe= fact_expression )+ )
                     {
-                    match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression2309); 
+                    match(input,VK_IN,FOLLOW_VK_IN_in_fact_expression2344); 
 
                     match(input, Token.DOWN, null); 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:15: (not= VK_NOT )?
-                    int alt65=2;
-                    int LA65_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:409:15: (not= VK_NOT )?
+                    int alt66=2;
+                    int LA66_0 = input.LA(1);
 
-                    if ( (LA65_0==VK_NOT) ) {
-                        alt65=1;
+                    if ( (LA66_0==VK_NOT) ) {
+                        alt66=1;
                     }
-                    switch (alt65) {
+                    switch (alt66) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:15: not= VK_NOT
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:409:15: not= VK_NOT
                             {
-                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2313); 
+                            not=(DroolsTree)match(input,VK_NOT,FOLLOW_VK_NOT_in_fact_expression2348); 
 
                             }
                             break;
 
                     }
 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:24: (fe= fact_expression )+
-                    int cnt66=0;
-                    loop66:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:409:24: (fe= fact_expression )+
+                    int cnt67=0;
+                    loop67:
                     do {
-                        int alt66=2;
-                        int LA66_0 = input.LA(1);
+                        int alt67=2;
+                        int LA67_0 = input.LA(1);
 
-                        if ( (LA66_0==VT_FACT||LA66_0==VT_PAREN_CHUNK||(LA66_0>=VT_FACT_BINDING && LA66_0<=VT_ACCESSOR_PATH)||LA66_0==VK_EVAL||LA66_0==VK_IN||LA66_0==VK_OPERATOR||LA66_0==STRING||(LA66_0>=BOOL && LA66_0<=DOUBLE_AMPER)||(LA66_0>=SINGLE_PIPE && LA66_0<=SINGLE_AMPER)||(LA66_0>=EQUAL && LA66_0<=NULL)) ) {
-                            alt66=1;
+                        if ( (LA67_0==VT_FACT||LA67_0==VT_PAREN_CHUNK||(LA67_0>=VT_FACT_BINDING && LA67_0<=VT_ACCESSOR_PATH)||LA67_0==VK_EVAL||LA67_0==VK_IN||LA67_0==VK_OPERATOR||LA67_0==STRING||(LA67_0>=BOOL && LA67_0<=DOUBLE_AMPER)||(LA67_0>=SINGLE_PIPE && LA67_0<=SINGLE_AMPER)||(LA67_0>=EQUAL && LA67_0<=NULL)) ) {
+                            alt67=1;
                         }
 
 
-                        switch (alt66) {
+                        switch (alt67) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:404:25: fe= fact_expression
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:409:25: fe= fact_expression
                     	    {
-                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2319);
+                    	    pushFollow(FOLLOW_fact_expression_in_fact_expression2354);
                     	    fe=fact_expression();
 
                     	    state._fsp--;
@@ -4565,12 +4618,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt66 >= 1 ) break loop66;
+                    	    if ( cnt67 >= 1 ) break loop67;
                                 EarlyExitException eee =
-                                    new EarlyExitException(66, input);
+                                    new EarlyExitException(67, input);
                                 throw eee;
                         }
-                        cnt66++;
+                        cnt67++;
                     } while (true);
 
 
@@ -4580,7 +4633,7 @@
                     }
                     break;
                 case 15 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:407:4: ^( ( DOUBLE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:412:4: ^( ( DOUBLE_PIPE | SINGLE_PIPE ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression )
                     {
                     if ( input.LA(1)==DOUBLE_PIPE||input.LA(1)==SINGLE_PIPE ) {
                         input.consume();
@@ -4593,18 +4646,18 @@
 
 
                     match(input, Token.DOWN, null); 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:407:42: (attribs= constraint_attributes )?
-                    int alt67=2;
-                    int LA67_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:412:42: (attribs= constraint_attributes )?
+                    int alt68=2;
+                    int LA68_0 = input.LA(1);
 
-                    if ( (LA67_0==VT_CONSTR_ATTRIBUTES) ) {
-                        alt67=1;
+                    if ( (LA68_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt68=1;
                     }
-                    switch (alt67) {
+                    switch (alt68) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:407:42: attribs= constraint_attributes
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:412:42: attribs= constraint_attributes
                             {
-                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2345);
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2380);
                             attribs=constraint_attributes();
 
                             state._fsp--;
@@ -4615,12 +4668,12 @@
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2350);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2385);
                     left=fact_expression();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2354);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2389);
                     right=fact_expression();
 
                     state._fsp--;
@@ -4632,7 +4685,7 @@
                     }
                     break;
                 case 16 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:4: ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:4: ^( ( DOUBLE_AMPER | SINGLE_AMPER ) (attribs= constraint_attributes )? left= fact_expression right= fact_expression )
                     {
                     if ( input.LA(1)==DOUBLE_AMPER||input.LA(1)==SINGLE_AMPER ) {
                         input.consume();
@@ -4645,18 +4698,18 @@
 
 
                     match(input, Token.DOWN, null); 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:43: (attribs= constraint_attributes )?
-                    int alt68=2;
-                    int LA68_0 = input.LA(1);
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:43: (attribs= constraint_attributes )?
+                    int alt69=2;
+                    int LA69_0 = input.LA(1);
 
-                    if ( (LA68_0==VT_CONSTR_ATTRIBUTES) ) {
-                        alt68=1;
+                    if ( (LA69_0==VT_CONSTR_ATTRIBUTES) ) {
+                        alt69=1;
                     }
-                    switch (alt68) {
+                    switch (alt69) {
                         case 1 :
-                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:410:43: attribs= constraint_attributes
+                            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:43: attribs= constraint_attributes
                             {
-                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2380);
+                            pushFollow(FOLLOW_constraint_attributes_in_fact_expression2415);
                             attribs=constraint_attributes();
 
                             state._fsp--;
@@ -4667,12 +4720,12 @@
 
                     }
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2385);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2420);
                     left=fact_expression();
 
                     state._fsp--;
 
-                    pushFollow(FOLLOW_fact_expression_in_fact_expression2389);
+                    pushFollow(FOLLOW_fact_expression_in_fact_expression2424);
                     right=fact_expression();
 
                     state._fsp--;
@@ -4686,28 +4739,28 @@
                     }
                     break;
                 case 17 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:420:4: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
                     {
-                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2402); 
+                    match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2437); 
 
                     match(input, Token.DOWN, null); 
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:23: (ae= accessor_element )+
-                    int cnt69=0;
-                    loop69:
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:420:23: (ae= accessor_element )+
+                    int cnt70=0;
+                    loop70:
                     do {
-                        int alt69=2;
-                        int LA69_0 = input.LA(1);
+                        int alt70=2;
+                        int LA70_0 = input.LA(1);
 
-                        if ( (LA69_0==VT_ACCESSOR_ELEMENT) ) {
-                            alt69=1;
+                        if ( (LA70_0==VT_ACCESSOR_ELEMENT) ) {
+                            alt70=1;
                         }
 
 
-                        switch (alt69) {
+                        switch (alt70) {
                     	case 1 :
-                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:415:24: ae= accessor_element
+                    	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:420:24: ae= accessor_element
                     	    {
-                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression2407);
+                    	    pushFollow(FOLLOW_accessor_element_in_fact_expression2442);
                     	    ae=accessor_element();
 
                     	    state._fsp--;
@@ -4718,12 +4771,12 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt69 >= 1 ) break loop69;
+                    	    if ( cnt70 >= 1 ) break loop70;
                                 EarlyExitException eee =
-                                    new EarlyExitException(69, input);
+                                    new EarlyExitException(70, input);
                                 throw eee;
                         }
-                        cnt69++;
+                        cnt70++;
                     } while (true);
 
 
@@ -4733,49 +4786,49 @@
                     }
                     break;
                 case 18 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:417:4: s= STRING
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:422:4: s= STRING
                     {
-                    s=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_fact_expression2422); 
+                    s=(DroolsTree)match(input,STRING,FOLLOW_STRING_in_fact_expression2457); 
                     	retval.descr = factory.createStringLiteralRestriction(s);	
 
                     }
                     break;
                 case 19 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:419:4: i= INT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:424:4: i= INT
                     {
-                    i=(DroolsTree)match(input,INT,FOLLOW_INT_in_fact_expression2432); 
+                    i=(DroolsTree)match(input,INT,FOLLOW_INT_in_fact_expression2467); 
                     	retval.descr = factory.createIntLiteralRestriction(i);	
 
                     }
                     break;
                 case 20 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:421:4: f= FLOAT
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:426:4: f= FLOAT
                     {
-                    f=(DroolsTree)match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2443); 
+                    f=(DroolsTree)match(input,FLOAT,FOLLOW_FLOAT_in_fact_expression2478); 
                     	retval.descr = factory.createFloatLiteralRestriction(f);	
 
                     }
                     break;
                 case 21 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:423:4: b= BOOL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:428:4: b= BOOL
                     {
-                    b=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_fact_expression2453); 
+                    b=(DroolsTree)match(input,BOOL,FOLLOW_BOOL_in_fact_expression2488); 
                     	retval.descr = factory.createBoolLiteralRestriction(b);	
 
                     }
                     break;
                 case 22 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:425:4: n= NULL
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:430:4: n= NULL
                     {
-                    n=(DroolsTree)match(input,NULL,FOLLOW_NULL_in_fact_expression2463); 
+                    n=(DroolsTree)match(input,NULL,FOLLOW_NULL_in_fact_expression2498); 
                     	retval.descr = factory.createNullLiteralRestriction(n);	
 
                     }
                     break;
                 case 23 :
-                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:427:4: pc= VT_PAREN_CHUNK
+                    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:432:4: pc= VT_PAREN_CHUNK
                     {
-                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2473); 
+                    pc=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_fact_expression2508); 
                     	retval.descr = factory.createReturnValue(pc);	
 
                     }
@@ -4795,7 +4848,7 @@
 
 
     // $ANTLR start "field_element"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:431:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:436:1: field_element returns [FieldConstraintDescr element] : ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) ;
     public final FieldConstraintDescr field_element() throws RecognitionException {
         FieldConstraintDescr element = null;
 
@@ -4806,29 +4859,29 @@
         	List<BaseDescr> aeList = new LinkedList<BaseDescr>();
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:3: ( ^( VT_ACCESSOR_PATH (ae= accessor_element )+ ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:5: ^( VT_ACCESSOR_PATH (ae= accessor_element )+ )
             {
-            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2495); 
+            match(input,VT_ACCESSOR_PATH,FOLLOW_VT_ACCESSOR_PATH_in_field_element2530); 
 
             match(input, Token.DOWN, null); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:24: (ae= accessor_element )+
-            int cnt71=0;
-            loop71:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:24: (ae= accessor_element )+
+            int cnt72=0;
+            loop72:
             do {
-                int alt71=2;
-                int LA71_0 = input.LA(1);
+                int alt72=2;
+                int LA72_0 = input.LA(1);
 
-                if ( (LA71_0==VT_ACCESSOR_ELEMENT) ) {
-                    alt71=1;
+                if ( (LA72_0==VT_ACCESSOR_ELEMENT) ) {
+                    alt72=1;
                 }
 
 
-                switch (alt71) {
+                switch (alt72) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:434:25: ae= accessor_element
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:25: ae= accessor_element
             	    {
-            	    pushFollow(FOLLOW_accessor_element_in_field_element2500);
+            	    pushFollow(FOLLOW_accessor_element_in_field_element2535);
             	    ae=accessor_element();
 
             	    state._fsp--;
@@ -4839,12 +4892,12 @@
             	    break;
 
             	default :
-            	    if ( cnt71 >= 1 ) break loop71;
+            	    if ( cnt72 >= 1 ) break loop72;
                         EarlyExitException eee =
-                            new EarlyExitException(71, input);
+                            new EarlyExitException(72, input);
                         throw eee;
                 }
-                cnt71++;
+                cnt72++;
             } while (true);
 
 
@@ -4866,7 +4919,7 @@
 
 
     // $ANTLR start "accessor_element"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:438:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:443:1: accessor_element returns [BaseDescr element] : ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) ;
     public final BaseDescr accessor_element() throws RecognitionException {
         BaseDescr element = null;
 
@@ -4875,29 +4928,29 @@
         List list_sc=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:2: ( ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:4: ^( VT_ACCESSOR_ELEMENT id= ID (sc+= VT_SQUARE_CHUNK )* )
             {
-            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2524); 
+            match(input,VT_ACCESSOR_ELEMENT,FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2559); 
 
             match(input, Token.DOWN, null); 
-            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accessor_element2528); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:34: (sc+= VT_SQUARE_CHUNK )*
-            loop72:
+            id=(DroolsTree)match(input,ID,FOLLOW_ID_in_accessor_element2563); 
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:34: (sc+= VT_SQUARE_CHUNK )*
+            loop73:
             do {
-                int alt72=2;
-                int LA72_0 = input.LA(1);
+                int alt73=2;
+                int LA73_0 = input.LA(1);
 
-                if ( (LA72_0==VT_SQUARE_CHUNK) ) {
-                    alt72=1;
+                if ( (LA73_0==VT_SQUARE_CHUNK) ) {
+                    alt73=1;
                 }
 
 
-                switch (alt72) {
+                switch (alt73) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:439:34: sc+= VT_SQUARE_CHUNK
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:34: sc+= VT_SQUARE_CHUNK
             	    {
-            	    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2532); 
+            	    sc=(DroolsTree)match(input,VT_SQUARE_CHUNK,FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2567); 
             	    if (list_sc==null) list_sc=new ArrayList();
             	    list_sc.add(sc);
 
@@ -4906,7 +4959,7 @@
             	    break;
 
             	default :
-            	    break loop72;
+            	    break loop73;
                 }
             } while (true);
 
@@ -4929,7 +4982,7 @@
 
 
     // $ANTLR start "pattern_type"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:443:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:448:1: pattern_type returns [BaseDescr dataType] : ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr pattern_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -4939,29 +4992,29 @@
         List list_rightList=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:2: ( ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:4: ^( VT_PATTERN_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
-            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2553); 
+            match(input,VT_PATTERN_TYPE,FOLLOW_VT_PATTERN_TYPE_in_pattern_type2588); 
 
             match(input, Token.DOWN, null); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:28: (idList+= ID )+
-            int cnt73=0;
-            loop73:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:28: (idList+= ID )+
+            int cnt74=0;
+            loop74:
             do {
-                int alt73=2;
-                int LA73_0 = input.LA(1);
+                int alt74=2;
+                int LA74_0 = input.LA(1);
 
-                if ( (LA73_0==ID) ) {
-                    alt73=1;
+                if ( (LA74_0==ID) ) {
+                    alt74=1;
                 }
 
 
-                switch (alt73) {
+                switch (alt74) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:28: idList+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:28: idList+= ID
             	    {
-            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_pattern_type2557); 
+            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_pattern_type2592); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -4970,31 +5023,31 @@
             	    break;
 
             	default :
-            	    if ( cnt73 >= 1 ) break loop73;
+            	    if ( cnt74 >= 1 ) break loop74;
                         EarlyExitException eee =
-                            new EarlyExitException(73, input);
+                            new EarlyExitException(74, input);
                         throw eee;
                 }
-                cnt73++;
+                cnt74++;
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop74:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:34: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop75:
             do {
-                int alt74=2;
-                int LA74_0 = input.LA(1);
+                int alt75=2;
+                int LA75_0 = input.LA(1);
 
-                if ( (LA74_0==LEFT_SQUARE) ) {
-                    alt74=1;
+                if ( (LA75_0==LEFT_SQUARE) ) {
+                    alt75=1;
                 }
 
 
-                switch (alt74) {
+                switch (alt75) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:444:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:35: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2561); 
-            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2565); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_pattern_type2596); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_pattern_type2600); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -5003,7 +5056,7 @@
             	    break;
 
             	default :
-            	    break loop74;
+            	    break loop75;
                 }
             } while (true);
 
@@ -5026,7 +5079,7 @@
 
 
     // $ANTLR start "data_type"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:448:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:453:1: data_type returns [BaseDescr dataType] : ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) ;
     public final BaseDescr data_type() throws RecognitionException {
         BaseDescr dataType = null;
 
@@ -5036,29 +5089,29 @@
         List list_rightList=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:2: ( ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:4: ^( VT_DATA_TYPE (idList+= ID )+ ( LEFT_SQUARE rightList+= RIGHT_SQUARE )* )
             {
-            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2587); 
+            match(input,VT_DATA_TYPE,FOLLOW_VT_DATA_TYPE_in_data_type2622); 
 
             match(input, Token.DOWN, null); 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:25: (idList+= ID )+
-            int cnt75=0;
-            loop75:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:25: (idList+= ID )+
+            int cnt76=0;
+            loop76:
             do {
-                int alt75=2;
-                int LA75_0 = input.LA(1);
+                int alt76=2;
+                int LA76_0 = input.LA(1);
 
-                if ( (LA75_0==ID) ) {
-                    alt75=1;
+                if ( (LA76_0==ID) ) {
+                    alt76=1;
                 }
 
 
-                switch (alt75) {
+                switch (alt76) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:25: idList+= ID
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:25: idList+= ID
             	    {
-            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_data_type2591); 
+            	    idList=(DroolsTree)match(input,ID,FOLLOW_ID_in_data_type2626); 
             	    if (list_idList==null) list_idList=new ArrayList();
             	    list_idList.add(idList);
 
@@ -5067,31 +5120,31 @@
             	    break;
 
             	default :
-            	    if ( cnt75 >= 1 ) break loop75;
+            	    if ( cnt76 >= 1 ) break loop76;
                         EarlyExitException eee =
-                            new EarlyExitException(75, input);
+                            new EarlyExitException(76, input);
                         throw eee;
                 }
-                cnt75++;
+                cnt76++;
             } while (true);
 
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
-            loop76:
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:31: ( LEFT_SQUARE rightList+= RIGHT_SQUARE )*
+            loop77:
             do {
-                int alt76=2;
-                int LA76_0 = input.LA(1);
+                int alt77=2;
+                int LA77_0 = input.LA(1);
 
-                if ( (LA76_0==LEFT_SQUARE) ) {
-                    alt76=1;
+                if ( (LA77_0==LEFT_SQUARE) ) {
+                    alt77=1;
                 }
 
 
-                switch (alt76) {
+                switch (alt77) {
             	case 1 :
-            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:449:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
+            	    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:32: LEFT_SQUARE rightList+= RIGHT_SQUARE
             	    {
-            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2595); 
-            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2599); 
+            	    match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_data_type2630); 
+            	    rightList=(DroolsTree)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_data_type2634); 
             	    if (list_rightList==null) list_rightList=new ArrayList();
             	    list_rightList.add(rightList);
 
@@ -5100,7 +5153,7 @@
             	    break;
 
             	default :
-            	    break loop76;
+            	    break loop77;
                 }
             } while (true);
 
@@ -5123,20 +5176,20 @@
 
 
     // $ANTLR start "cut"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:453:1: cut returns [boolean isCutter] : ^(start= VT_CUT VK_CUT ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:458:1: cut returns [boolean isCutter] : ^(start= VT_CUT VK_CUT ) ;
     public final boolean cut() throws RecognitionException {
         boolean isCutter = false;
 
         DroolsTree start=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:3: ( ^(start= VT_CUT VK_CUT ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:454:5: ^(start= VT_CUT VK_CUT )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:459:3: ( ^(start= VT_CUT VK_CUT ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:459:5: ^(start= VT_CUT VK_CUT )
             {
-            start=(DroolsTree)match(input,VT_CUT,FOLLOW_VT_CUT_in_cut2627); 
+            start=(DroolsTree)match(input,VT_CUT,FOLLOW_VT_CUT_in_cut2662); 
 
             match(input, Token.DOWN, null); 
-            match(input,VK_CUT,FOLLOW_VK_CUT_in_cut2629); 
+            match(input,VK_CUT,FOLLOW_VK_CUT_in_cut2664); 
 
             match(input, Token.UP, null); 
              isCutter = true; 
@@ -5156,7 +5209,7 @@
 
 
     // $ANTLR start "constr_identifier"
-    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:458:1: constr_identifier returns [String id] : ^(start= VT_CONSTRID ans= VK_AT ) ;
+    // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:463:1: constr_identifier returns [String id] : ^(start= VT_CONSTRID ans= VK_AT ) ;
     public final String constr_identifier() throws RecognitionException {
         String id = null;
 
@@ -5164,13 +5217,13 @@
         DroolsTree ans=null;
 
         try {
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:459:3: ( ^(start= VT_CONSTRID ans= VK_AT ) )
-            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:459:5: ^(start= VT_CONSTRID ans= VK_AT )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:464:3: ( ^(start= VT_CONSTRID ans= VK_AT ) )
+            // /home/davide/Projects/Eclipse_Drools/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g:464:5: ^(start= VT_CONSTRID ans= VK_AT )
             {
-            start=(DroolsTree)match(input,VT_CONSTRID,FOLLOW_VT_CONSTRID_in_constr_identifier2657); 
+            start=(DroolsTree)match(input,VT_CONSTRID,FOLLOW_VT_CONSTRID_in_constr_identifier2692); 
 
             match(input, Token.DOWN, null); 
-            ans=(DroolsTree)match(input,VK_AT,FOLLOW_VK_AT_in_constr_identifier2661); 
+            ans=(DroolsTree)match(input,VK_AT,FOLLOW_VK_AT_in_constr_identifier2696); 
 
             match(input, Token.UP, null); 
              id = (ans!=null?ans.getText():null); 
@@ -5194,12 +5247,12 @@
  
 
     public static final BitSet FOLLOW_VT_COMPILATION_UNIT_in_compilation_unit49 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit51 = new BitSet(new long[]{0xFFC0000000000028L,0x0000000E00000FABL});
-    public static final BitSet FOLLOW_statement_in_compilation_unit53 = new BitSet(new long[]{0xFFC0000000000028L,0x0000000E00000FABL});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit51 = new BitSet(new long[]{0xFF80000000000028L,0x0000003800001F57L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit53 = new BitSet(new long[]{0xFF80000000000028L,0x0000003800001F57L});
     public static final BitSet FOLLOW_VK_PACKAGE_in_package_statement72 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_package_id_in_package_statement76 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_PACKAGE_ID_in_package_id103 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_package_id107 = new BitSet(new long[]{0x0000000000000008L,0x0000020000000000L});
+    public static final BitSet FOLLOW_ID_in_package_id107 = new BitSet(new long[]{0x0000000000000008L,0x0000080000000000L});
     public static final BitSet FOLLOW_rule_attribute_in_statement125 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_statement135 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement145 = new BitSet(new long[]{0x0000000000000002L});
@@ -5212,63 +5265,63 @@
     public static final BitSet FOLLOW_VK_IMPORT_in_import_statement227 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_import_name_in_import_statement231 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FUNCTION_IMPORT_in_function_import_statement253 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement255 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement255 = new BitSet(new long[]{0x0000100000000000L});
     public static final BitSet FOLLOW_import_name_in_function_import_statement259 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_IMPORT_ID_in_import_name278 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_import_name282 = new BitSet(new long[]{0x0000000000000008L,0x00000A0000000000L});
+    public static final BitSet FOLLOW_ID_in_import_name282 = new BitSet(new long[]{0x0000000000000008L,0x0000280000000000L});
     public static final BitSet FOLLOW_DOT_STAR_in_import_name287 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_GLOBAL_in_global310 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_data_type_in_global314 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_data_type_in_global314 = new BitSet(new long[]{0x0000200000000000L});
     public static final BitSet FOLLOW_VT_GLOBAL_ID_in_global318 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_FUNCTION_in_function340 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_data_type_in_function344 = new BitSet(new long[]{0x0000200000000000L});
-    public static final BitSet FOLLOW_VT_FUNCTION_ID_in_function349 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_data_type_in_function344 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_VT_FUNCTION_ID_in_function349 = new BitSet(new long[]{0x0000800000000000L});
     public static final BitSet FOLLOW_parameters_in_function353 = new BitSet(new long[]{0x0000000000040000L});
     public static final BitSet FOLLOW_VT_CURLY_CHUNK_in_function357 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_TEMPLATE_in_template382 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_TEMPLATE_ID_in_template386 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_template_slot_in_template395 = new BitSet(new long[]{0x0000000000008000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_template_slot_in_template395 = new BitSet(new long[]{0x0000000000008000L,0x0000000020000000L});
     public static final BitSet FOLLOW_VK_END_in_template403 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_SLOT_in_template_slot423 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_template_slot427 = new BitSet(new long[]{0x0000000000004000L});
     public static final BitSet FOLLOW_VT_SLOT_ID_in_template_slot431 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_QUERY_in_query453 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_QUERY_ID_in_query457 = new BitSet(new long[]{0x0000400000400000L});
-    public static final BitSet FOLLOW_parameters_in_query461 = new BitSet(new long[]{0x0000400000400000L});
-    public static final BitSet FOLLOW_lhs_block_in_query466 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_VT_QUERY_ID_in_query457 = new BitSet(new long[]{0x0000800000400000L});
+    public static final BitSet FOLLOW_parameters_in_query461 = new BitSet(new long[]{0x0000800000400000L});
+    public static final BitSet FOLLOW_lhs_block_in_query466 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
     public static final BitSet FOLLOW_VK_END_in_query470 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_RULE_in_rule497 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule501 = new BitSet(new long[]{0x0000000000030000L,0x0009000000000010L});
+    public static final BitSet FOLLOW_VT_RULE_ID_in_rule501 = new BitSet(new long[]{0x0000000000030000L,0x0024000000000020L});
     public static final BitSet FOLLOW_VK_EXTEND_in_rule506 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_RULE_ID_in_rule510 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule520 = new BitSet(new long[]{0x0000000000030000L,0x0009000000000000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule531 = new BitSet(new long[]{0x0000000000020000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule520 = new BitSet(new long[]{0x0000000000030000L,0x0024000000000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule531 = new BitSet(new long[]{0x0000000000020000L,0x0020000000000000L});
     public static final BitSet FOLLOW_when_part_in_rule540 = new BitSet(new long[]{0x0000000000020000L});
     public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule545 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_WHEN_in_when_part564 = new BitSet(new long[]{0x0000400000400000L});
+    public static final BitSet FOLLOW_WHEN_in_when_part564 = new BitSet(new long[]{0x0000800000400000L});
     public static final BitSet FOLLOW_lhs_block_in_when_part568 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_RULE_ATTRIBUTES_in_rule_attributes590 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes592 = new BitSet(new long[]{0xFFC0000000000000L,0x0000000E00000003L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes598 = new BitSet(new long[]{0xFFC0000000000008L,0x0000000E00000003L});
+    public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes592 = new BitSet(new long[]{0xFF80000000000000L,0x0000003800000007L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes598 = new BitSet(new long[]{0xFF80000000000008L,0x0000003800000007L});
     public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters622 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_param_definition_in_parameters627 = new BitSet(new long[]{0x0000010000000008L,0x0000020000000000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition649 = new BitSet(new long[]{0x0000010000000008L,0x0000020000000000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters627 = new BitSet(new long[]{0x0000020000000008L,0x0000080000000000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition649 = new BitSet(new long[]{0x0000020000000008L,0x0000080000000000L});
     public static final BitSet FOLLOW_argument_in_param_definition654 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument674 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument681 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_ID_in_argument674 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument681 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
     public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration707 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration711 = new BitSet(new long[]{0x0000000000000000L,0x0001020008000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration720 = new BitSet(new long[]{0x0000000000000000L,0x0001020008000000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration733 = new BitSet(new long[]{0x0000000000000000L,0x0000020008000000L});
+    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration711 = new BitSet(new long[]{0x0000000000000000L,0x0004080020000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration720 = new BitSet(new long[]{0x0000000000000000L,0x0004080020000000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration733 = new BitSet(new long[]{0x0000000000000000L,0x0000080020000000L});
     public static final BitSet FOLLOW_VK_END_in_type_declaration739 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_AT_in_decl_metadata764 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_ID_in_decl_metadata768 = new BitSet(new long[]{0x0000000000100008L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata772 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_decl_field800 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field804 = new BitSet(new long[]{0x0000010000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field809 = new BitSet(new long[]{0x0000000000000008L,0x0001000000000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field814 = new BitSet(new long[]{0x0000000000000008L,0x0001000000000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field804 = new BitSet(new long[]{0x0000020000000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field809 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field814 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
     public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization841 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization845 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute868 = new BitSet(new long[]{0x0000000000000004L});
@@ -5305,7 +5358,7 @@
     public static final BitSet FOLLOW_VK_FILTER_in_rule_attribute1085 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_rule_attribute1089 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_CONSTR_ATTRIBUTES_in_constraint_attributes1116 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constr_attribute_in_constraint_attributes1121 = new BitSet(new long[]{0x0000000000000008L,0x000000E480000000L});
+    public static final BitSet FOLLOW_constr_attribute_in_constraint_attributes1121 = new BitSet(new long[]{0x0000000000000008L,0x0000039200000000L});
     public static final BitSet FOLLOW_VK_CONSTRID_in_constr_attribute1155 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_constr_attribute1159 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_ARGS_in_constr_attribute1170 = new BitSet(new long[]{0x0000000000000004L});
@@ -5317,162 +5370,166 @@
     public static final BitSet FOLLOW_VK_PRIOR_in_constr_attribute1220 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_constr_attribute1224 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block1259 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs_block1264 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_lhs_in_lhs_block1264 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
     public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs1290 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1294 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1300 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1294 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1300 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
     public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs1316 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1320 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1325 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1320 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1325 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
     public static final BitSet FOLLOW_lhs_in_lhs1329 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs1341 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1345 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1351 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1345 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1351 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
     public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs1367 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1371 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1376 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1371 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1376 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
     public static final BitSet FOLLOW_lhs_in_lhs1380 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_EQUIV_in_lhs1396 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1400 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1405 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1400 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1405 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
     public static final BitSet FOLLOW_lhs_in_lhs1409 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_XOR_in_lhs1425 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_lhs1429 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1434 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1429 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1434 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
     public static final BitSet FOLLOW_lhs_in_lhs1438 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EXISTS_in_lhs1462 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1466 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_NOT_in_lhs1478 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1482 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_HEDGE_in_lhs1497 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_IMPLIES_in_lhs1460 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_constraint_attributes_in_lhs1464 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1469 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1473 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EXISTS_in_lhs1497 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_lhs_in_lhs1501 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EVAL_in_lhs1518 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1522 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_FORALL_in_lhs1534 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1539 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_VK_FORANY_in_lhs1558 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1563 = new BitSet(new long[]{0x0000000000000008L,0x0000000060000000L});
-    public static final BitSet FOLLOW_VK_SUBJECT_in_lhs1566 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1570 = new BitSet(new long[]{0x0000000000000008L,0x0000000040000000L});
-    public static final BitSet FOLLOW_VK_WEIGHT_in_lhs1575 = new BitSet(new long[]{0x000100021F800008L,0x0100000000705000L});
-    public static final BitSet FOLLOW_lhs_in_lhs1579 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_FROM_in_lhs1597 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1601 = new BitSet(new long[]{0x0000000080000000L,0x0C00000000002000L});
-    public static final BitSet FOLLOW_from_elements_in_lhs1605 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1616 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1637 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_from_elements1641 = new BitSet(new long[]{0x0000000060000000L});
-    public static final BitSet FOLLOW_accumulate_parts_in_from_elements1651 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_COLLECT_in_from_elements1664 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_from_elements1668 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ENTRY_POINT_in_from_elements1680 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1684 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_from_source_clause_in_from_elements1695 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_parts1716 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_parts1727 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1750 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_INIT_in_accumulate_init_clause1759 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1763 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1771 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1775 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1784 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1791 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1795 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1818 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1822 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1844 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause1848 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1852 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FROM_SOURCE_in_from_source_clause1874 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_from_source_clause1878 = new BitSet(new long[]{0x0000000100100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1882 = new BitSet(new long[]{0x0000000100000008L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source_clause1891 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1910 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_expression_chain1914 = new BitSet(new long[]{0x0000000100180008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1918 = new BitSet(new long[]{0x0000000100100008L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1923 = new BitSet(new long[]{0x0000000100000008L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain1931 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern1950 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_lhs_pattern1954 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_over_clause_in_lhs_pattern1960 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause1985 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_over_element_in_over_clause1990 = new BitSet(new long[]{0x0000000000200008L});
-    public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element2011 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_over_element2013 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
-    public static final BitSet FOLLOW_ID_in_over_element2017 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element2021 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FACT_in_fact_expression2044 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression2048 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2053 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2061 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression2072 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2076 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2080 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression2093 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2097 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2101 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_FIELD_in_fact_expression2113 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_field_element_in_fact_expression2117 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2121 = new BitSet(new long[]{0x0002000000000008L});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2126 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression2137 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2141 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2145 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_EVAL_in_fact_expression2156 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2160 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_EQUAL_in_fact_expression2174 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2178 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression2190 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2194 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_GREATER_in_fact_expression2206 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2210 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_fact_expression2222 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2226 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_LESS_in_fact_expression2238 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2242 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression2254 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2258 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression2270 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2274 = new BitSet(new long[]{0x0002007C00180048L,0xB0F0100104009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_VK_APPROX_in_fact_expression2279 = new BitSet(new long[]{0x0002007C00180048L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2284 = new BitSet(new long[]{0x0002007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2289 = new BitSet(new long[]{0x0000007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2294 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VK_IN_in_fact_expression2309 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2313 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2319 = new BitSet(new long[]{0x0000007C00100048L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_set_in_fact_expression2334 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2345 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2350 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2354 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_set_in_fact_expression2370 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2380 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression2385 = new BitSet(new long[]{0x0000007C00100040L,0xB0F0100004009000L,0x000000000000007FL});
+    public static final BitSet FOLLOW_VK_NOT_in_lhs1513 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1517 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_HEDGE_in_lhs1532 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1536 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EVAL_in_lhs1553 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1557 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_FORALL_in_lhs1569 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1574 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_VK_FORANY_in_lhs1593 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_lhs1598 = new BitSet(new long[]{0x0000000000000008L,0x0000000180000000L});
+    public static final BitSet FOLLOW_VK_SUBJECT_in_lhs1601 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1605 = new BitSet(new long[]{0x0000000000000008L,0x0000000100000000L});
+    public static final BitSet FOLLOW_VK_WEIGHT_in_lhs1610 = new BitSet(new long[]{0x000200043F800008L,0x0400000001C0A000L});
+    public static final BitSet FOLLOW_lhs_in_lhs1614 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_FROM_in_lhs1632 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1636 = new BitSet(new long[]{0x0000000100000000L,0x3000000000004000L});
+    public static final BitSet FOLLOW_from_elements_in_lhs1640 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1651 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1672 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_from_elements1676 = new BitSet(new long[]{0x00000000C0000000L});
+    public static final BitSet FOLLOW_accumulate_parts_in_from_elements1686 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_COLLECT_in_from_elements1699 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_lhs_in_from_elements1703 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ENTRY_POINT_in_from_elements1715 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_ENTRYPOINT_ID_in_from_elements1719 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_from_source_clause_in_from_elements1730 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_parts1751 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_parts1762 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1785 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_INIT_in_accumulate_init_clause1794 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1798 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1806 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1810 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_accumulate_init_reverse_clause_in_accumulate_init_clause1819 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_VK_RESULT_in_accumulate_init_clause1826 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1830 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_REVERSE_in_accumulate_init_reverse_clause1853 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_reverse_clause1857 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCUMULATE_ID_CLAUSE_in_accumulate_id_clause1879 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause1883 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_id_clause1887 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FROM_SOURCE_in_from_source_clause1909 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_from_source_clause1913 = new BitSet(new long[]{0x0000000200100008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_from_source_clause1917 = new BitSet(new long[]{0x0000000200000008L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source_clause1926 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_EXPRESSION_CHAIN_in_expression_chain1945 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_expression_chain1949 = new BitSet(new long[]{0x0000000200180008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_expression_chain1953 = new BitSet(new long[]{0x0000000200100008L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_expression_chain1958 = new BitSet(new long[]{0x0000000200000008L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain1966 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern1985 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_lhs_pattern1989 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_over_clause_in_lhs_pattern1995 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause2020 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_over_element_in_over_clause2025 = new BitSet(new long[]{0x0000000000200008L});
+    public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element2046 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_over_element2048 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_ID_in_over_element2052 = new BitSet(new long[]{0x0000000000100000L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element2056 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_in_fact_expression2079 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression2083 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2088 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2096 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression2107 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2111 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2115 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression2128 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2132 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2136 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_FIELD_in_fact_expression2148 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_field_element_in_fact_expression2152 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2156 = new BitSet(new long[]{0x0004000000000008L});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2161 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression2172 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression2176 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2180 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_EVAL_in_fact_expression2191 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2195 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_EQUAL_in_fact_expression2209 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2213 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression2225 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2229 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_GREATER_in_fact_expression2241 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2245 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_fact_expression2257 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2261 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_LESS_in_fact_expression2273 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2277 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression2289 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2293 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression2305 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2309 = new BitSet(new long[]{0x000400F800180048L,0xC3C0400410012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_VK_APPROX_in_fact_expression2314 = new BitSet(new long[]{0x000400F800180048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression2319 = new BitSet(new long[]{0x000400F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2324 = new BitSet(new long[]{0x000000F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2329 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VK_IN_in_fact_expression2344 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression2348 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2354 = new BitSet(new long[]{0x000000F800100048L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_set_in_fact_expression2369 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2380 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2385 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression2389 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2402 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_fact_expression2407 = new BitSet(new long[]{0x0000008000000008L});
-    public static final BitSet FOLLOW_STRING_in_fact_expression2422 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_fact_expression2432 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_fact_expression2443 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_fact_expression2453 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_fact_expression2463 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2473 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2495 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_accessor_element_in_field_element2500 = new BitSet(new long[]{0x0000008000000008L});
-    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2524 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_accessor_element2528 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2532 = new BitSet(new long[]{0x0000000000080008L});
-    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2553 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type2557 = new BitSet(new long[]{0x0000000000000008L,0x0000020000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2561 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2565 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2587 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type2591 = new BitSet(new long[]{0x0000000000000008L,0x0000020000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2599 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_VT_CUT_in_cut2627 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_CUT_in_cut2629 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_VT_CONSTRID_in_constr_identifier2657 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_AT_in_constr_identifier2661 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_set_in_fact_expression2405 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_constraint_attributes_in_fact_expression2415 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2420 = new BitSet(new long[]{0x000000F800100040L,0xC3C0400010012000L,0x00000000000001FEL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression2424 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression2437 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_fact_expression2442 = new BitSet(new long[]{0x0000010000000008L});
+    public static final BitSet FOLLOW_STRING_in_fact_expression2457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_fact_expression2467 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_fact_expression2478 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_fact_expression2488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_fact_expression2498 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression2508 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_field_element2530 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_accessor_element_in_field_element2535 = new BitSet(new long[]{0x0000010000000008L});
+    public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element2559 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_accessor_element2563 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2567 = new BitSet(new long[]{0x0000000000080008L});
+    public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2588 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_pattern_type2592 = new BitSet(new long[]{0x0000000000000008L,0x0000080000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2600 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2622 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_ID_in_data_type2626 = new BitSet(new long[]{0x0000000000000008L,0x0000080000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2630 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2634 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_VT_CUT_in_cut2662 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_CUT_in_cut2664 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_CONSTRID_in_constr_identifier2692 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_AT_in_constr_identifier2696 = new BitSet(new long[]{0x0000000000000008L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -50,6 +50,7 @@
 	public static final String AND = "and";
 	public static final String EQUIV = "equiv";
 	public static final String XOR = "xor";
+	public static final String IMPLIES = "implies";
 	public static final String EXISTS = "exists";
 	public static final String FORALL = "forall";
 	public static final String FORANY = "forany";

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/DescrFactory.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -1424,7 +1424,7 @@
 //		String type = atts.get("type");
 			
 				
-		BaseDescr or = createAndRestrictionConnective(left, right);						
+		BaseDescr or = createOrRestrictionConnective(left, right);						
 //		or.setParams((params == null ? "" : params)+(type == null ? "" : type));			
 //		or.setCutter(cutter);
 //		
@@ -1725,7 +1725,39 @@
 	
 	
 	
+	public ImpliesDescr createImplies(DroolsTree start, List<BaseDescr> lhsList) {
+		ImpliesDescr imp = new ImpliesDescr();
+		imp.setLocation(getColumnLocation(start), getColumnLocation(start));
+		imp.setStartCharacter(getStartOffsetLocation(start));
+		imp.setEndLocation(lhsList.get(lhsList.size() - 1).getEndLine(),
+				lhsList.get(lhsList.size() - 1).getEndColumn());
+		imp.setEndCharacter(lhsList.get(lhsList.size() - 1).getEndCharacter());
+		for (BaseDescr baseDescr : lhsList) {
+			imp.addDescr(baseDescr);
+		}
+		return imp;
+	}
 	
+	public ImpliesDescr createImplies(DroolsTree start, List<BaseDescr> lhsList, List<AttributeDescr> attribs) {
+		Map<String,String> atts = buildAttributes(attribs);
+		
+//		String params = atts.get("args");
+//		String id = atts.get("id");
+//		String cutS = atts.get("cut");
+//		Boolean cutter = cutS == null ? false : Boolean.parseBoolean(cutS);
+//		String type = atts.get("type");
+		
+		ImpliesDescr imp = createImplies(start, lhsList);
+		fillWithAttribs(imp, attribs);
+//		xor.setParams((params == null ? "" : params)+(type == null ? "" : type));
+//		xor.setCutter(cutter);
+//		xor.setLabel(id);
+		return imp;
+	}
+	
+	
+	
+	
 	/**
 	 * Factory method that creates an accessor element descriptor.
 	 * 

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/EqvDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/EqvDescr.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/EqvDescr.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -64,8 +64,8 @@
     }
 
     public void addOrMerge(final BaseDescr baseDescr) {
-        if ( baseDescr instanceof AndDescr ) {
-            this.descrs.addAll( ((AndDescr) baseDescr).getDescrs() );
+        if ( baseDescr instanceof EqvDescr ) {
+            this.descrs.addAll( ((EqvDescr) baseDescr).getDescrs() );
         } else {
             addDescr( baseDescr );
         }

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/XorDescr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/XorDescr.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/lang/descr/XorDescr.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -64,8 +64,8 @@
     }
 
     public void addOrMerge(final BaseDescr baseDescr) {
-        if ( baseDescr instanceof AndDescr ) {
-            this.descrs.addAll( ((AndDescr) baseDescr).getDescrs() );
+        if ( baseDescr instanceof XorDescr ) {
+            this.descrs.addAll( ((XorDescr) baseDescr).getDescrs() );
         } else {
             addDescr( baseDescr );
         }

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/GroupElementBuilder.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -26,6 +26,7 @@
 import org.drools.lang.descr.ExistsDescr;
 import org.drools.lang.descr.ForAnyDescr;
 import org.drools.lang.descr.HedgeDescr;
+import org.drools.lang.descr.ImpliesDescr;
 import org.drools.lang.descr.NotDescr;
 import org.drools.lang.descr.OrDescr;
 import org.drools.lang.descr.XorDescr;
@@ -107,6 +108,8 @@
             return GroupElementFactory.newExistsInstance();
         } else if ( XorDescr.class.isAssignableFrom( descr ) ) {
             return GroupElementFactory.newXorInstance();
+        } else if ( ImpliesDescr.class.isAssignableFrom( descr ) ) {
+                return GroupElementFactory.newImpliesInstance();
         } else if ( EqvDescr.class.isAssignableFrom( descr ) ) {
             return GroupElementFactory.newEqvInstance();    
         } else if ( HedgeDescr.class.isAssignableFrom( descr)) {

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -47,6 +47,7 @@
 import org.drools.lang.descr.FromDescr;
 import org.drools.lang.descr.FunctionDescr;
 import org.drools.lang.descr.HedgeDescr;
+import org.drools.lang.descr.ImpliesDescr;
 import org.drools.lang.descr.NotDescr;
 import org.drools.lang.descr.OrDescr;
 import org.drools.lang.descr.PatternDescr;
@@ -203,6 +204,9 @@
         builders.put( XorDescr.class,
                 GE_BUILDER );
         
+        builders.put( ImpliesDescr.class,
+                GE_BUILDER );
+        
         builders.put( EqvDescr.class,
                 GE_BUILDER );
 

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-05-22 02:31:50 UTC (rev 26663)
@@ -35,6 +35,7 @@
 	VT_OR_INFIX;
 	VT_EQUIV;
 	VT_XOR;
+	VT_IMPLIES;
 
 	VT_ACCUMULATE_INIT_CLAUSE;
 	VT_ACCUMULATE_ID_CLAUSE;
@@ -102,6 +103,7 @@
 	VK_AND;
 	VK_EQUIV;
 	VK_XOR;
+	VK_IMPLIES;
 	VK_EXISTS;
 	VK_FORALL;
 	VK_FORANY;
@@ -895,6 +897,16 @@
       lhs_and      
     RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  } // PREFIX 
     -> ^(VT_XOR[$xor.start] constr_parameters? lhs_and lhs_and RIGHT_PAREN)
+    
+  | (LEFT_PAREN implies_key constr_parameters?)=> 
+    LEFT_PAREN  { emit($LEFT_PAREN, DroolsEditorType.SYMBOL); }
+      implies=implies_key      
+      constr_parameters?
+  { emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);  }
+      lhs_and
+      lhs_and      
+    RIGHT_PAREN { emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);  } // PREFIX 
+    -> ^(VT_IMPLIES[$implies.start] constr_parameters? lhs_and lhs_and RIGHT_PAREN)  
 	
 	
 	|	(lhs_and -> lhs_and) 
@@ -1266,7 +1278,7 @@
         )*
         
   ;
-  
+   
 or_constr_config
   :     
     (and_constr SINGLE_PIPE) =>
@@ -2030,7 +2042,13 @@
   : {(validateIdentifierKey(DroolsSoftKeywords.XOR))}?=>  id=ID
   { emit($id, DroolsEditorType.KEYWORD);  }
     ->  VK_XOR[$id]
-  ;  
+  ;
+  
+implies_key
+  : {(validateIdentifierKey(DroolsSoftKeywords.IMPLIES))}?=>  id=ID
+  { emit($id, DroolsEditorType.KEYWORD);  }
+    ->  VK_IMPLIES[$id]
+  ;      
 	
 
 exists_key

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-05-22 02:31:50 UTC (rev 26663)
@@ -259,6 +259,11 @@
   { lhsList.add($dt1.baseDescr);
     lhsList.add($dt2.baseDescr);
     $baseDescr = factory.createXor($start, lhsList, attribs);  }  
+    
+  |  ^(start=VT_IMPLIES attribs=constraint_attributes? dt1=lhs dt2=lhs)
+  { lhsList.add($dt1.baseDescr);
+    lhsList.add($dt2.baseDescr);
+    $baseDescr = factory.createImplies($start, lhsList, attribs);  }  
 		
 		
 		

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	2009-05-22 02:30:53 UTC (rev 26662)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	2009-05-22 02:31:50 UTC (rev 26663)
@@ -546,7 +546,7 @@
 
 
 	public void inject(String premise, ArgList args,
-			ConstraintKey key, IDegree degree) {
+			ConstraintKey key, IDegree degree, boolean killer) {
 		// TODO Auto-generated method stub
 		
 	}
@@ -556,4 +556,10 @@
 		return null;
 	}
 
+	public void reject(String ruleName, ArgList args, ConstraintKey key,
+			IDegree degree, boolean killer) {
+		// TODO Auto-generated method stub
+		
+	}
+
 }




More information about the jboss-svn-commits mailing list