[jboss-svn-commits] JBL Code SVN: r24908 - in labs/jbossrules/trunk/drools-compiler/src: main/resources/org/drools/lang and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jan 25 12:14:16 EST 2009


Author: tirelli
Date: 2009-01-25 12:14:10 -0500 (Sun, 25 Jan 2009)
New Revision: 24908

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl
Log:
JBRULES-1943: making 'end' and 'init' soft keywords

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-01-15 19:47:14
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-01-25 11:44:47
 
 	package org.drools.lang;
 
@@ -12,12 +12,11 @@
 import java.util.Map;
 import java.util.HashMap;
 public class DRLLexer extends Lexer {
-    public static final int COMMA=86;
+    public static final int COMMA=87;
     public static final int VT_PATTERN_TYPE=39;
     public static final int VT_ACCUMULATE_ID_CLAUSE=28;
     public static final int VK_DIALECT=54;
     public static final int VK_FUNCTION=65;
-    public static final int END=83;
     public static final int HexDigit=119;
     public static final int VK_ATTRIBUTES=57;
     public static final int VT_EXPRESSION_CHAIN=30;
@@ -26,7 +25,7 @@
     public static final int VK_QUERY=63;
     public static final int THEN=112;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=81;
+    public static final int DOT=83;
     public static final int VK_IMPORT=60;
     public static final int VT_SLOT=15;
     public static final int VT_PACKAGE_ID=40;
@@ -35,24 +34,24 @@
     public static final int VT_DATA_TYPE=38;
     public static final int VT_FACT=6;
     public static final int LEFT_CURLY=113;
-    public static final int AT=88;
-    public static final int LEFT_PAREN=85;
-    public static final int DOUBLE_AMPER=95;
+    public static final int AT=89;
+    public static final int LEFT_PAREN=86;
+    public static final int DOUBLE_AMPER=96;
     public static final int VT_QUERY_ID=9;
     public static final int VT_ACCESSOR_PATH=36;
     public static final int VT_LABEL=8;
-    public static final int WHEN=91;
+    public static final int WHEN=92;
     public static final int VT_ENTRYPOINT_ID=13;
     public static final int VK_SALIENCE=55;
     public static final int VT_FIELD=35;
     public static final int WS=117;
-    public static final int OVER=97;
-    public static final int STRING=84;
+    public static final int OVER=98;
+    public static final int STRING=85;
     public static final int VK_AND=72;
     public static final int VT_ACCESSOR_ELEMENT=37;
+    public static final int VK_REVERSE=76;
     public static final int VK_GLOBAL=66;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_REVERSE=76;
     public static final int VT_BEHAVIOR=21;
     public static final int GRAVE_ACCENT=122;
     public static final int VK_DURATION=53;
@@ -63,17 +62,17 @@
     public static final int COLLECT=100;
     public static final int VK_ENABLED=56;
     public static final int VK_RESULT=77;
-    public static final int EQUALS=90;
+    public static final int EQUALS=91;
     public static final int UnicodeEscape=120;
     public static final int VK_PACKAGE=61;
     public static final int VT_RULE_ID=12;
     public static final int EQUAL=102;
     public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=79;
+    public static final int SEMICOLON=81;
     public static final int VK_TEMPLATE=62;
     public static final int VT_AND_IMPLICIT=22;
     public static final int NULL=109;
-    public static final int COLON=89;
+    public static final int COLON=90;
     public static final int MULTI_LINE_COMMENT=125;
     public static final int VT_RULE_ATTRIBUTES=16;
     public static final int RIGHT_SQUARE=111;
@@ -83,33 +82,33 @@
     public static final int VK_DATE_EXPIRES=46;
     public static final int ARROW=101;
     public static final int FLOAT=108;
-    public static final int INIT=99;
     public static final int VK_EXTEND=59;
     public static final int VT_SLOT_ID=14;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_OR_PREFIX=24;
-    public static final int DOUBLE_PIPE=94;
+    public static final int DOUBLE_PIPE=95;
+    public static final int VK_END=79;
     public static final int LESS=105;
     public static final int VT_TYPE_DECLARE_ID=11;
     public static final int VT_PATTERN=31;
     public static final int VK_DATE_EFFECTIVE=45;
     public static final int EscapeSequence=118;
     public static final int VK_EXISTS=73;
-    public static final int INT=93;
+    public static final int INT=94;
     public static final int VT_BIND_FIELD=34;
     public static final int VK_RULE=58;
     public static final int VK_EVAL=67;
     public static final int GREATER=103;
     public static final int VT_FACT_BINDING=32;
-    public static final int ID=80;
-    public static final int FROM=96;
+    public static final int ID=82;
+    public static final int FROM=97;
     public static final int NOT_EQUAL=107;
     public static final int RIGHT_CURLY=114;
     public static final int VK_OPERATOR=78;
     public static final int VK_ENTRY_POINT=68;
     public static final int VT_PARAM_LIST=44;
     public static final int VT_AND_INFIX=25;
-    public static final int BOOL=92;
+    public static final int BOOL=93;
     public static final int VT_FROM_SOURCE=29;
     public static final int VK_LOCK_ON_ACTIVE=47;
     public static final int VT_FUNCTION_IMPORT=5;
@@ -117,21 +116,22 @@
     public static final int VT_RHS_CHUNK=17;
     public static final int GREATER_EQUAL=104;
     public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=82;
+    public static final int DOT_STAR=84;
     public static final int VK_OR=71;
     public static final int VT_GLOBAL_ID=42;
     public static final int LESS_EQUAL=106;
-    public static final int ACCUMULATE=98;
+    public static final int ACCUMULATE=99;
     public static final int VK_RULEFLOW_GROUP=52;
     public static final int VT_FUNCTION_ID=43;
     public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
     public static final int VT_IMPORT_ID=41;
     public static final int EOL=116;
+    public static final int VK_INIT=80;
     public static final int VK_ACTIVATION_GROUP=50;
     public static final int OctalEscape=121;
     public static final int VK_ACTION=75;
-    public static final int RIGHT_PAREN=87;
+    public static final int RIGHT_PAREN=88;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=64;
     public static final int C_STYLE_SINGLE_LINE_COMMENT=124;
@@ -186,10 +186,10 @@
         try {
             int _type = WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1686:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1686:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // src/main/resources/org/drools/lang/DRL.g:1701:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // src/main/resources/org/drools/lang/DRL.g:1701:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1686:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // src/main/resources/org/drools/lang/DRL.g:1701:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -221,28 +221,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1686:19: ' '
+            	    // src/main/resources/org/drools/lang/DRL.g:1701:19: ' '
             	    {
             	    match(' '); if (state.failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1687:19: '\\t'
+            	    // src/main/resources/org/drools/lang/DRL.g:1702:19: '\\t'
             	    {
             	    match('\t'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1688:19: '\\f'
+            	    // src/main/resources/org/drools/lang/DRL.g:1703:19: '\\f'
             	    {
             	    match('\f'); if (state.failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1689:19: EOL
+            	    // src/main/resources/org/drools/lang/DRL.g:1704:19: EOL
             	    {
             	    mEOL(); if (state.failed) return ;
 
@@ -276,10 +276,10 @@
     // $ANTLR start "EOL"
     public final void mEOL() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1695:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1696:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // src/main/resources/org/drools/lang/DRL.g:1710:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1711:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1696:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // src/main/resources/org/drools/lang/DRL.g:1711:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -304,7 +304,7 @@
             }
             switch (alt2) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1696:14: ( '\\r\\n' )=> '\\r\\n'
+                    // src/main/resources/org/drools/lang/DRL.g:1711:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (state.failed) return ;
 
@@ -312,14 +312,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1697:25: '\\r'
+                    // src/main/resources/org/drools/lang/DRL.g:1712:25: '\\r'
                     {
                     match('\r'); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1698:25: '\\n'
+                    // src/main/resources/org/drools/lang/DRL.g:1713:25: '\\n'
                     {
                     match('\n'); if (state.failed) return ;
 
@@ -342,10 +342,10 @@
         try {
             int _type = INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1703:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1703:4: ( '-' )? ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1718:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // src/main/resources/org/drools/lang/DRL.g:1718:4: ( '-' )? ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1703:4: ( '-' )?
+            // src/main/resources/org/drools/lang/DRL.g:1718:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -354,7 +354,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1703:5: '-'
+                    // src/main/resources/org/drools/lang/DRL.g:1718:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -363,7 +363,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1703:10: ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1718:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -377,7 +377,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1703:11: '0' .. '9'
+            	    // src/main/resources/org/drools/lang/DRL.g:1718:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -410,10 +410,10 @@
         try {
             int _type = FLOAT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1707:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // src/main/resources/org/drools/lang/DRL.g:1707:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1722:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // src/main/resources/org/drools/lang/DRL.g:1722:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // src/main/resources/org/drools/lang/DRL.g:1707:4: ( '-' )?
+            // src/main/resources/org/drools/lang/DRL.g:1722:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -422,7 +422,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1707:5: '-'
+                    // src/main/resources/org/drools/lang/DRL.g:1722:5: '-'
                     {
                     match('-'); if (state.failed) return ;
 
@@ -431,7 +431,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1707:10: ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1722:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -445,7 +445,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1707:11: '0' .. '9'
+            	    // src/main/resources/org/drools/lang/DRL.g:1722:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -463,7 +463,7 @@
             } while (true);
 
             match('.'); if (state.failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1707:26: ( '0' .. '9' )+
+            // src/main/resources/org/drools/lang/DRL.g:1722:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -477,7 +477,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1707:27: '0' .. '9'
+            	    // src/main/resources/org/drools/lang/DRL.g:1722:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (state.failed) return ;
 
@@ -510,7 +510,7 @@
         try {
             int _type = STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1711:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1726:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -529,13 +529,13 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1711:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // src/main/resources/org/drools/lang/DRL.g:1726:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1711:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // src/main/resources/org/drools/lang/DRL.g:1711:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // src/main/resources/org/drools/lang/DRL.g:1726:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // src/main/resources/org/drools/lang/DRL.g:1726:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1711:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:1726:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -551,14 +551,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1711:15: EscapeSequence
+                    	    // src/main/resources/org/drools/lang/DRL.g:1726:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1711:32: ~ ( '\\\\' | '\"' )
+                    	    // src/main/resources/org/drools/lang/DRL.g:1726:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -587,13 +587,13 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1712:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // src/main/resources/org/drools/lang/DRL.g:1727:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1712:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // src/main/resources/org/drools/lang/DRL.g:1712:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // src/main/resources/org/drools/lang/DRL.g:1727:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // src/main/resources/org/drools/lang/DRL.g:1727:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1712:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:1727:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -609,14 +609,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1712:16: EscapeSequence
+                    	    // src/main/resources/org/drools/lang/DRL.g:1727:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (state.failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:1712:33: ~ ( '\\\\' | '\\'' )
+                    	    // src/main/resources/org/drools/lang/DRL.g:1727:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -657,8 +657,8 @@
     // $ANTLR start "HexDigit"
     public final void mHexDigit() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1716:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1716:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // src/main/resources/org/drools/lang/DRL.g:1731:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1731: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();
@@ -682,7 +682,7 @@
     // $ANTLR start "EscapeSequence"
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1720: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 )
+            // src/main/resources/org/drools/lang/DRL.g:1735: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);
 
@@ -769,7 +769,7 @@
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1720: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' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // src/main/resources/org/drools/lang/DRL.g:1735: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)<='}') ) {
@@ -786,14 +786,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1724:9: UnicodeEscape
+                    // src/main/resources/org/drools/lang/DRL.g:1739:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (state.failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1725:9: OctalEscape
+                    // src/main/resources/org/drools/lang/DRL.g:1740:9: OctalEscape
                     {
                     mOctalEscape(); if (state.failed) return ;
 
@@ -810,7 +810,7 @@
     // $ANTLR start "OctalEscape"
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1730:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1745:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -821,9 +821,9 @@
                     int LA12_2 = input.LA(3);
 
                     if ( ((LA12_2>='0' && LA12_2<='7')) ) {
-                        int LA12_4 = input.LA(4);
+                        int LA12_5 = input.LA(4);
 
-                        if ( ((LA12_4>='0' && LA12_4<='7')) ) {
+                        if ( ((LA12_5>='0' && LA12_5<='7')) ) {
                             alt12=1;
                         }
                         else {
@@ -858,25 +858,25 @@
             }
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1730:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1745:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1730:14: ( '0' .. '3' )
-                    // src/main/resources/org/drools/lang/DRL.g:1730:15: '0' .. '3'
+                    // src/main/resources/org/drools/lang/DRL.g:1745:14: ( '0' .. '3' )
+                    // src/main/resources/org/drools/lang/DRL.g:1745:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1730:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1730:26: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1745:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1745:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1730:36: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1730:37: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1745:36: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1745:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -886,18 +886,18 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1731:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1746:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1731:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1731:15: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1746:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1746:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1731:25: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1731:26: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1746:25: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1746:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -907,11 +907,11 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1732:9: '\\\\' ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1747:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (state.failed) return ;
-                    // src/main/resources/org/drools/lang/DRL.g:1732:14: ( '0' .. '7' )
-                    // src/main/resources/org/drools/lang/DRL.g:1732:15: '0' .. '7'
+                    // src/main/resources/org/drools/lang/DRL.g:1747:14: ( '0' .. '7' )
+                    // src/main/resources/org/drools/lang/DRL.g:1747:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (state.failed) return ;
 
@@ -931,8 +931,8 @@
     // $ANTLR start "UnicodeEscape"
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1737:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // src/main/resources/org/drools/lang/DRL.g:1737:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // src/main/resources/org/drools/lang/DRL.g:1752:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // src/main/resources/org/drools/lang/DRL.g:1752:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (state.failed) return ;
             match('u'); if (state.failed) return ;
@@ -954,10 +954,10 @@
         try {
             int _type = BOOL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1741:2: ( ( 'true' | 'false' ) )
-            // src/main/resources/org/drools/lang/DRL.g:1741:4: ( 'true' | 'false' )
+            // src/main/resources/org/drools/lang/DRL.g:1756:2: ( ( 'true' | 'false' ) )
+            // src/main/resources/org/drools/lang/DRL.g:1756:4: ( 'true' | 'false' )
             {
-            // src/main/resources/org/drools/lang/DRL.g:1741:4: ( 'true' | 'false' )
+            // src/main/resources/org/drools/lang/DRL.g:1756:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -976,7 +976,7 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1741:5: 'true'
+                    // src/main/resources/org/drools/lang/DRL.g:1756:5: 'true'
                     {
                     match("true"); if (state.failed) return ;
 
@@ -984,7 +984,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1741:12: 'false'
+                    // src/main/resources/org/drools/lang/DRL.g:1756:12: 'false'
                     {
                     match("false"); if (state.failed) return ;
 
@@ -1010,8 +1010,8 @@
         try {
             int _type = ACCUMULATE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1745:2: ( 'accumulate' )
-            // src/main/resources/org/drools/lang/DRL.g:1745:4: 'accumulate'
+            // src/main/resources/org/drools/lang/DRL.g:1760:2: ( 'accumulate' )
+            // src/main/resources/org/drools/lang/DRL.g:1760:4: 'accumulate'
             {
             match("accumulate"); if (state.failed) return ;
 
@@ -1031,8 +1031,8 @@
         try {
             int _type = COLLECT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1749:2: ( 'collect' )
-            // src/main/resources/org/drools/lang/DRL.g:1749:4: 'collect'
+            // src/main/resources/org/drools/lang/DRL.g:1764:2: ( 'collect' )
+            // src/main/resources/org/drools/lang/DRL.g:1764:4: 'collect'
             {
             match("collect"); if (state.failed) return ;
 
@@ -1047,34 +1047,13 @@
     }
     // $ANTLR end "COLLECT"
 
-    // $ANTLR start "END"
-    public final void mEND() throws RecognitionException {
-        try {
-            int _type = END;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1752:5: ( 'end' )
-            // src/main/resources/org/drools/lang/DRL.g:1752:7: 'end'
-            {
-            match("end"); if (state.failed) return ;
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "END"
-
     // $ANTLR start "FROM"
     public final void mFROM() throws RecognitionException {
         try {
             int _type = FROM;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1756:2: ( 'from' )
-            // src/main/resources/org/drools/lang/DRL.g:1756:4: 'from'
+            // src/main/resources/org/drools/lang/DRL.g:1768:2: ( 'from' )
+            // src/main/resources/org/drools/lang/DRL.g:1768:4: 'from'
             {
             match("from"); if (state.failed) return ;
 
@@ -1089,34 +1068,13 @@
     }
     // $ANTLR end "FROM"
 
-    // $ANTLR start "INIT"
-    public final void mINIT() throws RecognitionException {
-        try {
-            int _type = INIT;
-            int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1760:2: ( 'init' )
-            // src/main/resources/org/drools/lang/DRL.g:1760:4: 'init'
-            {
-            match("init"); if (state.failed) return ;
-
-
-            }
-
-            state.type = _type;
-            state.channel = _channel;
-        }
-        finally {
-        }
-    }
-    // $ANTLR end "INIT"
-
     // $ANTLR start "NULL"
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1764:2: ( 'null' )
-            // src/main/resources/org/drools/lang/DRL.g:1764:4: 'null'
+            // src/main/resources/org/drools/lang/DRL.g:1776:2: ( 'null' )
+            // src/main/resources/org/drools/lang/DRL.g:1776:4: 'null'
             {
             match("null"); if (state.failed) return ;
 
@@ -1136,8 +1094,8 @@
         try {
             int _type = OVER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1768:2: ( 'over' )
-            // src/main/resources/org/drools/lang/DRL.g:1768:4: 'over'
+            // src/main/resources/org/drools/lang/DRL.g:1780:2: ( 'over' )
+            // src/main/resources/org/drools/lang/DRL.g:1780:4: 'over'
             {
             match("over"); if (state.failed) return ;
 
@@ -1157,8 +1115,8 @@
         try {
             int _type = THEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1772:2: ( 'then' )
-            // src/main/resources/org/drools/lang/DRL.g:1772:4: 'then'
+            // src/main/resources/org/drools/lang/DRL.g:1784:2: ( 'then' )
+            // src/main/resources/org/drools/lang/DRL.g:1784:4: 'then'
             {
             match("then"); if (state.failed) return ;
 
@@ -1178,8 +1136,8 @@
         try {
             int _type = WHEN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1776:2: ( 'when' )
-            // src/main/resources/org/drools/lang/DRL.g:1776:4: 'when'
+            // src/main/resources/org/drools/lang/DRL.g:1788:2: ( 'when' )
+            // src/main/resources/org/drools/lang/DRL.g:1788:4: 'when'
             {
             match("when"); if (state.failed) return ;
 
@@ -1199,8 +1157,8 @@
         try {
             int _type = GRAVE_ACCENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1780:2: ( '`' )
-            // src/main/resources/org/drools/lang/DRL.g:1780:4: '`'
+            // src/main/resources/org/drools/lang/DRL.g:1792:2: ( '`' )
+            // src/main/resources/org/drools/lang/DRL.g:1792:4: '`'
             {
             match('`'); if (state.failed) return ;
 
@@ -1219,8 +1177,8 @@
         try {
             int _type = AT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1783:4: ( '@' )
-            // src/main/resources/org/drools/lang/DRL.g:1783:6: '@'
+            // src/main/resources/org/drools/lang/DRL.g:1795:4: ( '@' )
+            // src/main/resources/org/drools/lang/DRL.g:1795:6: '@'
             {
             match('@'); if (state.failed) return ;
 
@@ -1239,8 +1197,8 @@
         try {
             int _type = EQUALS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1787:2: ( '=' )
-            // src/main/resources/org/drools/lang/DRL.g:1787:4: '='
+            // src/main/resources/org/drools/lang/DRL.g:1799:2: ( '=' )
+            // src/main/resources/org/drools/lang/DRL.g:1799:4: '='
             {
             match('='); if (state.failed) return ;
 
@@ -1259,8 +1217,8 @@
         try {
             int _type = SEMICOLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1791:2: ( ';' )
-            // src/main/resources/org/drools/lang/DRL.g:1791:4: ';'
+            // src/main/resources/org/drools/lang/DRL.g:1803:2: ( ';' )
+            // src/main/resources/org/drools/lang/DRL.g:1803:4: ';'
             {
             match(';'); if (state.failed) return ;
 
@@ -1279,8 +1237,8 @@
         try {
             int _type = DOT_STAR;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1795:2: ( '.*' )
-            // src/main/resources/org/drools/lang/DRL.g:1795:4: '.*'
+            // src/main/resources/org/drools/lang/DRL.g:1807:2: ( '.*' )
+            // src/main/resources/org/drools/lang/DRL.g:1807:4: '.*'
             {
             match(".*"); if (state.failed) return ;
 
@@ -1300,8 +1258,8 @@
         try {
             int _type = COLON;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1799:2: ( ':' )
-            // src/main/resources/org/drools/lang/DRL.g:1799:4: ':'
+            // src/main/resources/org/drools/lang/DRL.g:1811:2: ( ':' )
+            // src/main/resources/org/drools/lang/DRL.g:1811:4: ':'
             {
             match(':'); if (state.failed) return ;
 
@@ -1320,8 +1278,8 @@
         try {
             int _type = EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1803:2: ( '==' )
-            // src/main/resources/org/drools/lang/DRL.g:1803:4: '=='
+            // src/main/resources/org/drools/lang/DRL.g:1815:2: ( '==' )
+            // src/main/resources/org/drools/lang/DRL.g:1815:4: '=='
             {
             match("=="); if (state.failed) return ;
 
@@ -1341,8 +1299,8 @@
         try {
             int _type = NOT_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1807:2: ( '!=' )
-            // src/main/resources/org/drools/lang/DRL.g:1807:4: '!='
+            // src/main/resources/org/drools/lang/DRL.g:1819:2: ( '!=' )
+            // src/main/resources/org/drools/lang/DRL.g:1819:4: '!='
             {
             match("!="); if (state.failed) return ;
 
@@ -1362,8 +1320,8 @@
         try {
             int _type = GREATER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1811:2: ( '>' )
-            // src/main/resources/org/drools/lang/DRL.g:1811:4: '>'
+            // src/main/resources/org/drools/lang/DRL.g:1823:2: ( '>' )
+            // src/main/resources/org/drools/lang/DRL.g:1823:4: '>'
             {
             match('>'); if (state.failed) return ;
 
@@ -1382,8 +1340,8 @@
         try {
             int _type = GREATER_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1815:2: ( '>=' )
-            // src/main/resources/org/drools/lang/DRL.g:1815:4: '>='
+            // src/main/resources/org/drools/lang/DRL.g:1827:2: ( '>=' )
+            // src/main/resources/org/drools/lang/DRL.g:1827:4: '>='
             {
             match(">="); if (state.failed) return ;
 
@@ -1403,8 +1361,8 @@
         try {
             int _type = LESS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1819:2: ( '<' )
-            // src/main/resources/org/drools/lang/DRL.g:1819:4: '<'
+            // src/main/resources/org/drools/lang/DRL.g:1831:2: ( '<' )
+            // src/main/resources/org/drools/lang/DRL.g:1831:4: '<'
             {
             match('<'); if (state.failed) return ;
 
@@ -1423,8 +1381,8 @@
         try {
             int _type = LESS_EQUAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1823:2: ( '<=' )
-            // src/main/resources/org/drools/lang/DRL.g:1823:4: '<='
+            // src/main/resources/org/drools/lang/DRL.g:1835:2: ( '<=' )
+            // src/main/resources/org/drools/lang/DRL.g:1835:4: '<='
             {
             match("<="); if (state.failed) return ;
 
@@ -1444,8 +1402,8 @@
         try {
             int _type = ARROW;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1827:2: ( '->' )
-            // src/main/resources/org/drools/lang/DRL.g:1827:4: '->'
+            // src/main/resources/org/drools/lang/DRL.g:1839:2: ( '->' )
+            // src/main/resources/org/drools/lang/DRL.g:1839:4: '->'
             {
             match("->"); if (state.failed) return ;
 
@@ -1465,7 +1423,7 @@
         try {
             int _type = ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1831: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' )+ '%' )
+            // src/main/resources/org/drools/lang/DRL.g:1843: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);
 
@@ -1484,7 +1442,7 @@
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1831:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // src/main/resources/org/drools/lang/DRL.g:1843: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();
@@ -1496,7 +1454,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // src/main/resources/org/drools/lang/DRL.g:1831:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+                    // src/main/resources/org/drools/lang/DRL.g:1843:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
                     loop14:
                     do {
                         int alt14=2;
@@ -1534,7 +1492,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1832:4: '%' ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+ '%'
+                    // src/main/resources/org/drools/lang/DRL.g:1844: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') ) {
@@ -1547,7 +1505,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // src/main/resources/org/drools/lang/DRL.g:1832:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
+                    // src/main/resources/org/drools/lang/DRL.g:1844:54: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )+
                     int cnt15=0;
                     loop15:
                     do {
@@ -1609,8 +1567,8 @@
         try {
             int _type = LEFT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1837:9: ( '(' )
-            // src/main/resources/org/drools/lang/DRL.g:1837:11: '('
+            // src/main/resources/org/drools/lang/DRL.g:1849:9: ( '(' )
+            // src/main/resources/org/drools/lang/DRL.g:1849:11: '('
             {
             match('('); if (state.failed) return ;
 
@@ -1629,8 +1587,8 @@
         try {
             int _type = RIGHT_PAREN;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1841:9: ( ')' )
-            // src/main/resources/org/drools/lang/DRL.g:1841:11: ')'
+            // src/main/resources/org/drools/lang/DRL.g:1853:9: ( ')' )
+            // src/main/resources/org/drools/lang/DRL.g:1853:11: ')'
             {
             match(')'); if (state.failed) return ;
 
@@ -1649,8 +1607,8 @@
         try {
             int _type = LEFT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1845:9: ( '[' )
-            // src/main/resources/org/drools/lang/DRL.g:1845:11: '['
+            // src/main/resources/org/drools/lang/DRL.g:1857:9: ( '[' )
+            // src/main/resources/org/drools/lang/DRL.g:1857:11: '['
             {
             match('['); if (state.failed) return ;
 
@@ -1669,8 +1627,8 @@
         try {
             int _type = RIGHT_SQUARE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1849:9: ( ']' )
-            // src/main/resources/org/drools/lang/DRL.g:1849:11: ']'
+            // src/main/resources/org/drools/lang/DRL.g:1861:9: ( ']' )
+            // src/main/resources/org/drools/lang/DRL.g:1861:11: ']'
             {
             match(']'); if (state.failed) return ;
 
@@ -1689,8 +1647,8 @@
         try {
             int _type = LEFT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1853:9: ( '{' )
-            // src/main/resources/org/drools/lang/DRL.g:1853:11: '{'
+            // src/main/resources/org/drools/lang/DRL.g:1865:9: ( '{' )
+            // src/main/resources/org/drools/lang/DRL.g:1865:11: '{'
             {
             match('{'); if (state.failed) return ;
 
@@ -1709,8 +1667,8 @@
         try {
             int _type = RIGHT_CURLY;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1857:9: ( '}' )
-            // src/main/resources/org/drools/lang/DRL.g:1857:11: '}'
+            // src/main/resources/org/drools/lang/DRL.g:1869:9: ( '}' )
+            // src/main/resources/org/drools/lang/DRL.g:1869:11: '}'
             {
             match('}'); if (state.failed) return ;
 
@@ -1729,8 +1687,8 @@
         try {
             int _type = COMMA;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1860:7: ( ',' )
-            // src/main/resources/org/drools/lang/DRL.g:1860:9: ','
+            // src/main/resources/org/drools/lang/DRL.g:1872:7: ( ',' )
+            // src/main/resources/org/drools/lang/DRL.g:1872:9: ','
             {
             match(','); if (state.failed) return ;
 
@@ -1749,8 +1707,8 @@
         try {
             int _type = DOT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1863:5: ( '.' )
-            // src/main/resources/org/drools/lang/DRL.g:1863:7: '.'
+            // src/main/resources/org/drools/lang/DRL.g:1875:5: ( '.' )
+            // src/main/resources/org/drools/lang/DRL.g:1875:7: '.'
             {
             match('.'); if (state.failed) return ;
 
@@ -1769,8 +1727,8 @@
         try {
             int _type = DOUBLE_AMPER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1867:2: ( '&&' )
-            // src/main/resources/org/drools/lang/DRL.g:1867:4: '&&'
+            // src/main/resources/org/drools/lang/DRL.g:1879:2: ( '&&' )
+            // src/main/resources/org/drools/lang/DRL.g:1879:4: '&&'
             {
             match("&&"); if (state.failed) return ;
 
@@ -1790,8 +1748,8 @@
         try {
             int _type = DOUBLE_PIPE;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1871:2: ( '||' )
-            // src/main/resources/org/drools/lang/DRL.g:1871:4: '||'
+            // src/main/resources/org/drools/lang/DRL.g:1883:2: ( '||' )
+            // src/main/resources/org/drools/lang/DRL.g:1883:4: '||'
             {
             match("||"); if (state.failed) return ;
 
@@ -1811,11 +1769,11 @@
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1875:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1875:4: '#' ( options {greedy=false; } : . )* EOL
+            // src/main/resources/org/drools/lang/DRL.g:1887:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // src/main/resources/org/drools/lang/DRL.g:1887:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (state.failed) return ;
-            // src/main/resources/org/drools/lang/DRL.g:1875:8: ( options {greedy=false; } : . )*
+            // src/main/resources/org/drools/lang/DRL.g:1887:8: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1834,7 +1792,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1875:35: .
+            	    // src/main/resources/org/drools/lang/DRL.g:1887:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1866,12 +1824,12 @@
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1881:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // src/main/resources/org/drools/lang/DRL.g:1881:4: '//' ( options {greedy=false; } : . )* EOL
+            // src/main/resources/org/drools/lang/DRL.g:1893:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // src/main/resources/org/drools/lang/DRL.g:1893:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1881:9: ( options {greedy=false; } : . )*
+            // src/main/resources/org/drools/lang/DRL.g:1893:9: ( options {greedy=false; } : . )*
             loop18:
             do {
                 int alt18=2;
@@ -1890,7 +1848,7 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1881:36: .
+            	    // src/main/resources/org/drools/lang/DRL.g:1893:36: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1922,12 +1880,12 @@
         try {
             int _type = MULTI_LINE_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1886:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // src/main/resources/org/drools/lang/DRL.g:1886:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // src/main/resources/org/drools/lang/DRL.g:1898:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // src/main/resources/org/drools/lang/DRL.g:1898:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (state.failed) return ;
 
-            // src/main/resources/org/drools/lang/DRL.g:1886:9: ( options {greedy=false; } : . )*
+            // src/main/resources/org/drools/lang/DRL.g:1898:9: ( options {greedy=false; } : . )*
             loop19:
             do {
                 int alt19=2;
@@ -1952,7 +1910,7 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1886:35: .
+            	    // src/main/resources/org/drools/lang/DRL.g:1898:35: .
             	    {
             	    matchAny(); if (state.failed) return ;
 
@@ -1985,7 +1943,7 @@
         try {
             int _type = MISC;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // src/main/resources/org/drools/lang/DRL.g:1890:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
+            // src/main/resources/org/drools/lang/DRL.g:1902:7: ( '!' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '/' | '\\'' | '\\\\' | '|' | '&' )
             // 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)<='_')||input.LA(1)=='|' ) {
@@ -2010,8 +1968,8 @@
     // $ANTLR end "MISC"
 
     public void mTokens() throws RecognitionException {
-        // src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
-        int alt20=42;
+        // src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | FROM | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC )
+        int alt20=40;
         alt20 = dfa20.predict(input);
         switch (alt20) {
             case 1 :
@@ -2064,246 +2022,232 @@
                 }
                 break;
             case 8 :
-                // src/main/resources/org/drools/lang/DRL.g:1:54: END
+                // src/main/resources/org/drools/lang/DRL.g:1:54: FROM
                 {
-                mEND(); if (state.failed) return ;
+                mFROM(); if (state.failed) return ;
 
                 }
                 break;
             case 9 :
-                // src/main/resources/org/drools/lang/DRL.g:1:58: FROM
+                // src/main/resources/org/drools/lang/DRL.g:1:59: NULL
                 {
-                mFROM(); if (state.failed) return ;
+                mNULL(); if (state.failed) return ;
 
                 }
                 break;
             case 10 :
-                // src/main/resources/org/drools/lang/DRL.g:1:63: INIT
+                // src/main/resources/org/drools/lang/DRL.g:1:64: OVER
                 {
-                mINIT(); if (state.failed) return ;
+                mOVER(); if (state.failed) return ;
 
                 }
                 break;
             case 11 :
-                // src/main/resources/org/drools/lang/DRL.g:1:68: NULL
+                // src/main/resources/org/drools/lang/DRL.g:1:69: THEN
                 {
-                mNULL(); if (state.failed) return ;
+                mTHEN(); if (state.failed) return ;
 
                 }
                 break;
             case 12 :
-                // src/main/resources/org/drools/lang/DRL.g:1:73: OVER
+                // src/main/resources/org/drools/lang/DRL.g:1:74: WHEN
                 {
-                mOVER(); if (state.failed) return ;
+                mWHEN(); if (state.failed) return ;
 
                 }
                 break;
             case 13 :
-                // src/main/resources/org/drools/lang/DRL.g:1:78: THEN
+                // src/main/resources/org/drools/lang/DRL.g:1:79: GRAVE_ACCENT
                 {
-                mTHEN(); if (state.failed) return ;
+                mGRAVE_ACCENT(); if (state.failed) return ;
 
                 }
                 break;
             case 14 :
-                // src/main/resources/org/drools/lang/DRL.g:1:83: WHEN
+                // src/main/resources/org/drools/lang/DRL.g:1:92: AT
                 {
-                mWHEN(); if (state.failed) return ;
+                mAT(); if (state.failed) return ;
 
                 }
                 break;
             case 15 :
-                // src/main/resources/org/drools/lang/DRL.g:1:88: GRAVE_ACCENT
+                // src/main/resources/org/drools/lang/DRL.g:1:95: EQUALS
                 {
-                mGRAVE_ACCENT(); if (state.failed) return ;
+                mEQUALS(); if (state.failed) return ;
 
                 }
                 break;
             case 16 :
-                // src/main/resources/org/drools/lang/DRL.g:1:101: AT
+                // src/main/resources/org/drools/lang/DRL.g:1:102: SEMICOLON
                 {
-                mAT(); if (state.failed) return ;
+                mSEMICOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 17 :
-                // src/main/resources/org/drools/lang/DRL.g:1:104: EQUALS
+                // src/main/resources/org/drools/lang/DRL.g:1:112: DOT_STAR
                 {
-                mEQUALS(); if (state.failed) return ;
+                mDOT_STAR(); if (state.failed) return ;
 
                 }
                 break;
             case 18 :
-                // src/main/resources/org/drools/lang/DRL.g:1:111: SEMICOLON
+                // src/main/resources/org/drools/lang/DRL.g:1:121: COLON
                 {
-                mSEMICOLON(); if (state.failed) return ;
+                mCOLON(); if (state.failed) return ;
 
                 }
                 break;
             case 19 :
-                // src/main/resources/org/drools/lang/DRL.g:1:121: DOT_STAR
+                // src/main/resources/org/drools/lang/DRL.g:1:127: EQUAL
                 {
-                mDOT_STAR(); if (state.failed) return ;
+                mEQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 20 :
-                // src/main/resources/org/drools/lang/DRL.g:1:130: COLON
+                // src/main/resources/org/drools/lang/DRL.g:1:133: NOT_EQUAL
                 {
-                mCOLON(); if (state.failed) return ;
+                mNOT_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 21 :
-                // src/main/resources/org/drools/lang/DRL.g:1:136: EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:143: GREATER
                 {
-                mEQUAL(); if (state.failed) return ;
+                mGREATER(); if (state.failed) return ;
 
                 }
                 break;
             case 22 :
-                // src/main/resources/org/drools/lang/DRL.g:1:142: NOT_EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:151: GREATER_EQUAL
                 {
-                mNOT_EQUAL(); if (state.failed) return ;
+                mGREATER_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 23 :
-                // src/main/resources/org/drools/lang/DRL.g:1:152: GREATER
+                // src/main/resources/org/drools/lang/DRL.g:1:165: LESS
                 {
-                mGREATER(); if (state.failed) return ;
+                mLESS(); if (state.failed) return ;
 
                 }
                 break;
             case 24 :
-                // src/main/resources/org/drools/lang/DRL.g:1:160: GREATER_EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:170: LESS_EQUAL
                 {
-                mGREATER_EQUAL(); if (state.failed) return ;
+                mLESS_EQUAL(); if (state.failed) return ;
 
                 }
                 break;
             case 25 :
-                // src/main/resources/org/drools/lang/DRL.g:1:174: LESS
+                // src/main/resources/org/drools/lang/DRL.g:1:181: ARROW
                 {
-                mLESS(); if (state.failed) return ;
+                mARROW(); if (state.failed) return ;
 
                 }
                 break;
             case 26 :
-                // src/main/resources/org/drools/lang/DRL.g:1:179: LESS_EQUAL
+                // src/main/resources/org/drools/lang/DRL.g:1:187: ID
                 {
-                mLESS_EQUAL(); if (state.failed) return ;
+                mID(); if (state.failed) return ;
 
                 }
                 break;
             case 27 :
-                // src/main/resources/org/drools/lang/DRL.g:1:190: ARROW
+                // src/main/resources/org/drools/lang/DRL.g:1:190: LEFT_PAREN
                 {
-                mARROW(); if (state.failed) return ;
+                mLEFT_PAREN(); if (state.failed) return ;
 
                 }
                 break;
             case 28 :
-                // src/main/resources/org/drools/lang/DRL.g:1:196: ID
+                // src/main/resources/org/drools/lang/DRL.g:1:201: RIGHT_PAREN
                 {
-                mID(); if (state.failed) return ;
+                mRIGHT_PAREN(); if (state.failed) return ;
 
                 }
                 break;
             case 29 :
-                // src/main/resources/org/drools/lang/DRL.g:1:199: LEFT_PAREN
+                // src/main/resources/org/drools/lang/DRL.g:1:213: LEFT_SQUARE
                 {
-                mLEFT_PAREN(); if (state.failed) return ;
+                mLEFT_SQUARE(); if (state.failed) return ;
 
                 }
                 break;
             case 30 :
-                // src/main/resources/org/drools/lang/DRL.g:1:210: RIGHT_PAREN
+                // src/main/resources/org/drools/lang/DRL.g:1:225: RIGHT_SQUARE
                 {
-                mRIGHT_PAREN(); if (state.failed) return ;
+                mRIGHT_SQUARE(); if (state.failed) return ;
 
                 }
                 break;
             case 31 :
-                // src/main/resources/org/drools/lang/DRL.g:1:222: LEFT_SQUARE
+                // src/main/resources/org/drools/lang/DRL.g:1:238: LEFT_CURLY
                 {
-                mLEFT_SQUARE(); if (state.failed) return ;
+                mLEFT_CURLY(); if (state.failed) return ;
 
                 }
                 break;
             case 32 :
-                // src/main/resources/org/drools/lang/DRL.g:1:234: RIGHT_SQUARE
+                // src/main/resources/org/drools/lang/DRL.g:1:249: RIGHT_CURLY
                 {
-                mRIGHT_SQUARE(); if (state.failed) return ;
+                mRIGHT_CURLY(); if (state.failed) return ;
 
                 }
                 break;
             case 33 :
-                // src/main/resources/org/drools/lang/DRL.g:1:247: LEFT_CURLY
+                // src/main/resources/org/drools/lang/DRL.g:1:261: COMMA
                 {
-                mLEFT_CURLY(); if (state.failed) return ;
+                mCOMMA(); if (state.failed) return ;
 
                 }
                 break;
             case 34 :
-                // src/main/resources/org/drools/lang/DRL.g:1:258: RIGHT_CURLY
+                // src/main/resources/org/drools/lang/DRL.g:1:267: DOT
                 {
-                mRIGHT_CURLY(); if (state.failed) return ;
+                mDOT(); if (state.failed) return ;
 
                 }
                 break;
             case 35 :
-                // src/main/resources/org/drools/lang/DRL.g:1:270: COMMA
+                // src/main/resources/org/drools/lang/DRL.g:1:271: DOUBLE_AMPER
                 {
-                mCOMMA(); if (state.failed) return ;
+                mDOUBLE_AMPER(); if (state.failed) return ;
 
                 }
                 break;
             case 36 :
-                // src/main/resources/org/drools/lang/DRL.g:1:276: DOT
+                // src/main/resources/org/drools/lang/DRL.g:1:284: DOUBLE_PIPE
                 {
-                mDOT(); if (state.failed) return ;
+                mDOUBLE_PIPE(); if (state.failed) return ;
 
                 }
                 break;
             case 37 :
-                // src/main/resources/org/drools/lang/DRL.g:1:280: DOUBLE_AMPER
+                // src/main/resources/org/drools/lang/DRL.g:1:296: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mDOUBLE_AMPER(); if (state.failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
 
                 }
                 break;
             case 38 :
-                // src/main/resources/org/drools/lang/DRL.g:1:293: DOUBLE_PIPE
+                // src/main/resources/org/drools/lang/DRL.g:1:325: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mDOUBLE_PIPE(); if (state.failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
 
                 }
                 break;
             case 39 :
-                // src/main/resources/org/drools/lang/DRL.g:1:305: SH_STYLE_SINGLE_LINE_COMMENT
+                // src/main/resources/org/drools/lang/DRL.g:1:353: MULTI_LINE_COMMENT
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
+                mMULTI_LINE_COMMENT(); if (state.failed) return ;
 
                 }
                 break;
             case 40 :
-                // src/main/resources/org/drools/lang/DRL.g:1:334: C_STYLE_SINGLE_LINE_COMMENT
+                // src/main/resources/org/drools/lang/DRL.g:1:372: MISC
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return ;
-
-                }
-                break;
-            case 41 :
-                // src/main/resources/org/drools/lang/DRL.g:1:362: MULTI_LINE_COMMENT
-                {
-                mMULTI_LINE_COMMENT(); if (state.failed) return ;
-
-                }
-                break;
-            case 42 :
-                // src/main/resources/org/drools/lang/DRL.g:1:381: MISC
-                {
                 mMISC(); if (state.failed) return ;
 
                 }
@@ -2315,8 +2259,8 @@
 
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:1696:14: ( '\\r\\n' )
-        // src/main/resources/org/drools/lang/DRL.g:1696:16: '\\r\\n'
+        // src/main/resources/org/drools/lang/DRL.g:1711:14: ( '\\r\\n' )
+        // src/main/resources/org/drools/lang/DRL.g:1711:16: '\\r\\n'
         {
         match("\r\n"); if (state.failed) return ;
 
@@ -2343,98 +2287,93 @@
 
     protected DFA20 dfa20 = new DFA20(this);
     static final String DFA20_eotS =
-        "\2\uffff\1\46\1\50\1\uffff\1\46\11\45\2\uffff\1\66\1\uffff\1\70"+
-        "\1\uffff\1\46\1\73\1\75\1\uffff\1\46\7\uffff\2\46\1\uffff\1\46\5"+
-        "\uffff\13\45\15\uffff\6\45\1\123\4\45\1\130\1\131\1\45\1\133\2\45"+
-        "\1\uffff\1\136\1\137\1\140\1\141\2\uffff\1\130\1\uffff\2\45\4\uffff"+
-        "\3\45\1\147\1\45\1\uffff\1\45\1\152\1\uffff";
+        "\2\uffff\1\44\1\46\1\uffff\1\44\7\43\2\uffff\1\62\1\uffff\1\64"+
+        "\1\uffff\1\44\1\67\1\71\1\uffff\1\44\7\uffff\2\44\1\uffff\1\44\5"+
+        "\uffff\11\43\15\uffff\11\43\1\120\1\121\1\43\1\123\2\43\1\126\1"+
+        "\127\1\130\2\uffff\1\120\1\uffff\2\43\3\uffff\3\43\1\136\1\43\1"+
+        "\uffff\1\43\1\141\1\uffff";
     static final String DFA20_eofS =
-        "\153\uffff";
+        "\142\uffff";
     static final String DFA20_minS =
-        "\1\11\1\uffff\1\60\1\56\1\uffff\1\0\1\150\1\141\1\143\1\157\2\156"+
-        "\1\165\1\166\1\150\2\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1\uffff"+
-        "\1\44\7\uffff\1\46\1\174\1\uffff\1\52\5\uffff\1\165\1\145\1\154"+
-        "\1\157\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145\1\156"+
-        "\1\163\1\155\1\165\1\154\1\60\1\164\1\154\1\162\1\156\2\60\1\145"+
-        "\1\60\1\155\1\145\1\uffff\4\60\2\uffff\1\60\1\uffff\1\165\1\143"+
-        "\4\uffff\1\154\1\164\1\141\1\60\1\164\1\uffff\1\145\1\60\1\uffff";
+        "\1\11\1\uffff\1\60\1\56\1\uffff\1\0\1\150\1\141\1\143\1\157\1\165"+
+        "\1\166\1\150\2\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1\uffff\1\44"+
+        "\7\uffff\1\46\1\174\1\uffff\1\52\5\uffff\1\165\1\145\1\154\1\157"+
+        "\1\143\2\154\2\145\15\uffff\1\145\1\156\1\163\1\155\1\165\2\154"+
+        "\1\162\1\156\2\60\1\145\1\60\1\155\1\145\3\60\2\uffff\1\60\1\uffff"+
+        "\1\165\1\143\3\uffff\1\154\1\164\1\141\1\60\1\164\1\uffff\1\145"+
+        "\1\60\1\uffff";
     static final String DFA20_maxS =
-        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\uffff\2\162\1\143\1\157\2"+
-        "\156\1\165\1\166\1\150\2\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1"+
-        "\uffff\1\u00ff\7\uffff\1\46\1\174\1\uffff\1\57\5\uffff\1\165\1\145"+
-        "\1\154\1\157\1\143\1\154\1\144\1\151\1\154\2\145\15\uffff\1\145"+
-        "\1\156\1\163\1\155\1\165\1\154\1\u00ff\1\164\1\154\1\162\1\156\2"+
-        "\u00ff\1\145\1\u00ff\1\155\1\145\1\uffff\4\u00ff\2\uffff\1\u00ff"+
-        "\1\uffff\1\165\1\143\4\uffff\1\154\1\164\1\141\1\u00ff\1\164\1\uffff"+
-        "\1\145\1\u00ff\1\uffff";
+        "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\uffff\2\162\1\143\1\157\1"+
+        "\165\1\166\1\150\2\uffff\1\75\1\uffff\1\52\1\uffff\3\75\1\uffff"+
+        "\1\u00ff\7\uffff\1\46\1\174\1\uffff\1\57\5\uffff\1\165\1\145\1\154"+
+        "\1\157\1\143\2\154\2\145\15\uffff\1\145\1\156\1\163\1\155\1\165"+
+        "\2\154\1\162\1\156\2\u00ff\1\145\1\u00ff\1\155\1\145\3\u00ff\2\uffff"+
+        "\1\u00ff\1\uffff\1\165\1\143\3\uffff\1\154\1\164\1\141\1\u00ff\1"+
+        "\164\1\uffff\1\145\1\u00ff\1\uffff";
     static final String DFA20_acceptS =
-        "\1\uffff\1\1\2\uffff\1\4\12\uffff\1\17\1\20\1\uffff\1\22\1\uffff"+
-        "\1\24\3\uffff\1\34\1\uffff\1\35\1\36\1\37\1\40\1\41\1\42\1\43\2"+
-        "\uffff\1\47\1\uffff\1\34\1\52\1\33\1\2\1\3\13\uffff\1\25\1\21\1"+
-        "\23\1\44\1\26\1\30\1\27\1\32\1\31\1\45\1\46\1\50\1\51\21\uffff\1"+
-        "\10\4\uffff\1\5\1\15\1\uffff\1\11\2\uffff\1\12\1\13\1\14\1\16\5"+
-        "\uffff\1\7\2\uffff\1\6";
+        "\1\uffff\1\1\2\uffff\1\4\10\uffff\1\15\1\16\1\uffff\1\20\1\uffff"+
+        "\1\22\3\uffff\1\32\1\uffff\1\33\1\34\1\35\1\36\1\37\1\40\1\41\2"+
+        "\uffff\1\45\1\uffff\1\32\1\50\1\31\1\2\1\3\11\uffff\1\23\1\17\1"+
+        "\21\1\42\1\24\1\26\1\25\1\30\1\27\1\43\1\44\1\46\1\47\22\uffff\1"+
+        "\5\1\13\1\uffff\1\10\2\uffff\1\11\1\12\1\14\5\uffff\1\7\2\uffff"+
+        "\1\6";
     static final String DFA20_specialS =
-        "\5\uffff\1\0\145\uffff}>";
+        "\5\uffff\1\0\134\uffff}>";
     static final String[] DFA20_transitionS = {
-            "\2\1\1\uffff\2\1\22\uffff\1\1\1\25\1\4\1\43\1\30\1\31\1\41"+
-            "\1\5\1\32\1\33\2\46\1\40\1\2\1\23\1\44\12\3\1\24\1\22\1\27\1"+
-            "\21\1\26\1\46\1\20\32\45\1\34\1\46\1\35\1\46\1\30\1\17\1\10"+
-            "\1\45\1\11\1\45\1\12\1\7\2\45\1\13\4\45\1\14\1\15\4\45\1\6\2"+
-            "\45\1\16\3\45\1\36\1\42\1\37\102\uffff\100\45",
+            "\2\1\1\uffff\2\1\22\uffff\1\1\1\23\1\4\1\41\1\26\1\27\1\37"+
+            "\1\5\1\30\1\31\2\44\1\36\1\2\1\21\1\42\12\3\1\22\1\20\1\25\1"+
+            "\17\1\24\1\44\1\16\32\43\1\32\1\44\1\33\1\44\1\26\1\15\1\10"+
+            "\1\43\1\11\2\43\1\7\7\43\1\12\1\13\4\43\1\6\2\43\1\14\3\43\1"+
+            "\34\1\40\1\35\102\uffff\100\43",
             "",
-            "\12\3\4\uffff\1\47",
-            "\1\51\1\uffff\12\3",
+            "\12\3\4\uffff\1\45",
+            "\1\47\1\uffff\12\3",
             "",
             "\0\4",
-            "\1\53\11\uffff\1\52",
-            "\1\54\20\uffff\1\55",
+            "\1\51\11\uffff\1\50",
+            "\1\52\20\uffff\1\53",
+            "\1\54",
+            "\1\55",
             "\1\56",
             "\1\57",
             "\1\60",
+            "",
+            "",
             "\1\61",
-            "\1\62",
+            "",
             "\1\63",
-            "\1\64",
             "",
-            "",
             "\1\65",
+            "\1\66",
+            "\1\70",
             "",
-            "\1\67",
+            "\1\43\34\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
             "",
-            "\1\71",
-            "\1\72",
-            "\1\74",
             "",
-            "\1\45\34\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
             "",
             "",
             "",
             "",
             "",
+            "\1\72",
+            "\1\73",
             "",
+            "\1\75\4\uffff\1\74",
             "",
-            "\1\76",
-            "\1\77",
             "",
-            "\1\101\4\uffff\1\100",
             "",
             "",
             "",
-            "",
-            "",
+            "\1\76",
+            "\1\77",
+            "\1\100",
+            "\1\101",
             "\1\102",
             "\1\103",
             "\1\104",
             "\1\105",
             "\1\106",
-            "\1\107",
-            "\1\110",
-            "\1\111",
-            "\1\112",
-            "\1\113",
-            "\1\114",
             "",
             "",
             "",
@@ -2448,57 +2387,50 @@
             "",
             "",
             "",
+            "\1\107",
+            "\1\110",
+            "\1\111",
+            "\1\112",
+            "\1\113",
+            "\1\114",
             "\1\115",
             "\1\116",
             "\1\117",
-            "\1\120",
-            "\1\121",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
             "\1\122",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
             "\1\124",
             "\1\125",
-            "\1\126",
-            "\1\127",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
-            "\1\132",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
-            "\1\134",
-            "\1\135",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
             "",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
             "",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
             "",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
+            "\1\131",
+            "\1\132",
             "",
-            "\1\142",
-            "\1\143",
             "",
             "",
+            "\1\133",
+            "\1\134",
+            "\1\135",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
+            "\1\137",
             "",
-            "",
-            "\1\144",
-            "\1\145",
-            "\1\146",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
-            "\1\150",
-            "",
-            "\1\151",
-            "\12\45\7\uffff\32\45\4\uffff\1\45\1\uffff\32\45\105\uffff"+
-            "\100\45",
+            "\1\140",
+            "\12\43\7\uffff\32\43\4\uffff\1\43\1\uffff\32\43\105\uffff"+
+            "\100\43",
             ""
     };
 
@@ -2532,7 +2464,7 @@
             this.transition = DFA20_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | END | FROM | INIT | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC );";
+            return "1:1: Tokens : ( WS | INT | FLOAT | STRING | BOOL | ACCUMULATE | COLLECT | FROM | NULL | OVER | THEN | WHEN | GRAVE_ACCENT | AT | EQUALS | SEMICOLON | DOT_STAR | COLON | EQUAL | NOT_EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | ARROW | ID | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | DOUBLE_AMPER | DOUBLE_PIPE | SH_STYLE_SINGLE_LINE_COMMENT | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | MISC );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
@@ -2544,7 +2476,7 @@
                         s = -1;
                         if ( ((LA20_5>='\u0000' && LA20_5<='\uFFFF')) ) {s = 4;}
 
-                        else s = 38;
+                        else s = 36;
 
                         if ( s>=0 ) return s;
                         break;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-01-15 19:47:13
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DRL.g 2009-01-25 11:44:45
 
 	package org.drools.lang;
 	
@@ -18,14 +18,13 @@
 
 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_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", "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_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "INIT", "COLLECT", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "GRAVE_ACCENT", "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_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", "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_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "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", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "GRAVE_ACCENT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=86;
+    public static final int COMMA=87;
     public static final int VT_PATTERN_TYPE=39;
     public static final int VT_ACCUMULATE_ID_CLAUSE=28;
     public static final int VK_DIALECT=54;
     public static final int VK_FUNCTION=65;
-    public static final int END=83;
     public static final int HexDigit=119;
     public static final int VK_ATTRIBUTES=57;
     public static final int VT_EXPRESSION_CHAIN=30;
@@ -34,7 +33,7 @@
     public static final int VK_QUERY=63;
     public static final int THEN=112;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=81;
+    public static final int DOT=83;
     public static final int VK_IMPORT=60;
     public static final int VT_SLOT=15;
     public static final int VT_PACKAGE_ID=40;
@@ -43,20 +42,20 @@
     public static final int VT_DATA_TYPE=38;
     public static final int VT_FACT=6;
     public static final int LEFT_CURLY=113;
-    public static final int AT=88;
-    public static final int DOUBLE_AMPER=95;
-    public static final int LEFT_PAREN=85;
+    public static final int AT=89;
+    public static final int DOUBLE_AMPER=96;
+    public static final int LEFT_PAREN=86;
     public static final int VT_QUERY_ID=9;
     public static final int VT_ACCESSOR_PATH=36;
     public static final int VT_LABEL=8;
-    public static final int WHEN=91;
+    public static final int WHEN=92;
     public static final int VT_ENTRYPOINT_ID=13;
     public static final int WS=117;
     public static final int VT_FIELD=35;
     public static final int VK_SALIENCE=55;
-    public static final int OVER=97;
+    public static final int OVER=98;
     public static final int VK_AND=72;
-    public static final int STRING=84;
+    public static final int STRING=85;
     public static final int VT_ACCESSOR_ELEMENT=37;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
     public static final int VK_GLOBAL=66;
@@ -71,17 +70,17 @@
     public static final int COLLECT=100;
     public static final int VK_ENABLED=56;
     public static final int VK_RESULT=77;
-    public static final int EQUALS=90;
+    public static final int EQUALS=91;
     public static final int UnicodeEscape=120;
     public static final int VK_PACKAGE=61;
     public static final int VT_RULE_ID=12;
     public static final int EQUAL=102;
     public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=79;
+    public static final int SEMICOLON=81;
     public static final int VK_TEMPLATE=62;
     public static final int VT_AND_IMPLICIT=22;
     public static final int NULL=109;
-    public static final int COLON=89;
+    public static final int COLON=90;
     public static final int MULTI_LINE_COMMENT=125;
     public static final int VT_RULE_ATTRIBUTES=16;
     public static final int RIGHT_SQUARE=111;
@@ -91,30 +90,30 @@
     public static final int VK_DATE_EXPIRES=46;
     public static final int ARROW=101;
     public static final int FLOAT=108;
-    public static final int INIT=99;
     public static final int VK_EXTEND=59;
     public static final int VT_SLOT_ID=14;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_OR_PREFIX=24;
-    public static final int DOUBLE_PIPE=94;
+    public static final int DOUBLE_PIPE=95;
+    public static final int VK_END=79;
     public static final int LESS=105;
     public static final int VT_TYPE_DECLARE_ID=11;
     public static final int VT_PATTERN=31;
     public static final int VK_DATE_EFFECTIVE=45;
     public static final int EscapeSequence=118;
     public static final int VK_EXISTS=73;
-    public static final int INT=93;
+    public static final int INT=94;
     public static final int VT_BIND_FIELD=34;
     public static final int VK_RULE=58;
     public static final int VK_EVAL=67;
     public static final int GREATER=103;
     public static final int VT_FACT_BINDING=32;
-    public static final int FROM=96;
-    public static final int ID=80;
+    public static final int FROM=97;
+    public static final int ID=82;
     public static final int NOT_EQUAL=107;
     public static final int RIGHT_CURLY=114;
     public static final int VK_OPERATOR=78;
-    public static final int BOOL=92;
+    public static final int BOOL=93;
     public static final int VT_AND_INFIX=25;
     public static final int VT_PARAM_LIST=44;
     public static final int VK_ENTRY_POINT=68;
@@ -125,11 +124,11 @@
     public static final int VT_RHS_CHUNK=17;
     public static final int GREATER_EQUAL=104;
     public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=82;
+    public static final int DOT_STAR=84;
     public static final int VK_OR=71;
     public static final int VT_GLOBAL_ID=42;
     public static final int LESS_EQUAL=106;
-    public static final int ACCUMULATE=98;
+    public static final int ACCUMULATE=99;
     public static final int VK_RULEFLOW_GROUP=52;
     public static final int VT_FUNCTION_ID=43;
     public static final int EOF=-1;
@@ -137,9 +136,10 @@
     public static final int EOL=116;
     public static final int VT_IMPORT_ID=41;
     public static final int VK_ACTIVATION_GROUP=50;
+    public static final int VK_INIT=80;
     public static final int OctalEscape=121;
     public static final int VK_ACTION=75;
-    public static final int RIGHT_PAREN=87;
+    public static final int RIGHT_PAREN=88;
     public static final int VT_TEMPLATE_ID=10;
     public static final int C_STYLE_SINGLE_LINE_COMMENT=124;
     public static final int VK_DECLARE=64;
@@ -424,7 +424,7 @@
     };
 
     // $ANTLR start "compilation_unit"
-    // src/main/resources/org/drools/lang/DRL.g:393:1: compilation_unit : ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:395: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);
@@ -442,17 +442,17 @@
         RewriteRuleSubtreeStream stream_package_statement=new RewriteRuleSubtreeStream(adaptor,"rule package_statement");
         RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:394:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:394:4: ( package_statement )? ( statement )* EOF
+            // src/main/resources/org/drools/lang/DRL.g:396:2: ( ( package_statement )? ( statement )* EOF -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )? ( statement )* EOF
             {
-            // src/main/resources/org/drools/lang/DRL.g:394:4: ( package_statement )?
+            // src/main/resources/org/drools/lang/DRL.g:396:4: ( package_statement )?
             int alt1=2;
             alt1 = dfa1.predict(input);
             switch (alt1) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:394:4: package_statement
+                    // src/main/resources/org/drools/lang/DRL.g:396:4: package_statement
                     {
-                    pushFollow(FOLLOW_package_statement_in_compilation_unit376);
+                    pushFollow(FOLLOW_package_statement_in_compilation_unit384);
                     package_statement1=package_statement();
 
                     state._fsp--;
@@ -464,7 +464,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:395:3: ( statement )*
+            // src/main/resources/org/drools/lang/DRL.g:397:3: ( statement )*
             loop2:
             do {
                 int alt2=2;
@@ -477,9 +477,9 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:395:3: statement
+            	    // src/main/resources/org/drools/lang/DRL.g:397:3: statement
             	    {
-            	    pushFollow(FOLLOW_statement_in_compilation_unit381);
+            	    pushFollow(FOLLOW_statement_in_compilation_unit389);
             	    statement2=statement();
 
             	    state._fsp--;
@@ -494,13 +494,13 @@
                 }
             } while (true);
 
-            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit386); if (state.failed) return retval; 
+            EOF3=(Token)match(input,EOF,FOLLOW_EOF_in_compilation_unit394); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_EOF.add(EOF3);
 
 
 
             // AST REWRITE
-            // elements: statement, package_statement
+            // elements: package_statement, statement
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -510,20 +510,20 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 397:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+            // 399:3: -> ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:397:6: ^( VT_COMPILATION_UNIT ( package_statement )? ( statement )* )
+                // src/main/resources/org/drools/lang/DRL.g:399: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:397:28: ( package_statement )?
+                // src/main/resources/org/drools/lang/DRL.g:399:28: ( package_statement )?
                 if ( stream_package_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_package_statement.nextTree());
 
                 }
                 stream_package_statement.reset();
-                // src/main/resources/org/drools/lang/DRL.g:397:47: ( statement )*
+                // src/main/resources/org/drools/lang/DRL.g:399:47: ( statement )*
                 while ( stream_statement.hasNext() ) {
                     adaptor.addChild(root_1, stream_statement.nextTree());
 
@@ -598,7 +598,7 @@
     };
 
     // $ANTLR start "package_statement"
-    // src/main/resources/org/drools/lang/DRL.g:436:1: package_statement : package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:438: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);
@@ -617,22 +617,22 @@
         RewriteRuleSubtreeStream stream_package_id=new RewriteRuleSubtreeStream(adaptor,"rule package_id");
          pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:439:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:439:4: package_key package_id ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:441:2: ( package_key package_id ( SEMICOLON )? -> ^( package_key package_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:441:4: package_key package_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_package_key_in_package_statement441);
+            pushFollow(FOLLOW_package_key_in_package_statement449);
             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_statement445);
+            pushFollow(FOLLOW_package_id_in_package_statement453);
             package_id5=package_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_package_id.add(package_id5.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:440:14: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:442:14: ( SEMICOLON )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -641,9 +641,9 @@
             }
             switch (alt3) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:440:14: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:442:14: SEMICOLON
                     {
-                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement447); if (state.failed) return retval; 
+                    SEMICOLON6=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_package_statement455); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON6);
 
 
@@ -658,7 +658,7 @@
 
 
             // AST REWRITE
-            // elements: package_id, package_key
+            // elements: package_key, package_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -668,9 +668,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 442:3: -> ^( package_key package_id )
+            // 444:3: -> ^( package_key package_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:442:6: ^( package_key package_id )
+                // src/main/resources/org/drools/lang/DRL.g:444:6: ^( package_key package_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_package_key.nextNode(), root_1);
@@ -714,7 +714,7 @@
     };
 
     // $ANTLR start "package_id"
-    // src/main/resources/org/drools/lang/DRL.g:445:1: package_id : id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) ;
+    // src/main/resources/org/drools/lang/DRL.g:447: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);
@@ -729,16 +729,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:446:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:446:4: id+= ID (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:448:2: (id+= ID (id+= DOT id+= ID )* -> ^( VT_PACKAGE_ID ( ID )+ ) )
+            // src/main/resources/org/drools/lang/DRL.g:448:4: id+= ID (id+= DOT id+= ID )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_package_id474); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_id482); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:446:11: (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:448:11: (id+= DOT id+= ID )*
             loop4:
             do {
                 int alt4=2;
@@ -751,15 +751,15 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:446:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:448:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id480); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_package_id488); 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_id484); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_package_id492); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -791,9 +791,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 449:3: -> ^( VT_PACKAGE_ID ( ID )+ )
+            // 451:3: -> ^( VT_PACKAGE_ID ( ID )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:449:6: ^( VT_PACKAGE_ID ( ID )+ )
+                // src/main/resources/org/drools/lang/DRL.g:451: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);
@@ -841,7 +841,7 @@
     };
 
     // $ANTLR start "statement"
-    // src/main/resources/org/drools/lang/DRL.g:452:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );
+    // src/main/resources/org/drools/lang/DRL.g:454: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);
@@ -869,16 +869,16 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:455:3: ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query )
+            // src/main/resources/org/drools/lang/DRL.g:457: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 :
-                    // src/main/resources/org/drools/lang/DRL.g:455:5: rule_attribute
+                    // src/main/resources/org/drools/lang/DRL.g:457:5: rule_attribute
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_attribute_in_statement522);
+                    pushFollow(FOLLOW_rule_attribute_in_statement530);
                     rule_attribute7=rule_attribute();
 
                     state._fsp--;
@@ -888,7 +888,7 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:456:3: {...}? => function_import_statement
+                    // src/main/resources/org/drools/lang/DRL.g:458:3: {...}? => function_import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -896,7 +896,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_statement529);
+                    pushFollow(FOLLOW_function_import_statement_in_statement537);
                     function_import_statement8=function_import_statement();
 
                     state._fsp--;
@@ -906,11 +906,11 @@
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:457:4: import_statement
+                    // src/main/resources/org/drools/lang/DRL.g:459:4: import_statement
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_import_statement_in_statement535);
+                    pushFollow(FOLLOW_import_statement_in_statement543);
                     import_statement9=import_statement();
 
                     state._fsp--;
@@ -920,11 +920,11 @@
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:458:4: global
+                    // src/main/resources/org/drools/lang/DRL.g:460:4: global
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_global_in_statement541);
+                    pushFollow(FOLLOW_global_in_statement549);
                     global10=global();
 
                     state._fsp--;
@@ -934,11 +934,11 @@
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:459:4: function
+                    // src/main/resources/org/drools/lang/DRL.g:461:4: function
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_function_in_statement547);
+                    pushFollow(FOLLOW_function_in_statement555);
                     function11=function();
 
                     state._fsp--;
@@ -948,7 +948,7 @@
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:460:4: {...}? => template
+                    // src/main/resources/org/drools/lang/DRL.g:462:4: {...}? => template
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -956,7 +956,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.TEMPLATE))");
                     }
-                    pushFollow(FOLLOW_template_in_statement555);
+                    pushFollow(FOLLOW_template_in_statement563);
                     template12=template();
 
                     state._fsp--;
@@ -966,7 +966,7 @@
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:461:4: {...}? => type_declaration
+                    // src/main/resources/org/drools/lang/DRL.g:463:4: {...}? => type_declaration
                     {
                     root_0 = (Object)adaptor.nil();
 
@@ -974,7 +974,7 @@
                         if (state.backtracking>0) {state.failed=true; return retval;}
                         throw new FailedPredicateException(input, "statement", "(validateLT(1, DroolsSoftKeywords.DECLARE))");
                     }
-                    pushFollow(FOLLOW_type_declaration_in_statement563);
+                    pushFollow(FOLLOW_type_declaration_in_statement571);
                     type_declaration13=type_declaration();
 
                     state._fsp--;
@@ -984,11 +984,11 @@
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:462:4: rule
+                    // src/main/resources/org/drools/lang/DRL.g:464:4: rule
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_rule_in_statement568);
+                    pushFollow(FOLLOW_rule_in_statement576);
                     rule14=rule();
 
                     state._fsp--;
@@ -998,11 +998,11 @@
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:463:4: query
+                    // src/main/resources/org/drools/lang/DRL.g:465:4: query
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_query_in_statement573);
+                    pushFollow(FOLLOW_query_in_statement581);
                     query15=query();
 
                     state._fsp--;
@@ -1039,7 +1039,7 @@
     };
 
     // $ANTLR start "import_statement"
-    // src/main/resources/org/drools/lang/DRL.g:466:1: import_statement : import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) ;
+    // src/main/resources/org/drools/lang/DRL.g:468: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);
@@ -1058,22 +1058,22 @@
         RewriteRuleSubtreeStream stream_import_name=new RewriteRuleSubtreeStream(adaptor,"rule import_name");
          pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  
         try {
-            // src/main/resources/org/drools/lang/DRL.g:469:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
-            // src/main/resources/org/drools/lang/DRL.g:469:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:471:2: ( import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )? -> ^( import_key import_name ) )
+            // src/main/resources/org/drools/lang/DRL.g:471:4: import_key import_name[DroolsParaphraseTypes.IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_import_statement595);
+            pushFollow(FOLLOW_import_key_in_import_statement603);
             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_statement597);
+            pushFollow(FOLLOW_import_name_in_import_statement605);
             import_name17=import_name(DroolsParaphraseTypes.IMPORT);
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_import_name.add(import_name17.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:469:57: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:471:57: ( SEMICOLON )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
@@ -1082,9 +1082,9 @@
             }
             switch (alt6) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:469:57: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:471:57: SEMICOLON
                     {
-                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement600); if (state.failed) return retval; 
+                    SEMICOLON18=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_import_statement608); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON18);
 
 
@@ -1099,7 +1099,7 @@
 
 
             // AST REWRITE
-            // elements: import_name, import_key
+            // elements: import_key, import_name
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1109,9 +1109,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 471:3: -> ^( import_key import_name )
+            // 473:3: -> ^( import_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:471:6: ^( import_key import_name )
+                // src/main/resources/org/drools/lang/DRL.g:473:6: ^( import_key import_name )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_import_key.nextNode(), root_1);
@@ -1155,7 +1155,7 @@
     };
 
     // $ANTLR start "function_import_statement"
-    // src/main/resources/org/drools/lang/DRL.g:474:1: function_import_statement : imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) ;
+    // src/main/resources/org/drools/lang/DRL.g:476: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);
@@ -1177,28 +1177,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 {
-            // src/main/resources/org/drools/lang/DRL.g:477:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
-            // src/main/resources/org/drools/lang/DRL.g:477:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:479:2: (imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )? -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name ) )
+            // src/main/resources/org/drools/lang/DRL.g:479:4: imp= import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_import_key_in_function_import_statement638);
+            pushFollow(FOLLOW_import_key_in_function_import_statement646);
             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_statement640);
+            pushFollow(FOLLOW_function_key_in_function_import_statement648);
             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_statement642);
+            pushFollow(FOLLOW_import_name_in_function_import_statement650);
             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());
-            // src/main/resources/org/drools/lang/DRL.g:477:83: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:479:83: ( SEMICOLON )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -1207,9 +1207,9 @@
             }
             switch (alt7) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:477:83: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:479:83: SEMICOLON
                     {
-                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement645); if (state.failed) return retval; 
+                    SEMICOLON21=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_function_import_statement653); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON21);
 
 
@@ -1224,7 +1224,7 @@
 
 
             // AST REWRITE
-            // elements: import_name, function_key
+            // elements: function_key, import_name
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1234,9 +1234,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 479:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+            // 481:3: -> ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
             {
-                // src/main/resources/org/drools/lang/DRL.g:479:6: ^( VT_FUNCTION_IMPORT[$imp.start] function_key import_name )
+                // src/main/resources/org/drools/lang/DRL.g:481: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);
@@ -1281,7 +1281,7 @@
     };
 
     // $ANTLR start "import_name"
-    // src/main/resources/org/drools/lang/DRL.g:482:1: import_name[DroolsParaphraseTypes importType] : id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:484: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);
@@ -1297,16 +1297,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:483:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:483:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
+            // src/main/resources/org/drools/lang/DRL.g:485:2: (id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )? -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:485:4: id+= ID (id+= DOT id+= ID )* (id+= DOT_STAR )?
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_import_name679); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_name687); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:483:11: (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:485:11: (id+= DOT id+= ID )*
             loop8:
             do {
                 int alt8=2;
@@ -1319,15 +1319,15 @@
 
                 switch (alt8) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:483:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:485:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name685); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_import_name693); 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_name689); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_import_name697); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -1342,7 +1342,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:483:33: (id+= DOT_STAR )?
+            // src/main/resources/org/drools/lang/DRL.g:485:33: (id+= DOT_STAR )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -1351,9 +1351,9 @@
             }
             switch (alt9) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:483:33: id+= DOT_STAR
+                    // src/main/resources/org/drools/lang/DRL.g:485:33: id+= DOT_STAR
                     {
-                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name696); if (state.failed) return retval; 
+                    id=(Token)match(input,DOT_STAR,FOLLOW_DOT_STAR_in_import_name704); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_DOT_STAR.add(id);
 
                     if (list_id==null) list_id=new ArrayList();
@@ -1382,9 +1382,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 486:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+            // 488:3: -> ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:486:6: ^( VT_IMPORT_ID ( ID )+ ( DOT_STAR )? )
+                // src/main/resources/org/drools/lang/DRL.g:488: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);
@@ -1397,7 +1397,7 @@
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:486:25: ( DOT_STAR )?
+                // src/main/resources/org/drools/lang/DRL.g:488:25: ( DOT_STAR )?
                 if ( stream_DOT_STAR.hasNext() ) {
                     adaptor.addChild(root_1, stream_DOT_STAR.nextNode());
 
@@ -1438,7 +1438,7 @@
     };
 
     // $ANTLR start "global"
-    // src/main/resources/org/drools/lang/DRL.g:489:1: global : global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:491: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);
@@ -1460,28 +1460,28 @@
         RewriteRuleSubtreeStream stream_global_key=new RewriteRuleSubtreeStream(adaptor,"rule global_key");
          pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:492:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:492:4: global_key data_type global_id ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:494:2: ( global_key data_type global_id ( SEMICOLON )? -> ^( global_key data_type global_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:494:4: global_key data_type global_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_global_key_in_global736);
+            pushFollow(FOLLOW_global_key_in_global744);
             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_global738);
+            pushFollow(FOLLOW_data_type_in_global746);
             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_global740);
+            pushFollow(FOLLOW_global_id_in_global748);
             global_id24=global_id();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_global_id.add(global_id24.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:492:35: ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:494:35: ( SEMICOLON )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -1490,9 +1490,9 @@
             }
             switch (alt10) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:492:35: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:494:35: SEMICOLON
                     {
-                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global742); if (state.failed) return retval; 
+                    SEMICOLON25=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_global750); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON25);
 
 
@@ -1507,7 +1507,7 @@
 
 
             // AST REWRITE
-            // elements: global_key, global_id, data_type
+            // elements: global_id, global_key, data_type
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1517,9 +1517,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 494:3: -> ^( global_key data_type global_id )
+            // 496:3: -> ^( global_key data_type global_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:494:6: ^( global_key data_type global_id )
+                // src/main/resources/org/drools/lang/DRL.g:496:6: ^( global_key data_type global_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_global_key.nextNode(), root_1);
@@ -1564,7 +1564,7 @@
     };
 
     // $ANTLR start "global_id"
-    // src/main/resources/org/drools/lang/DRL.g:497:1: global_id : id= ID -> VT_GLOBAL_ID[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:499: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);
@@ -1577,10 +1577,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:498:2: (id= ID -> VT_GLOBAL_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:498:4: id= ID
+            // src/main/resources/org/drools/lang/DRL.g:500:2: (id= ID -> VT_GLOBAL_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:500:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_global_id771); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_id779); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1600,7 +1600,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 501:3: -> VT_GLOBAL_ID[$id]
+            // 503:3: -> VT_GLOBAL_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_GLOBAL_ID, id));
 
@@ -1635,7 +1635,7 @@
     };
 
     // $ANTLR start "function"
-    // src/main/resources/org/drools/lang/DRL.g:504:1: function : function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:506: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);
@@ -1660,16 +1660,16 @@
         RewriteRuleSubtreeStream stream_function_id=new RewriteRuleSubtreeStream(adaptor,"rule function_id");
          pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  
         try {
-            // src/main/resources/org/drools/lang/DRL.g:507:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:507:4: function_key ( data_type )? function_id parameters curly_chunk
+            // src/main/resources/org/drools/lang/DRL.g:509:2: ( function_key ( data_type )? function_id parameters curly_chunk -> ^( function_key ( data_type )? function_id parameters curly_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:509:4: function_key ( data_type )? function_id parameters curly_chunk
             {
-            pushFollow(FOLLOW_function_key_in_function803);
+            pushFollow(FOLLOW_function_key_in_function811);
             function_key26=function_key();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_function_key.add(function_key26.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:507:17: ( data_type )?
+            // src/main/resources/org/drools/lang/DRL.g:509:17: ( data_type )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
@@ -1682,9 +1682,9 @@
             }
             switch (alt11) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:507:17: data_type
+                    // src/main/resources/org/drools/lang/DRL.g:509:17: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_function805);
+                    pushFollow(FOLLOW_data_type_in_function813);
                     data_type27=data_type();
 
                     state._fsp--;
@@ -1696,19 +1696,19 @@
 
             }
 
-            pushFollow(FOLLOW_function_id_in_function808);
+            pushFollow(FOLLOW_function_id_in_function816);
             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_function810);
+            pushFollow(FOLLOW_parameters_in_function818);
             parameters29=parameters();
 
             state._fsp--;
             if (state.failed) return retval;
             if ( state.backtracking==0 ) stream_parameters.add(parameters29.getTree());
-            pushFollow(FOLLOW_curly_chunk_in_function812);
+            pushFollow(FOLLOW_curly_chunk_in_function820);
             curly_chunk30=curly_chunk();
 
             state._fsp--;
@@ -1717,7 +1717,7 @@
 
 
             // AST REWRITE
-            // elements: data_type, curly_chunk, parameters, function_id, function_key
+            // elements: parameters, data_type, function_key, function_id, curly_chunk
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1727,14 +1727,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 508:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
+            // 510:3: -> ^( function_key ( data_type )? function_id parameters curly_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:508:6: ^( function_key ( data_type )? function_id parameters curly_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:510: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:508:21: ( data_type )?
+                // src/main/resources/org/drools/lang/DRL.g:510:21: ( data_type )?
                 if ( stream_data_type.hasNext() ) {
                     adaptor.addChild(root_1, stream_data_type.nextTree());
 
@@ -1781,7 +1781,7 @@
     };
 
     // $ANTLR start "function_id"
-    // src/main/resources/org/drools/lang/DRL.g:511:1: function_id : id= ID -> VT_FUNCTION_ID[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:513: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);
@@ -1794,10 +1794,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:512:2: (id= ID -> VT_FUNCTION_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:512:4: id= ID
+            // src/main/resources/org/drools/lang/DRL.g:514:2: (id= ID -> VT_FUNCTION_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:514:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_function_id842); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_id850); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -1817,7 +1817,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 515:3: -> VT_FUNCTION_ID[$id]
+            // 517:3: -> VT_FUNCTION_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_FUNCTION_ID, id));
 
@@ -1852,15 +1852,16 @@
     };
 
     // $ANTLR start "query"
-    // src/main/resources/org/drools/lang/DRL.g:518:1: query : query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) ;
+    // src/main/resources/org/drools/lang/DRL.g:520: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);
 
         Object root_0 = null;
 
-        Token END35=null;
-        Token SEMICOLON36=null;
+        Token SEMICOLON35=null;
+        DRLParser.end_key_return end = null;
+
         DRLParser.query_key_return query_key31 = null;
 
         DRLParser.query_id_return query_id32 = null;
@@ -1870,26 +1871,25 @@
         DRLParser.normal_lhs_block_return normal_lhs_block34 = null;
 
 
-        Object END35_tree=null;
-        Object SEMICOLON36_tree=null;
-        RewriteRuleTokenStream stream_END=new RewriteRuleTokenStream(adaptor,"token END");
+        Object SEMICOLON35_tree=null;
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
         RewriteRuleSubtreeStream stream_parameters=new RewriteRuleSubtreeStream(adaptor,"rule parameters");
         RewriteRuleSubtreeStream stream_query_key=new RewriteRuleSubtreeStream(adaptor,"rule query_key");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         RewriteRuleSubtreeStream stream_query_id=new RewriteRuleSubtreeStream(adaptor,"rule query_id");
+        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
          pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:521:2: ( query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block END ) )
-            // src/main/resources/org/drools/lang/DRL.g:521:4: query_key query_id ( parameters )? normal_lhs_block END ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:523:2: ( query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )? -> ^( query_key query_id ( parameters )? normal_lhs_block end_key ) )
+            // src/main/resources/org/drools/lang/DRL.g:523:4: query_key query_id ( parameters )? normal_lhs_block end= end_key ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_query_key_in_query874);
+            pushFollow(FOLLOW_query_key_in_query882);
             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_query876);
+            pushFollow(FOLLOW_query_id_in_query884);
             query_id32=query_id();
 
             state._fsp--;
@@ -1898,14 +1898,14 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:523:3: ( parameters )?
+            // src/main/resources/org/drools/lang/DRL.g:525:3: ( parameters )?
             int alt12=2;
             alt12 = dfa12.predict(input);
             switch (alt12) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:523:3: parameters
+                    // src/main/resources/org/drools/lang/DRL.g:525:3: parameters
                     {
-                    pushFollow(FOLLOW_parameters_in_query884);
+                    pushFollow(FOLLOW_parameters_in_query892);
                     parameters33=parameters();
 
                     state._fsp--;
@@ -1920,16 +1920,19 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_query893);
+            pushFollow(FOLLOW_normal_lhs_block_in_query901);
             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());
-            END35=(Token)match(input,END,FOLLOW_END_in_query898); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_END.add(END35);
+            pushFollow(FOLLOW_end_key_in_query908);
+            end=end_key();
 
-            // src/main/resources/org/drools/lang/DRL.g:526:7: ( SEMICOLON )?
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:528:15: ( SEMICOLON )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -1938,10 +1941,10 @@
             }
             switch (alt13) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:526:7: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:528:15: SEMICOLON
                     {
-                    SEMICOLON36=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query900); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON36);
+                    SEMICOLON35=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_query910); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON35);
 
 
                     }
@@ -1950,13 +1953,12 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(END35, DroolsEditorType.KEYWORD);
-              		emit(SEMICOLON36, DroolsEditorType.SYMBOL);	
+              	emit(SEMICOLON35, DroolsEditorType.SYMBOL);	
             }
 
 
             // AST REWRITE
-            // elements: parameters, query_key, normal_lhs_block, query_id, END
+            // elements: end_key, parameters, query_key, query_id, normal_lhs_block
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -1966,22 +1968,22 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 529:3: -> ^( query_key query_id ( parameters )? normal_lhs_block END )
+            // 530:3: -> ^( query_key query_id ( parameters )? normal_lhs_block end_key )
             {
-                // src/main/resources/org/drools/lang/DRL.g:529:6: ^( query_key query_id ( parameters )? normal_lhs_block END )
+                // src/main/resources/org/drools/lang/DRL.g:530: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());
-                // src/main/resources/org/drools/lang/DRL.g:529:27: ( parameters )?
+                // src/main/resources/org/drools/lang/DRL.g:530:27: ( parameters )?
                 if ( stream_parameters.hasNext() ) {
                     adaptor.addChild(root_1, stream_parameters.nextTree());
 
                 }
                 stream_parameters.reset();
                 adaptor.addChild(root_1, stream_normal_lhs_block.nextTree());
-                adaptor.addChild(root_1, stream_END.nextNode());
+                adaptor.addChild(root_1, stream_end_key.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
@@ -2020,7 +2022,7 @@
     };
 
     // $ANTLR start "query_id"
-    // src/main/resources/org/drools/lang/DRL.g:532:1: query_id : (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] );
+    // src/main/resources/org/drools/lang/DRL.g:533: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);
@@ -2034,7 +2036,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:533:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:534:2: (id= ID -> VT_QUERY_ID[$id] | id= STRING -> VT_QUERY_ID[$id] )
             int alt14=2;
             int LA14_0 = input.LA(1);
 
@@ -2053,9 +2055,9 @@
             }
             switch (alt14) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:533:5: id= ID
+                    // src/main/resources/org/drools/lang/DRL.g:534:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id935); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_query_id945); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2075,7 +2077,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 535:65: -> VT_QUERY_ID[$id]
+                    // 536:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2085,9 +2087,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:536:5: id= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:537:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id951); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_query_id961); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -2107,7 +2109,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 538:65: -> VT_QUERY_ID[$id]
+                    // 539:65: -> VT_QUERY_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_QUERY_ID, id));
 
@@ -2144,39 +2146,39 @@
     };
 
     // $ANTLR start "parameters"
-    // src/main/resources/org/drools/lang/DRL.g:541:1: parameters : LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:542: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);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN37=null;
-        Token COMMA39=null;
-        Token RIGHT_PAREN41=null;
-        DRLParser.param_definition_return param_definition38 = null;
+        Token LEFT_PAREN36=null;
+        Token COMMA38=null;
+        Token RIGHT_PAREN40=null;
+        DRLParser.param_definition_return param_definition37 = null;
 
-        DRLParser.param_definition_return param_definition40 = null;
+        DRLParser.param_definition_return param_definition39 = null;
 
 
-        Object LEFT_PAREN37_tree=null;
-        Object COMMA39_tree=null;
-        Object RIGHT_PAREN41_tree=null;
+        Object LEFT_PAREN36_tree=null;
+        Object COMMA38_tree=null;
+        Object RIGHT_PAREN40_tree=null;
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_param_definition=new RewriteRuleSubtreeStream(adaptor,"rule param_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:542:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:542:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:543:2: ( LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:543:4: LEFT_PAREN ( param_definition ( COMMA param_definition )* )? RIGHT_PAREN
             {
-            LEFT_PAREN37=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters970); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN37);
+            LEFT_PAREN36=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_parameters980); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN36);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN37, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN36, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:543:4: ( param_definition ( COMMA param_definition )* )?
+            // src/main/resources/org/drools/lang/DRL.g:544:4: ( param_definition ( COMMA param_definition )* )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
@@ -2185,15 +2187,15 @@
             }
             switch (alt16) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:543:6: param_definition ( COMMA param_definition )*
+                    // src/main/resources/org/drools/lang/DRL.g:544:6: param_definition ( COMMA param_definition )*
                     {
-                    pushFollow(FOLLOW_param_definition_in_parameters979);
-                    param_definition38=param_definition();
+                    pushFollow(FOLLOW_param_definition_in_parameters989);
+                    param_definition37=param_definition();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_param_definition.add(param_definition38.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:543:23: ( COMMA param_definition )*
+                    if ( state.backtracking==0 ) stream_param_definition.add(param_definition37.getTree());
+                    // src/main/resources/org/drools/lang/DRL.g:544:23: ( COMMA param_definition )*
                     loop15:
                     do {
                         int alt15=2;
@@ -2206,20 +2208,20 @@
 
                         switch (alt15) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:543:24: COMMA param_definition
+                    	    // src/main/resources/org/drools/lang/DRL.g:544:24: COMMA param_definition
                     	    {
-                    	    COMMA39=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters982); if (state.failed) return retval; 
-                    	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA39);
+                    	    COMMA38=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameters992); if (state.failed) return retval; 
+                    	    if ( state.backtracking==0 ) stream_COMMA.add(COMMA38);
 
                     	    if ( state.backtracking==0 ) {
-                    	      	emit(COMMA39, DroolsEditorType.SYMBOL);	
+                    	      	emit(COMMA38, DroolsEditorType.SYMBOL);	
                     	    }
-                    	    pushFollow(FOLLOW_param_definition_in_parameters986);
-                    	    param_definition40=param_definition();
+                    	    pushFollow(FOLLOW_param_definition_in_parameters996);
+                    	    param_definition39=param_definition();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_param_definition.add(param_definition40.getTree());
+                    	    if ( state.backtracking==0 ) stream_param_definition.add(param_definition39.getTree());
 
                     	    }
                     	    break;
@@ -2235,16 +2237,16 @@
 
             }
 
-            RIGHT_PAREN41=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters995); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN41);
+            RIGHT_PAREN40=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_parameters1005); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN40);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN41, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN40, DroolsEditorType.SYMBOL);	
             }
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, param_definition
+            // elements: param_definition, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2254,14 +2256,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 545:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+            // 546:3: -> ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:545:6: ^( VT_PARAM_LIST ( param_definition )* RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:546: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:545:22: ( param_definition )*
+                // src/main/resources/org/drools/lang/DRL.g:546:22: ( param_definition )*
                 while ( stream_param_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_param_definition.nextTree());
 
@@ -2303,50 +2305,50 @@
     };
 
     // $ANTLR start "param_definition"
-    // src/main/resources/org/drools/lang/DRL.g:548:1: param_definition : ( data_type )? argument ;
+    // src/main/resources/org/drools/lang/DRL.g:549: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);
 
         Object root_0 = null;
 
-        DRLParser.data_type_return data_type42 = null;
+        DRLParser.data_type_return data_type41 = null;
 
-        DRLParser.argument_return argument43 = null;
+        DRLParser.argument_return argument42 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:549:2: ( ( data_type )? argument )
-            // src/main/resources/org/drools/lang/DRL.g:549:4: ( data_type )? argument
+            // src/main/resources/org/drools/lang/DRL.g:550:2: ( ( data_type )? argument )
+            // src/main/resources/org/drools/lang/DRL.g:550:4: ( data_type )? argument
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:549:4: ( data_type )?
+            // src/main/resources/org/drools/lang/DRL.g:550:4: ( data_type )?
             int alt17=2;
             alt17 = dfa17.predict(input);
             switch (alt17) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:549:4: data_type
+                    // src/main/resources/org/drools/lang/DRL.g:550:4: data_type
                     {
-                    pushFollow(FOLLOW_data_type_in_param_definition1021);
-                    data_type42=data_type();
+                    pushFollow(FOLLOW_data_type_in_param_definition1031);
+                    data_type41=data_type();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, data_type42.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, data_type41.getTree());
 
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_argument_in_param_definition1024);
-            argument43=argument();
+            pushFollow(FOLLOW_argument_in_param_definition1034);
+            argument42=argument();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, argument43.getTree());
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, argument42.getTree());
 
             }
 
@@ -2376,34 +2378,34 @@
     };
 
     // $ANTLR start "argument"
-    // src/main/resources/org/drools/lang/DRL.g:552:1: argument : ID ( dimension_definition )* ;
+    // src/main/resources/org/drools/lang/DRL.g:553: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);
 
         Object root_0 = null;
 
-        Token ID44=null;
-        DRLParser.dimension_definition_return dimension_definition45 = null;
+        Token ID43=null;
+        DRLParser.dimension_definition_return dimension_definition44 = null;
 
 
-        Object ID44_tree=null;
+        Object ID43_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:553:2: ( ID ( dimension_definition )* )
-            // src/main/resources/org/drools/lang/DRL.g:553:4: ID ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:554:2: ( ID ( dimension_definition )* )
+            // src/main/resources/org/drools/lang/DRL.g:554:4: ID ( dimension_definition )*
             {
             root_0 = (Object)adaptor.nil();
 
-            ID44=(Token)match(input,ID,FOLLOW_ID_in_argument1035); if (state.failed) return retval;
+            ID43=(Token)match(input,ID,FOLLOW_ID_in_argument1045); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            ID44_tree = (Object)adaptor.create(ID44);
-            adaptor.addChild(root_0, ID44_tree);
+            ID43_tree = (Object)adaptor.create(ID43);
+            adaptor.addChild(root_0, ID43_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(ID44, DroolsEditorType.IDENTIFIER);	
+              	emit(ID43, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:554:3: ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:555:3: ( dimension_definition )*
             loop18:
             do {
                 int alt18=2;
@@ -2416,14 +2418,14 @@
 
                 switch (alt18) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:554:3: dimension_definition
+            	    // src/main/resources/org/drools/lang/DRL.g:555:3: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_argument1041);
-            	    dimension_definition45=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_argument1051);
+            	    dimension_definition44=dimension_definition();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, dimension_definition45.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, dimension_definition44.getTree());
 
             	    }
             	    break;
@@ -2462,47 +2464,47 @@
     };
 
     // $ANTLR start "type_declaration"
-    // src/main/resources/org/drools/lang/DRL.g:557:1: type_declaration : declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) ;
+    // src/main/resources/org/drools/lang/DRL.g:558: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);
 
         Object root_0 = null;
 
-        Token END50=null;
-        DRLParser.declare_key_return declare_key46 = null;
+        DRLParser.declare_key_return declare_key45 = null;
 
-        DRLParser.type_declare_id_return type_declare_id47 = null;
+        DRLParser.type_declare_id_return type_declare_id46 = null;
 
-        DRLParser.decl_metadata_return decl_metadata48 = null;
+        DRLParser.decl_metadata_return decl_metadata47 = null;
 
-        DRLParser.decl_field_return decl_field49 = null;
+        DRLParser.decl_field_return decl_field48 = null;
 
+        DRLParser.end_key_return end_key49 = null;
 
-        Object END50_tree=null;
-        RewriteRuleTokenStream stream_END=new RewriteRuleTokenStream(adaptor,"token END");
+
         RewriteRuleSubtreeStream stream_decl_field=new RewriteRuleSubtreeStream(adaptor,"rule decl_field");
         RewriteRuleSubtreeStream stream_declare_key=new RewriteRuleSubtreeStream(adaptor,"rule declare_key");
         RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
+        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
         RewriteRuleSubtreeStream stream_type_declare_id=new RewriteRuleSubtreeStream(adaptor,"rule type_declare_id");
          pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:560:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END ) )
-            // src/main/resources/org/drools/lang/DRL.g:560:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* END
+            // src/main/resources/org/drools/lang/DRL.g:561:2: ( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key ) )
+            // src/main/resources/org/drools/lang/DRL.g:561:4: declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key
             {
-            pushFollow(FOLLOW_declare_key_in_type_declaration1064);
-            declare_key46=declare_key();
+            pushFollow(FOLLOW_declare_key_in_type_declaration1074);
+            declare_key45=declare_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_declare_key.add(declare_key46.getTree());
-            pushFollow(FOLLOW_type_declare_id_in_type_declaration1067);
-            type_declare_id47=type_declare_id();
+            if ( state.backtracking==0 ) stream_declare_key.add(declare_key45.getTree());
+            pushFollow(FOLLOW_type_declare_id_in_type_declaration1077);
+            type_declare_id46=type_declare_id();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_type_declare_id.add(type_declare_id47.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:561:3: ( decl_metadata )*
+            if ( state.backtracking==0 ) stream_type_declare_id.add(type_declare_id46.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:562:3: ( decl_metadata )*
             loop19:
             do {
                 int alt19=2;
@@ -2515,14 +2517,14 @@
 
                 switch (alt19) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:561:3: decl_metadata
+            	    // src/main/resources/org/drools/lang/DRL.g:562:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1071);
-            	    decl_metadata48=decl_metadata();
+            	    pushFollow(FOLLOW_decl_metadata_in_type_declaration1081);
+            	    decl_metadata47=decl_metadata();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata48.getTree());
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata47.getTree());
 
             	    }
             	    break;
@@ -2532,27 +2534,33 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:562:3: ( decl_field )*
+            // src/main/resources/org/drools/lang/DRL.g:563:3: ( decl_field )*
             loop20:
             do {
                 int alt20=2;
                 int LA20_0 = input.LA(1);
 
                 if ( (LA20_0==ID) ) {
-                    alt20=1;
+                    int LA20_1 = input.LA(2);
+
+                    if ( ((LA20_1>=COLON && LA20_1<=EQUALS)) ) {
+                        alt20=1;
+                    }
+
+
                 }
 
 
                 switch (alt20) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:562:3: decl_field
+            	    // src/main/resources/org/drools/lang/DRL.g:563:3: decl_field
             	    {
-            	    pushFollow(FOLLOW_decl_field_in_type_declaration1076);
-            	    decl_field49=decl_field();
+            	    pushFollow(FOLLOW_decl_field_in_type_declaration1086);
+            	    decl_field48=decl_field();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_decl_field.add(decl_field49.getTree());
+            	    if ( state.backtracking==0 ) stream_decl_field.add(decl_field48.getTree());
 
             	    }
             	    break;
@@ -2562,16 +2570,16 @@
                 }
             } while (true);
 
-            END50=(Token)match(input,END,FOLLOW_END_in_type_declaration1081); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_END.add(END50);
+            pushFollow(FOLLOW_end_key_in_type_declaration1091);
+            end_key49=end_key();
 
-            if ( state.backtracking==0 ) {
-              	emit(END50, DroolsEditorType.KEYWORD);	
-            }
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_end_key.add(end_key49.getTree());
 
 
             // AST REWRITE
-            // elements: decl_metadata, type_declare_id, decl_field, declare_key, END
+            // elements: decl_metadata, decl_field, declare_key, end_key, type_declare_id
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2581,9 +2589,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 565:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
+            // 565:3: -> ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* end_key )
             {
-                // src/main/resources/org/drools/lang/DRL.g:565:6: ^( declare_key type_declare_id ( decl_metadata )* ( decl_field )* END )
+                // src/main/resources/org/drools/lang/DRL.g:565: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);
@@ -2601,7 +2609,7 @@
 
                 }
                 stream_decl_field.reset();
-                adaptor.addChild(root_1, stream_END.nextNode());
+                adaptor.addChild(root_1, stream_end_key.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
@@ -2656,7 +2664,7 @@
             // src/main/resources/org/drools/lang/DRL.g:569:2: (id= ID -> VT_TYPE_DECLARE_ID[$id] )
             // src/main/resources/org/drools/lang/DRL.g:569:5: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1116); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_type_declare_id1123); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -2718,13 +2726,13 @@
 
         Object root_0 = null;
 
-        Token AT51=null;
-        Token ID52=null;
-        DRLParser.paren_chunk_return paren_chunk53 = null;
+        Token AT50=null;
+        Token ID51=null;
+        DRLParser.paren_chunk_return paren_chunk52 = null;
 
 
-        Object AT51_tree=null;
-        Object ID52_tree=null;
+        Object AT50_tree=null;
+        Object ID51_tree=null;
         RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
@@ -2732,28 +2740,28 @@
             // src/main/resources/org/drools/lang/DRL.g:575:2: ( AT ID paren_chunk -> ^( AT ID paren_chunk ) )
             // src/main/resources/org/drools/lang/DRL.g:575:4: AT ID paren_chunk
             {
-            AT51=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1135); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_AT.add(AT51);
+            AT50=(Token)match(input,AT,FOLLOW_AT_in_decl_metadata1142); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_AT.add(AT50);
 
             if ( state.backtracking==0 ) {
-              	emit(AT51, DroolsEditorType.SYMBOL);	
+              	emit(AT50, DroolsEditorType.SYMBOL);	
             }
-            ID52=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1143); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID52);
+            ID51=(Token)match(input,ID,FOLLOW_ID_in_decl_metadata1150); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID51);
 
             if ( state.backtracking==0 ) {
-              	emit(ID52, DroolsEditorType.IDENTIFIER);	
+              	emit(ID51, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_decl_metadata1150);
-            paren_chunk53=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_decl_metadata1157);
+            paren_chunk52=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk53.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk52.getTree());
 
 
             // AST REWRITE
-            // elements: ID, AT, paren_chunk
+            // elements: paren_chunk, ID, AT
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2814,17 +2822,17 @@
 
         Object root_0 = null;
 
-        Token ID54=null;
-        Token COLON56=null;
-        DRLParser.decl_field_initialization_return decl_field_initialization55 = null;
+        Token ID53=null;
+        Token COLON55=null;
+        DRLParser.decl_field_initialization_return decl_field_initialization54 = null;
 
-        DRLParser.data_type_return data_type57 = null;
+        DRLParser.data_type_return data_type56 = null;
 
-        DRLParser.decl_metadata_return decl_metadata58 = null;
+        DRLParser.decl_metadata_return decl_metadata57 = null;
 
 
-        Object ID54_tree=null;
-        Object COLON56_tree=null;
+        Object ID53_tree=null;
+        Object COLON55_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_decl_metadata=new RewriteRuleSubtreeStream(adaptor,"rule decl_metadata");
@@ -2834,11 +2842,11 @@
             // src/main/resources/org/drools/lang/DRL.g:584:2: ( ID ( decl_field_initialization )? COLON data_type ( decl_metadata )* -> ^( ID ( decl_field_initialization )? data_type ( decl_metadata )* ) )
             // src/main/resources/org/drools/lang/DRL.g:584:4: ID ( decl_field_initialization )? COLON data_type ( decl_metadata )*
             {
-            ID54=(Token)match(input,ID,FOLLOW_ID_in_decl_field1173); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID54);
+            ID53=(Token)match(input,ID,FOLLOW_ID_in_decl_field1180); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID53);
 
             if ( state.backtracking==0 ) {
-              	emit(ID54, DroolsEditorType.IDENTIFIER);	
+              	emit(ID53, DroolsEditorType.IDENTIFIER);	
             }
             // src/main/resources/org/drools/lang/DRL.g:585:3: ( decl_field_initialization )?
             int alt21=2;
@@ -2851,30 +2859,30 @@
                 case 1 :
                     // src/main/resources/org/drools/lang/DRL.g:585:3: decl_field_initialization
                     {
-                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1179);
-                    decl_field_initialization55=decl_field_initialization();
+                    pushFollow(FOLLOW_decl_field_initialization_in_decl_field1186);
+                    decl_field_initialization54=decl_field_initialization();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_decl_field_initialization.add(decl_field_initialization55.getTree());
+                    if ( state.backtracking==0 ) stream_decl_field_initialization.add(decl_field_initialization54.getTree());
 
                     }
                     break;
 
             }
 
-            COLON56=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1185); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLON.add(COLON56);
+            COLON55=(Token)match(input,COLON,FOLLOW_COLON_in_decl_field1192); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON55);
 
             if ( state.backtracking==0 ) {
-              	emit(COLON56, DroolsEditorType.SYMBOL);	
+              	emit(COLON55, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_data_type_in_decl_field1191);
-            data_type57=data_type();
+            pushFollow(FOLLOW_data_type_in_decl_field1198);
+            data_type56=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_data_type.add(data_type57.getTree());
+            if ( state.backtracking==0 ) stream_data_type.add(data_type56.getTree());
             // src/main/resources/org/drools/lang/DRL.g:588:3: ( decl_metadata )*
             loop22:
             do {
@@ -2890,12 +2898,12 @@
             	case 1 :
             	    // src/main/resources/org/drools/lang/DRL.g:588:3: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1195);
-            	    decl_metadata58=decl_metadata();
+            	    pushFollow(FOLLOW_decl_metadata_in_decl_field1202);
+            	    decl_metadata57=decl_metadata();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata58.getTree());
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata57.getTree());
 
             	    }
             	    break;
@@ -2908,7 +2916,7 @@
 
 
             // AST REWRITE
-            // elements: decl_metadata, ID, decl_field_initialization, data_type
+            // elements: decl_metadata, ID, data_type, decl_field_initialization
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -2980,33 +2988,33 @@
 
         Object root_0 = null;
 
-        Token EQUALS59=null;
-        DRLParser.paren_chunk_return paren_chunk60 = null;
+        Token EQUALS58=null;
+        DRLParser.paren_chunk_return paren_chunk59 = null;
 
 
-        Object EQUALS59_tree=null;
+        Object EQUALS58_tree=null;
         RewriteRuleTokenStream stream_EQUALS=new RewriteRuleTokenStream(adaptor,"token EQUALS");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
             // src/main/resources/org/drools/lang/DRL.g:593:2: ( EQUALS paren_chunk -> ^( EQUALS paren_chunk ) )
             // src/main/resources/org/drools/lang/DRL.g:593:4: EQUALS paren_chunk
             {
-            EQUALS59=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1223); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS59);
+            EQUALS58=(Token)match(input,EQUALS,FOLLOW_EQUALS_in_decl_field_initialization1230); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_EQUALS.add(EQUALS58);
 
             if ( state.backtracking==0 ) {
-              	emit(EQUALS59, DroolsEditorType.SYMBOL);	
+              	emit(EQUALS58, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1229);
-            paren_chunk60=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_decl_field_initialization1236);
+            paren_chunk59=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk60.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk59.getTree());
 
 
             // AST REWRITE
-            // elements: EQUALS, paren_chunk
+            // elements: paren_chunk, EQUALS
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3059,7 +3067,7 @@
     };
 
     // $ANTLR start "template"
-    // src/main/resources/org/drools/lang/DRL.g:598:1: template : template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) ;
+    // src/main/resources/org/drools/lang/DRL.g:598: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);
@@ -3068,42 +3076,42 @@
 
         Token semi1=null;
         Token semi2=null;
-        Token END64=null;
-        DRLParser.template_key_return template_key61 = null;
+        DRLParser.end_key_return end = null;
 
-        DRLParser.template_id_return template_id62 = null;
+        DRLParser.template_key_return template_key60 = null;
 
-        DRLParser.template_slot_return template_slot63 = null;
+        DRLParser.template_id_return template_id61 = null;
 
+        DRLParser.template_slot_return template_slot62 = null;
 
+
         Object semi1_tree=null;
         Object semi2_tree=null;
-        Object END64_tree=null;
-        RewriteRuleTokenStream stream_END=new RewriteRuleTokenStream(adaptor,"token END");
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
         RewriteRuleSubtreeStream stream_template_id=new RewriteRuleSubtreeStream(adaptor,"rule template_id");
         RewriteRuleSubtreeStream stream_template_slot=new RewriteRuleSubtreeStream(adaptor,"rule template_slot");
         RewriteRuleSubtreeStream stream_template_key=new RewriteRuleSubtreeStream(adaptor,"rule template_key");
+        RewriteRuleSubtreeStream stream_end_key=new RewriteRuleSubtreeStream(adaptor,"rule end_key");
          pushParaphrases(DroolsParaphraseTypes.TEMPLATE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:601:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ END ) )
-            // src/main/resources/org/drools/lang/DRL.g:602:2: template_key template_id (semi1= SEMICOLON )? ( template_slot )+ END (semi2= SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:601:2: ( template_key template_id (semi1= SEMICOLON )? ( template_slot )+ end= end_key (semi2= SEMICOLON )? -> ^( template_key template_id ( template_slot )+ end_key ) )
+            // src/main/resources/org/drools/lang/DRL.g:602: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_template1266);
-            template_key61=template_key();
+            pushFollow(FOLLOW_template_key_in_template1273);
+            template_key60=template_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_template_key.add(template_key61.getTree());
-            pushFollow(FOLLOW_template_id_in_template1268);
-            template_id62=template_id();
+            if ( state.backtracking==0 ) stream_template_key.add(template_key60.getTree());
+            pushFollow(FOLLOW_template_id_in_template1275);
+            template_id61=template_id();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_template_id.add(template_id62.getTree());
+            if ( state.backtracking==0 ) stream_template_id.add(template_id61.getTree());
             // src/main/resources/org/drools/lang/DRL.g:604:8: (semi1= SEMICOLON )?
             int alt23=2;
             int LA23_0 = input.LA(1);
@@ -3115,7 +3123,7 @@
                 case 1 :
                     // src/main/resources/org/drools/lang/DRL.g:604:8: semi1= SEMICOLON
                     {
-                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1275); if (state.failed) return retval; 
+                    semi1=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1282); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi1);
 
 
@@ -3135,7 +3143,31 @@
                 int LA24_0 = input.LA(1);
 
                 if ( (LA24_0==ID) ) {
-                    alt24=1;
+                    int LA24_1 = input.LA(2);
+
+                    if ( (LA24_1==DOT||LA24_1==LEFT_SQUARE) ) {
+                        alt24=1;
+                    }
+                    else if ( (LA24_1==ID) ) {
+                        int LA24_3 = input.LA(3);
+
+                        if ( (LA24_3==ID) ) {
+                            int LA24_5 = input.LA(4);
+
+                            if ( (!((((validateIdentifierKey(DroolsSoftKeywords.END)))))) ) {
+                                alt24=1;
+                            }
+
+
+                        }
+                        else if ( (LA24_3==SEMICOLON) ) {
+                            alt24=1;
+                        }
+
+
+                    }
+
+
                 }
 
 
@@ -3143,12 +3175,12 @@
             	case 1 :
             	    // src/main/resources/org/drools/lang/DRL.g:606:3: template_slot
             	    {
-            	    pushFollow(FOLLOW_template_slot_in_template1283);
-            	    template_slot63=template_slot();
+            	    pushFollow(FOLLOW_template_slot_in_template1290);
+            	    template_slot62=template_slot();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_template_slot.add(template_slot63.getTree());
+            	    if ( state.backtracking==0 ) stream_template_slot.add(template_slot62.getTree());
 
             	    }
             	    break;
@@ -3163,10 +3195,13 @@
                 cnt24++;
             } while (true);
 
-            END64=(Token)match(input,END,FOLLOW_END_in_template1288); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_END.add(END64);
+            pushFollow(FOLLOW_end_key_in_template1297);
+            end=end_key();
 
-            // src/main/resources/org/drools/lang/DRL.g:607:12: (semi2= SEMICOLON )?
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_end_key.add(end.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:607:20: (semi2= SEMICOLON )?
             int alt25=2;
             int LA25_0 = input.LA(1);
 
@@ -3175,9 +3210,9 @@
             }
             switch (alt25) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:607:12: semi2= SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:607:20: semi2= SEMICOLON
                     {
-                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1292); if (state.failed) return retval; 
+                    semi2=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template1301); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_SEMICOLON.add(semi2);
 
 
@@ -3187,13 +3222,12 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(END64, DroolsEditorType.KEYWORD);
-              		emit(semi2, DroolsEditorType.SYMBOL);	
+              	emit(semi2, DroolsEditorType.SYMBOL);	
             }
 
 
             // AST REWRITE
-            // elements: END, template_slot, template_key, template_id
+            // elements: template_key, end_key, template_id, template_slot
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3203,9 +3237,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 610:3: -> ^( template_key template_id ( template_slot )+ END )
+            // 609:3: -> ^( template_key template_id ( template_slot )+ end_key )
             {
-                // src/main/resources/org/drools/lang/DRL.g:610:6: ^( template_key template_id ( template_slot )+ END )
+                // src/main/resources/org/drools/lang/DRL.g:609: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);
@@ -3219,7 +3253,7 @@
 
                 }
                 stream_template_slot.reset();
-                adaptor.addChild(root_1, stream_END.nextNode());
+                adaptor.addChild(root_1, stream_end_key.nextTree());
 
                 adaptor.addChild(root_0, root_1);
                 }
@@ -3258,7 +3292,7 @@
     };
 
     // $ANTLR start "template_id"
-    // src/main/resources/org/drools/lang/DRL.g:613:1: template_id : (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] );
+    // src/main/resources/org/drools/lang/DRL.g:612: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);
@@ -3272,7 +3306,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:614:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:613:2: (id= ID -> VT_TEMPLATE_ID[$id] | id= STRING -> VT_TEMPLATE_ID[$id] )
             int alt26=2;
             int LA26_0 = input.LA(1);
 
@@ -3291,9 +3325,9 @@
             }
             switch (alt26) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:614:5: id= ID
+                    // src/main/resources/org/drools/lang/DRL.g:613:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1325); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_template_id1334); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3313,7 +3347,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 616:68: -> VT_TEMPLATE_ID[$id]
+                    // 615:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3323,9 +3357,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:617:5: id= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:616:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1341); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_template_id1350); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -3345,7 +3379,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 619:68: -> VT_TEMPLATE_ID[$id]
+                    // 618:68: -> VT_TEMPLATE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_TEMPLATE_ID, id));
 
@@ -3382,40 +3416,40 @@
     };
 
     // $ANTLR start "template_slot"
-    // src/main/resources/org/drools/lang/DRL.g:622:1: template_slot : data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:621: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);
 
         Object root_0 = null;
 
-        Token SEMICOLON67=null;
-        DRLParser.data_type_return data_type65 = null;
+        Token SEMICOLON65=null;
+        DRLParser.data_type_return data_type63 = null;
 
-        DRLParser.slot_id_return slot_id66 = null;
+        DRLParser.slot_id_return slot_id64 = null;
 
 
-        Object SEMICOLON67_tree=null;
+        Object SEMICOLON65_tree=null;
         RewriteRuleTokenStream stream_SEMICOLON=new RewriteRuleTokenStream(adaptor,"token SEMICOLON");
         RewriteRuleSubtreeStream stream_slot_id=new RewriteRuleSubtreeStream(adaptor,"rule slot_id");
         RewriteRuleSubtreeStream stream_data_type=new RewriteRuleSubtreeStream(adaptor,"rule data_type");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:623:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:623:5: data_type slot_id ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:622:2: ( data_type slot_id ( SEMICOLON )? -> ^( VT_SLOT data_type slot_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:622:5: data_type slot_id ( SEMICOLON )?
             {
-            pushFollow(FOLLOW_data_type_in_template_slot1361);
-            data_type65=data_type();
+            pushFollow(FOLLOW_data_type_in_template_slot1370);
+            data_type63=data_type();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_data_type.add(data_type65.getTree());
-            pushFollow(FOLLOW_slot_id_in_template_slot1363);
-            slot_id66=slot_id();
+            if ( state.backtracking==0 ) stream_data_type.add(data_type63.getTree());
+            pushFollow(FOLLOW_slot_id_in_template_slot1372);
+            slot_id64=slot_id();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_slot_id.add(slot_id66.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:623:23: ( SEMICOLON )?
+            if ( state.backtracking==0 ) stream_slot_id.add(slot_id64.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:622:23: ( SEMICOLON )?
             int alt27=2;
             int LA27_0 = input.LA(1);
 
@@ -3424,10 +3458,10 @@
             }
             switch (alt27) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:623:23: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:622:23: SEMICOLON
                     {
-                    SEMICOLON67=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1365); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON67);
+                    SEMICOLON65=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_template_slot1374); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_SEMICOLON.add(SEMICOLON65);
 
 
                     }
@@ -3436,7 +3470,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(SEMICOLON67, DroolsEditorType.SYMBOL);	
+              	emit(SEMICOLON65, DroolsEditorType.SYMBOL);	
             }
 
 
@@ -3451,9 +3485,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 625:3: -> ^( VT_SLOT data_type slot_id )
+            // 624:3: -> ^( VT_SLOT data_type slot_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:625:6: ^( VT_SLOT data_type slot_id )
+                // src/main/resources/org/drools/lang/DRL.g:624: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);
@@ -3495,7 +3529,7 @@
     };
 
     // $ANTLR start "slot_id"
-    // src/main/resources/org/drools/lang/DRL.g:628:1: slot_id : id= ID -> VT_SLOT_ID[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:627: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);
@@ -3508,10 +3542,10 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:629:2: (id= ID -> VT_SLOT_ID[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:629:4: id= ID
+            // src/main/resources/org/drools/lang/DRL.g:628:2: (id= ID -> VT_SLOT_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:628:4: id= ID
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1394); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_slot_id1403); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -3530,7 +3564,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 631:3: -> VT_SLOT_ID[$id]
+            // 630:3: -> VT_SLOT_ID[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SLOT_ID, id));
 
@@ -3565,28 +3599,28 @@
     };
 
     // $ANTLR start "rule"
-    // src/main/resources/org/drools/lang/DRL.g:634: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 ) ;
+    // src/main/resources/org/drools/lang/DRL.g:633: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);
 
         Object root_0 = null;
 
-        DRLParser.rule_key_return rule_key68 = null;
+        DRLParser.rule_key_return rule_key66 = null;
 
-        DRLParser.rule_id_return rule_id69 = null;
+        DRLParser.rule_id_return rule_id67 = null;
 
-        DRLParser.extend_key_return extend_key70 = null;
+        DRLParser.extend_key_return extend_key68 = null;
 
-        DRLParser.rule_id_return rule_id71 = null;
+        DRLParser.rule_id_return rule_id69 = null;
 
-        DRLParser.decl_metadata_return decl_metadata72 = null;
+        DRLParser.decl_metadata_return decl_metadata70 = null;
 
-        DRLParser.rule_attributes_return rule_attributes73 = null;
+        DRLParser.rule_attributes_return rule_attributes71 = null;
 
-        DRLParser.when_part_return when_part74 = null;
+        DRLParser.when_part_return when_part72 = null;
 
-        DRLParser.rhs_chunk_return rhs_chunk75 = null;
+        DRLParser.rhs_chunk_return rhs_chunk73 = null;
 
 
         RewriteRuleSubtreeStream stream_rule_key=new RewriteRuleSubtreeStream(adaptor,"rule rule_key");
@@ -3598,53 +3632,53 @@
         RewriteRuleSubtreeStream stream_extend_key=new RewriteRuleSubtreeStream(adaptor,"rule extend_key");
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:637: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 ) )
-            // src/main/resources/org/drools/lang/DRL.g:638:2: rule_key rule_id ( extend_key rule_id )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk
+            // src/main/resources/org/drools/lang/DRL.g:636: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 ) )
+            // src/main/resources/org/drools/lang/DRL.g:637: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_rule1431);
-            rule_key68=rule_key();
+            pushFollow(FOLLOW_rule_key_in_rule1440);
+            rule_key66=rule_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_rule_key.add(rule_key68.getTree());
-            pushFollow(FOLLOW_rule_id_in_rule1433);
-            rule_id69=rule_id();
+            if ( state.backtracking==0 ) stream_rule_key.add(rule_key66.getTree());
+            pushFollow(FOLLOW_rule_id_in_rule1442);
+            rule_id67=rule_id();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_rule_id.add(rule_id69.getTree());
+            if ( state.backtracking==0 ) stream_rule_id.add(rule_id67.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:641:3: ( extend_key rule_id )?
+            // src/main/resources/org/drools/lang/DRL.g:640:3: ( extend_key rule_id )?
             int alt28=2;
             alt28 = dfa28.predict(input);
             switch (alt28) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:641:4: extend_key rule_id
+                    // src/main/resources/org/drools/lang/DRL.g:640:4: extend_key rule_id
                     {
-                    pushFollow(FOLLOW_extend_key_in_rule1442);
-                    extend_key70=extend_key();
+                    pushFollow(FOLLOW_extend_key_in_rule1451);
+                    extend_key68=extend_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_extend_key.add(extend_key70.getTree());
-                    pushFollow(FOLLOW_rule_id_in_rule1444);
-                    rule_id71=rule_id();
+                    if ( state.backtracking==0 ) stream_extend_key.add(extend_key68.getTree());
+                    pushFollow(FOLLOW_rule_id_in_rule1453);
+                    rule_id69=rule_id();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_rule_id.add(rule_id71.getTree());
+                    if ( state.backtracking==0 ) stream_rule_id.add(rule_id69.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:641:25: ( decl_metadata )*
+            // src/main/resources/org/drools/lang/DRL.g:640:25: ( decl_metadata )*
             loop29:
             do {
                 int alt29=2;
@@ -3657,14 +3691,14 @@
 
                 switch (alt29) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:641:25: decl_metadata
+            	    // src/main/resources/org/drools/lang/DRL.g:640:25: decl_metadata
             	    {
-            	    pushFollow(FOLLOW_decl_metadata_in_rule1448);
-            	    decl_metadata72=decl_metadata();
+            	    pushFollow(FOLLOW_decl_metadata_in_rule1457);
+            	    decl_metadata70=decl_metadata();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata72.getTree());
+            	    if ( state.backtracking==0 ) stream_decl_metadata.add(decl_metadata70.getTree());
 
             	    }
             	    break;
@@ -3674,7 +3708,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:641:40: ( rule_attributes )?
+            // src/main/resources/org/drools/lang/DRL.g:640:40: ( rule_attributes )?
             int alt30=2;
             int LA30_0 = input.LA(1);
 
@@ -3683,21 +3717,21 @@
             }
             switch (alt30) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:641:40: rule_attributes
+                    // src/main/resources/org/drools/lang/DRL.g:640:40: rule_attributes
                     {
-                    pushFollow(FOLLOW_rule_attributes_in_rule1451);
-                    rule_attributes73=rule_attributes();
+                    pushFollow(FOLLOW_rule_attributes_in_rule1460);
+                    rule_attributes71=rule_attributes();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_rule_attributes.add(rule_attributes73.getTree());
+                    if ( state.backtracking==0 ) stream_rule_attributes.add(rule_attributes71.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:641:57: ( when_part )?
+            // src/main/resources/org/drools/lang/DRL.g:640:57: ( when_part )?
             int alt31=2;
             int LA31_0 = input.LA(1);
 
@@ -3706,30 +3740,30 @@
             }
             switch (alt31) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:641:57: when_part
+                    // src/main/resources/org/drools/lang/DRL.g:640:57: when_part
                     {
-                    pushFollow(FOLLOW_when_part_in_rule1454);
-                    when_part74=when_part();
+                    pushFollow(FOLLOW_when_part_in_rule1463);
+                    when_part72=when_part();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_when_part.add(when_part74.getTree());
+                    if ( state.backtracking==0 ) stream_when_part.add(when_part72.getTree());
 
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_rhs_chunk_in_rule1457);
-            rhs_chunk75=rhs_chunk();
+            pushFollow(FOLLOW_rhs_chunk_in_rule1466);
+            rhs_chunk73=rhs_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_rhs_chunk.add(rhs_chunk75.getTree());
+            if ( state.backtracking==0 ) stream_rhs_chunk.add(rhs_chunk73.getTree());
 
 
             // AST REWRITE
-            // elements: rhs_chunk, decl_metadata, rule_id, when_part, rule_id, extend_key, rule_key, rule_attributes
+            // elements: rule_attributes, decl_metadata, rule_id, rule_id, rhs_chunk, when_part, rule_key, extend_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -3739,17 +3773,17 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 642:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+            // 641:3: -> ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:642:6: ^( rule_key rule_id ( ^( extend_key rule_id ) )? ( decl_metadata )* ( rule_attributes )? ( when_part )? rhs_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:641: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());
-                // src/main/resources/org/drools/lang/DRL.g:642:25: ( ^( extend_key rule_id ) )?
+                // src/main/resources/org/drools/lang/DRL.g:641:25: ( ^( extend_key rule_id ) )?
                 if ( stream_rule_id.hasNext()||stream_extend_key.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:642:25: ^( extend_key rule_id )
+                    // src/main/resources/org/drools/lang/DRL.g:641:25: ^( extend_key rule_id )
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_extend_key.nextNode(), root_2);
@@ -3762,19 +3796,19 @@
                 }
                 stream_rule_id.reset();
                 stream_extend_key.reset();
-                // src/main/resources/org/drools/lang/DRL.g:642:48: ( decl_metadata )*
+                // src/main/resources/org/drools/lang/DRL.g:641:48: ( decl_metadata )*
                 while ( stream_decl_metadata.hasNext() ) {
                     adaptor.addChild(root_1, stream_decl_metadata.nextTree());
 
                 }
                 stream_decl_metadata.reset();
-                // src/main/resources/org/drools/lang/DRL.g:642:63: ( rule_attributes )?
+                // src/main/resources/org/drools/lang/DRL.g:641:63: ( rule_attributes )?
                 if ( stream_rule_attributes.hasNext() ) {
                     adaptor.addChild(root_1, stream_rule_attributes.nextTree());
 
                 }
                 stream_rule_attributes.reset();
-                // src/main/resources/org/drools/lang/DRL.g:642:80: ( when_part )?
+                // src/main/resources/org/drools/lang/DRL.g:641:80: ( when_part )?
                 if ( stream_when_part.hasNext() ) {
                     adaptor.addChild(root_1, stream_when_part.nextTree());
 
@@ -3861,34 +3895,34 @@
     };
 
     // $ANTLR start "when_part"
-    // src/main/resources/org/drools/lang/DRL.g:687:1: when_part : WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block ;
+    // src/main/resources/org/drools/lang/DRL.g:686: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);
 
         Object root_0 = null;
 
-        Token WHEN76=null;
-        Token COLON77=null;
-        DRLParser.normal_lhs_block_return normal_lhs_block78 = null;
+        Token WHEN74=null;
+        Token COLON75=null;
+        DRLParser.normal_lhs_block_return normal_lhs_block76 = null;
 
 
-        Object WHEN76_tree=null;
-        Object COLON77_tree=null;
+        Object WHEN74_tree=null;
+        Object COLON75_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
         RewriteRuleSubtreeStream stream_normal_lhs_block=new RewriteRuleSubtreeStream(adaptor,"rule normal_lhs_block");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:688:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
-            // src/main/resources/org/drools/lang/DRL.g:688:5: WHEN ( COLON )? normal_lhs_block
+            // src/main/resources/org/drools/lang/DRL.g:687:2: ( WHEN ( COLON )? normal_lhs_block -> WHEN normal_lhs_block )
+            // src/main/resources/org/drools/lang/DRL.g:687:5: WHEN ( COLON )? normal_lhs_block
             {
-            WHEN76=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1501); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_WHEN.add(WHEN76);
+            WHEN74=(Token)match(input,WHEN,FOLLOW_WHEN_in_when_part1510); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_WHEN.add(WHEN74);
 
             if ( state.backtracking==0 ) {
-              	emit(WHEN76, DroolsEditorType.KEYWORD);	
+              	emit(WHEN74, DroolsEditorType.KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:689:3: ( COLON )?
+            // src/main/resources/org/drools/lang/DRL.g:688:3: ( COLON )?
             int alt32=2;
             int LA32_0 = input.LA(1);
 
@@ -3897,10 +3931,10 @@
             }
             switch (alt32) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:689:3: COLON
+                    // src/main/resources/org/drools/lang/DRL.g:688:3: COLON
                     {
-                    COLON77=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1507); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_COLON.add(COLON77);
+                    COLON75=(Token)match(input,COLON,FOLLOW_COLON_in_when_part1516); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON75);
 
 
                     }
@@ -3909,17 +3943,17 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(COLON77, DroolsEditorType.SYMBOL);	
+              	emit(COLON75, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
-            pushFollow(FOLLOW_normal_lhs_block_in_when_part1517);
-            normal_lhs_block78=normal_lhs_block();
+            pushFollow(FOLLOW_normal_lhs_block_in_when_part1526);
+            normal_lhs_block76=normal_lhs_block();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block78.getTree());
+            if ( state.backtracking==0 ) stream_normal_lhs_block.add(normal_lhs_block76.getTree());
 
 
             // AST REWRITE
@@ -3933,7 +3967,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 692:2: -> WHEN normal_lhs_block
+            // 691:2: -> WHEN normal_lhs_block
             {
                 adaptor.addChild(root_0, stream_WHEN.nextNode());
                 adaptor.addChild(root_0, stream_normal_lhs_block.nextTree());
@@ -3969,7 +4003,7 @@
     };
 
     // $ANTLR start "rule_id"
-    // src/main/resources/org/drools/lang/DRL.g:695:1: rule_id : (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] );
+    // src/main/resources/org/drools/lang/DRL.g:694: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);
@@ -3983,7 +4017,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:696:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:695:2: (id= ID -> VT_RULE_ID[$id] | id= STRING -> VT_RULE_ID[$id] )
             int alt33=2;
             int LA33_0 = input.LA(1);
 
@@ -4002,9 +4036,9 @@
             }
             switch (alt33) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:696:5: id= ID
+                    // src/main/resources/org/drools/lang/DRL.g:695:5: id= ID
                     {
-                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1538); if (state.failed) return retval; 
+                    id=(Token)match(input,ID,FOLLOW_ID_in_rule_id1547); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4024,7 +4058,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 698:64: -> VT_RULE_ID[$id]
+                    // 697:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4034,9 +4068,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:699:5: id= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:698:5: id= STRING
                     {
-                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1554); if (state.failed) return retval; 
+                    id=(Token)match(input,STRING,FOLLOW_STRING_in_rule_id1563); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(id);
 
                     if ( state.backtracking==0 ) {
@@ -4056,7 +4090,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 701:64: -> VT_RULE_ID[$id]
+                    // 700:64: -> VT_RULE_ID[$id]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_RULE_ID, id));
 
@@ -4093,33 +4127,33 @@
     };
 
     // $ANTLR start "rule_attributes"
-    // src/main/resources/org/drools/lang/DRL.g:704:1: rule_attributes : ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) ;
+    // src/main/resources/org/drools/lang/DRL.g:703: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);
 
         Object root_0 = null;
 
-        Token COLON80=null;
-        Token COMMA82=null;
+        Token COLON78=null;
+        Token COMMA80=null;
         DRLParser.rule_attribute_return attr = null;
 
-        DRLParser.attributes_key_return attributes_key79 = null;
+        DRLParser.attributes_key_return attributes_key77 = null;
 
-        DRLParser.rule_attribute_return rule_attribute81 = null;
+        DRLParser.rule_attribute_return rule_attribute79 = null;
 
 
-        Object COLON80_tree=null;
-        Object COMMA82_tree=null;
+        Object COLON78_tree=null;
+        Object COMMA80_tree=null;
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleSubtreeStream stream_attributes_key=new RewriteRuleSubtreeStream(adaptor,"rule attributes_key");
         RewriteRuleSubtreeStream stream_rule_attribute=new RewriteRuleSubtreeStream(adaptor,"rule rule_attribute");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:705:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:705:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
+            // src/main/resources/org/drools/lang/DRL.g:704:2: ( ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )* -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ ) )
+            // src/main/resources/org/drools/lang/DRL.g:704:4: ( attributes_key COLON )? rule_attribute ( ( COMMA )? attr= rule_attribute )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:705:4: ( attributes_key COLON )?
+            // src/main/resources/org/drools/lang/DRL.g:704:4: ( attributes_key COLON )?
             int alt34=2;
             int LA34_0 = input.LA(1);
 
@@ -4132,19 +4166,19 @@
             }
             switch (alt34) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:705:6: attributes_key COLON
+                    // src/main/resources/org/drools/lang/DRL.g:704:6: attributes_key COLON
                     {
-                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1575);
-                    attributes_key79=attributes_key();
+                    pushFollow(FOLLOW_attributes_key_in_rule_attributes1584);
+                    attributes_key77=attributes_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_attributes_key.add(attributes_key79.getTree());
-                    COLON80=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1577); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_COLON.add(COLON80);
+                    if ( state.backtracking==0 ) stream_attributes_key.add(attributes_key77.getTree());
+                    COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_rule_attributes1586); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COLON.add(COLON78);
 
                     if ( state.backtracking==0 ) {
-                      	emit(COLON80, DroolsEditorType.SYMBOL);	
+                      	emit(COLON78, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -4152,13 +4186,13 @@
 
             }
 
-            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1587);
-            rule_attribute81=rule_attribute();
+            pushFollow(FOLLOW_rule_attribute_in_rule_attributes1596);
+            rule_attribute79=rule_attribute();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_rule_attribute.add(rule_attribute81.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:706:18: ( ( COMMA )? attr= rule_attribute )*
+            if ( state.backtracking==0 ) stream_rule_attribute.add(rule_attribute79.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:705:18: ( ( COMMA )? attr= rule_attribute )*
             loop36:
             do {
                 int alt36=2;
@@ -4171,9 +4205,9 @@
 
                 switch (alt36) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:706:20: ( COMMA )? attr= rule_attribute
+            	    // src/main/resources/org/drools/lang/DRL.g:705:20: ( COMMA )? attr= rule_attribute
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:706:20: ( COMMA )?
+            	    // src/main/resources/org/drools/lang/DRL.g:705:20: ( COMMA )?
             	    int alt35=2;
             	    int LA35_0 = input.LA(1);
 
@@ -4182,10 +4216,10 @@
             	    }
             	    switch (alt35) {
             	        case 1 :
-            	            // src/main/resources/org/drools/lang/DRL.g:706:20: COMMA
+            	            // src/main/resources/org/drools/lang/DRL.g:705:20: COMMA
             	            {
-            	            COMMA82=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1591); if (state.failed) return retval; 
-            	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA82);
+            	            COMMA80=(Token)match(input,COMMA,FOLLOW_COMMA_in_rule_attributes1600); if (state.failed) return retval; 
+            	            if ( state.backtracking==0 ) stream_COMMA.add(COMMA80);
 
 
             	            }
@@ -4194,9 +4228,9 @@
             	    }
 
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA82, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA80, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1598);
+            	    pushFollow(FOLLOW_rule_attribute_in_rule_attributes1607);
             	    attr=rule_attribute();
 
             	    state._fsp--;
@@ -4214,7 +4248,7 @@
 
 
             // AST REWRITE
-            // elements: rule_attribute, attributes_key
+            // elements: attributes_key, rule_attribute
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -4224,14 +4258,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 707:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+            // 706:3: -> ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:707:6: ^( VT_RULE_ATTRIBUTES ( attributes_key )? ( rule_attribute )+ )
+                // src/main/resources/org/drools/lang/DRL.g:706: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:707:27: ( attributes_key )?
+                // src/main/resources/org/drools/lang/DRL.g:706:27: ( attributes_key )?
                 if ( stream_attributes_key.hasNext() ) {
                     adaptor.addChild(root_1, stream_attributes_key.nextTree());
 
@@ -4280,210 +4314,210 @@
     };
 
     // $ANTLR start "rule_attribute"
-    // src/main/resources/org/drools/lang/DRL.g:710:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );
+    // src/main/resources/org/drools/lang/DRL.g:709:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );
     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);
 
         Object root_0 = null;
 
-        DRLParser.salience_return salience83 = null;
+        DRLParser.salience_return salience81 = null;
 
-        DRLParser.no_loop_return no_loop84 = null;
+        DRLParser.no_loop_return no_loop82 = null;
 
-        DRLParser.agenda_group_return agenda_group85 = null;
+        DRLParser.agenda_group_return agenda_group83 = null;
 
-        DRLParser.duration_return duration86 = null;
+        DRLParser.duration_return duration84 = null;
 
-        DRLParser.activation_group_return activation_group87 = null;
+        DRLParser.activation_group_return activation_group85 = null;
 
-        DRLParser.auto_focus_return auto_focus88 = null;
+        DRLParser.auto_focus_return auto_focus86 = null;
 
-        DRLParser.date_effective_return date_effective89 = null;
+        DRLParser.date_effective_return date_effective87 = null;
 
-        DRLParser.date_expires_return date_expires90 = null;
+        DRLParser.date_expires_return date_expires88 = null;
 
-        DRLParser.enabled_return enabled91 = null;
+        DRLParser.enabled_return enabled89 = null;
 
-        DRLParser.ruleflow_group_return ruleflow_group92 = null;
+        DRLParser.ruleflow_group_return ruleflow_group90 = null;
 
-        DRLParser.lock_on_active_return lock_on_active93 = null;
+        DRLParser.lock_on_active_return lock_on_active91 = null;
 
-        DRLParser.dialect_return dialect94 = null;
+        DRLParser.dialect_return dialect92 = null;
 
 
 
          boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:713:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
+            // src/main/resources/org/drools/lang/DRL.g:712:2: ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect )
             int alt37=12;
             alt37 = dfa37.predict(input);
             switch (alt37) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:713:4: salience
+                    // src/main/resources/org/drools/lang/DRL.g:712:4: salience
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_salience_in_rule_attribute1637);
-                    salience83=salience();
+                    pushFollow(FOLLOW_salience_in_rule_attribute1646);
+                    salience81=salience();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, salience83.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, salience81.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:714:4: no_loop
+                    // src/main/resources/org/drools/lang/DRL.g:713:4: no_loop
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_no_loop_in_rule_attribute1643);
-                    no_loop84=no_loop();
+                    pushFollow(FOLLOW_no_loop_in_rule_attribute1652);
+                    no_loop82=no_loop();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, no_loop84.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, no_loop82.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:715:4: agenda_group
+                    // src/main/resources/org/drools/lang/DRL.g:714:4: agenda_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1648);
-                    agenda_group85=agenda_group();
+                    pushFollow(FOLLOW_agenda_group_in_rule_attribute1657);
+                    agenda_group83=agenda_group();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, agenda_group85.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, agenda_group83.getTree());
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:716:4: duration
+                    // src/main/resources/org/drools/lang/DRL.g:715:4: duration
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_duration_in_rule_attribute1655);
-                    duration86=duration();
+                    pushFollow(FOLLOW_duration_in_rule_attribute1664);
+                    duration84=duration();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, duration86.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, duration84.getTree());
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:717:4: activation_group
+                    // src/main/resources/org/drools/lang/DRL.g:716:4: activation_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_activation_group_in_rule_attribute1662);
-                    activation_group87=activation_group();
+                    pushFollow(FOLLOW_activation_group_in_rule_attribute1671);
+                    activation_group85=activation_group();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, activation_group87.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, activation_group85.getTree());
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:718:4: auto_focus
+                    // src/main/resources/org/drools/lang/DRL.g:717:4: auto_focus
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1668);
-                    auto_focus88=auto_focus();
+                    pushFollow(FOLLOW_auto_focus_in_rule_attribute1677);
+                    auto_focus86=auto_focus();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, auto_focus88.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, auto_focus86.getTree());
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:719:4: date_effective
+                    // src/main/resources/org/drools/lang/DRL.g:718:4: date_effective
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_effective_in_rule_attribute1674);
-                    date_effective89=date_effective();
+                    pushFollow(FOLLOW_date_effective_in_rule_attribute1683);
+                    date_effective87=date_effective();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_effective89.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_effective87.getTree());
 
                     }
                     break;
                 case 8 :
-                    // src/main/resources/org/drools/lang/DRL.g:720:4: date_expires
+                    // src/main/resources/org/drools/lang/DRL.g:719:4: date_expires
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_date_expires_in_rule_attribute1680);
-                    date_expires90=date_expires();
+                    pushFollow(FOLLOW_date_expires_in_rule_attribute1689);
+                    date_expires88=date_expires();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_expires90.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, date_expires88.getTree());
 
                     }
                     break;
                 case 9 :
-                    // src/main/resources/org/drools/lang/DRL.g:721:4: enabled
+                    // src/main/resources/org/drools/lang/DRL.g:720:4: enabled
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_enabled_in_rule_attribute1686);
-                    enabled91=enabled();
+                    pushFollow(FOLLOW_enabled_in_rule_attribute1695);
+                    enabled89=enabled();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, enabled91.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, enabled89.getTree());
 
                     }
                     break;
                 case 10 :
-                    // src/main/resources/org/drools/lang/DRL.g:722:4: ruleflow_group
+                    // src/main/resources/org/drools/lang/DRL.g:721:4: ruleflow_group
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1692);
-                    ruleflow_group92=ruleflow_group();
+                    pushFollow(FOLLOW_ruleflow_group_in_rule_attribute1701);
+                    ruleflow_group90=ruleflow_group();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, ruleflow_group92.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, ruleflow_group90.getTree());
 
                     }
                     break;
                 case 11 :
-                    // src/main/resources/org/drools/lang/DRL.g:723:4: lock_on_active
+                    // src/main/resources/org/drools/lang/DRL.g:722:4: lock_on_active
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1698);
-                    lock_on_active93=lock_on_active();
+                    pushFollow(FOLLOW_lock_on_active_in_rule_attribute1707);
+                    lock_on_active91=lock_on_active();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lock_on_active93.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lock_on_active91.getTree());
 
                     }
                     break;
                 case 12 :
-                    // src/main/resources/org/drools/lang/DRL.g:724:4: dialect
+                    // src/main/resources/org/drools/lang/DRL.g:723:4: dialect
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_dialect_in_rule_attribute1703);
-                    dialect94=dialect();
+                    pushFollow(FOLLOW_dialect_in_rule_attribute1712);
+                    dialect92=dialect();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, dialect94.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, dialect92.getTree());
 
                     }
                     break;
@@ -4526,41 +4560,41 @@
     };
 
     // $ANTLR start "date_effective"
-    // src/main/resources/org/drools/lang/DRL.g:734:1: date_effective : date_effective_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:733: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);
 
         Object root_0 = null;
 
-        Token STRING96=null;
-        DRLParser.date_effective_key_return date_effective_key95 = null;
+        Token STRING94=null;
+        DRLParser.date_effective_key_return date_effective_key93 = null;
 
 
-        Object STRING96_tree=null;
+        Object STRING94_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:735:2: ( date_effective_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:735:4: date_effective_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:734:2: ( date_effective_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:734:4: date_effective_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_effective_key_in_date_effective1718);
-            date_effective_key95=date_effective_key();
+            pushFollow(FOLLOW_date_effective_key_in_date_effective1727);
+            date_effective_key93=date_effective_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key95.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_effective_key93.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING96=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1723); if (state.failed) return retval;
+            STRING94=(Token)match(input,STRING,FOLLOW_STRING_in_date_effective1732); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING96_tree = (Object)adaptor.create(STRING96);
-            adaptor.addChild(root_0, STRING96_tree);
+            STRING94_tree = (Object)adaptor.create(STRING94);
+            adaptor.addChild(root_0, STRING94_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING96, DroolsEditorType.STRING_CONST );	
+              	emit(STRING94, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -4591,41 +4625,41 @@
     };
 
     // $ANTLR start "date_expires"
-    // src/main/resources/org/drools/lang/DRL.g:739:1: date_expires : date_expires_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:738: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);
 
         Object root_0 = null;
 
-        Token STRING98=null;
-        DRLParser.date_expires_key_return date_expires_key97 = null;
+        Token STRING96=null;
+        DRLParser.date_expires_key_return date_expires_key95 = null;
 
 
-        Object STRING98_tree=null;
+        Object STRING96_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:740:2: ( date_expires_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:740:4: date_expires_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:739:2: ( date_expires_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:739:4: date_expires_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_date_expires_key_in_date_expires1737);
-            date_expires_key97=date_expires_key();
+            pushFollow(FOLLOW_date_expires_key_in_date_expires1746);
+            date_expires_key95=date_expires_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key97.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(date_expires_key95.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING98=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1742); if (state.failed) return retval;
+            STRING96=(Token)match(input,STRING,FOLLOW_STRING_in_date_expires1751); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING98_tree = (Object)adaptor.create(STRING98);
-            adaptor.addChild(root_0, STRING98_tree);
+            STRING96_tree = (Object)adaptor.create(STRING96);
+            adaptor.addChild(root_0, STRING96_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING98, DroolsEditorType.STRING_CONST );	
+              	emit(STRING96, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -4656,37 +4690,37 @@
     };
 
     // $ANTLR start "enabled"
-    // src/main/resources/org/drools/lang/DRL.g:744:1: enabled : enabled_key ( BOOL | paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:743: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);
 
         Object root_0 = null;
 
-        Token BOOL100=null;
-        DRLParser.enabled_key_return enabled_key99 = null;
+        Token BOOL98=null;
+        DRLParser.enabled_key_return enabled_key97 = null;
 
-        DRLParser.paren_chunk_return paren_chunk101 = null;
+        DRLParser.paren_chunk_return paren_chunk99 = null;
 
 
-        Object BOOL100_tree=null;
+        Object BOOL98_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:745:2: ( enabled_key ( BOOL | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:745:4: enabled_key ( BOOL | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:744:2: ( enabled_key ( BOOL | paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:744:4: enabled_key ( BOOL | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_enabled_key_in_enabled1757);
-            enabled_key99=enabled_key();
+            pushFollow(FOLLOW_enabled_key_in_enabled1766);
+            enabled_key97=enabled_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key99.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(enabled_key97.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:746:6: ( BOOL | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:745:6: ( BOOL | paren_chunk )
             int alt38=2;
             int LA38_0 = input.LA(1);
 
@@ -4705,28 +4739,28 @@
             }
             switch (alt38) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:746:8: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:745:8: BOOL
                     {
-                    BOOL100=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1770); if (state.failed) return retval;
+                    BOOL98=(Token)match(input,BOOL,FOLLOW_BOOL_in_enabled1779); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL100_tree = (Object)adaptor.create(BOOL100);
-                    adaptor.addChild(root_0, BOOL100_tree);
+                    BOOL98_tree = (Object)adaptor.create(BOOL98);
+                    adaptor.addChild(root_0, BOOL98_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(BOOL100, DroolsEditorType.BOOLEAN_CONST );	
+                      	emit(BOOL98, DroolsEditorType.BOOLEAN_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:747:8: paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:746:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_enabled1781);
-                    paren_chunk101=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_enabled1790);
+                    paren_chunk99=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk101.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk99.getTree());
 
                     }
                     break;
@@ -4762,37 +4796,37 @@
     };
 
     // $ANTLR start "salience"
-    // src/main/resources/org/drools/lang/DRL.g:751:1: salience : salience_key ( INT | paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:750: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);
 
         Object root_0 = null;
 
-        Token INT103=null;
-        DRLParser.salience_key_return salience_key102 = null;
+        Token INT101=null;
+        DRLParser.salience_key_return salience_key100 = null;
 
-        DRLParser.paren_chunk_return paren_chunk104 = null;
+        DRLParser.paren_chunk_return paren_chunk102 = null;
 
 
-        Object INT103_tree=null;
+        Object INT101_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:752:2: ( salience_key ( INT | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:752:4: salience_key ( INT | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:751:2: ( salience_key ( INT | paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:751:4: salience_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_salience_key_in_salience1801);
-            salience_key102=salience_key();
+            pushFollow(FOLLOW_salience_key_in_salience1810);
+            salience_key100=salience_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key102.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(salience_key100.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:753:3: ( INT | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:752:3: ( INT | paren_chunk )
             int alt39=2;
             int LA39_0 = input.LA(1);
 
@@ -4811,28 +4845,28 @@
             }
             switch (alt39) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:753:5: INT
+                    // src/main/resources/org/drools/lang/DRL.g:752:5: INT
                     {
-                    INT103=(Token)match(input,INT,FOLLOW_INT_in_salience1810); if (state.failed) return retval;
+                    INT101=(Token)match(input,INT,FOLLOW_INT_in_salience1819); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    INT103_tree = (Object)adaptor.create(INT103);
-                    adaptor.addChild(root_0, INT103_tree);
+                    INT101_tree = (Object)adaptor.create(INT101);
+                    adaptor.addChild(root_0, INT101_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(INT103, DroolsEditorType.NUMERIC_CONST );	
+                      	emit(INT101, DroolsEditorType.NUMERIC_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:754:5: paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:753:5: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_salience1819);
-                    paren_chunk104=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_salience1828);
+                    paren_chunk102=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk104.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk102.getTree());
 
                     }
                     break;
@@ -4868,35 +4902,35 @@
     };
 
     // $ANTLR start "no_loop"
-    // src/main/resources/org/drools/lang/DRL.g:758:1: no_loop : no_loop_key ( BOOL )? ;
+    // src/main/resources/org/drools/lang/DRL.g:757: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);
 
         Object root_0 = null;
 
-        Token BOOL106=null;
-        DRLParser.no_loop_key_return no_loop_key105 = null;
+        Token BOOL104=null;
+        DRLParser.no_loop_key_return no_loop_key103 = null;
 
 
-        Object BOOL106_tree=null;
+        Object BOOL104_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:759:2: ( no_loop_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:759:4: no_loop_key ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:758:2: ( no_loop_key ( BOOL )? )
+            // src/main/resources/org/drools/lang/DRL.g:758:4: no_loop_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_no_loop_key_in_no_loop1834);
-            no_loop_key105=no_loop_key();
+            pushFollow(FOLLOW_no_loop_key_in_no_loop1843);
+            no_loop_key103=no_loop_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key105.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(no_loop_key103.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:759:66: ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:758:66: ( BOOL )?
             int alt40=2;
             int LA40_0 = input.LA(1);
 
@@ -4905,12 +4939,12 @@
             }
             switch (alt40) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:759:66: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:758:66: BOOL
                     {
-                    BOOL106=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1839); if (state.failed) return retval;
+                    BOOL104=(Token)match(input,BOOL,FOLLOW_BOOL_in_no_loop1848); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL106_tree = (Object)adaptor.create(BOOL106);
-                    adaptor.addChild(root_0, BOOL106_tree);
+                    BOOL104_tree = (Object)adaptor.create(BOOL104);
+                    adaptor.addChild(root_0, BOOL104_tree);
                     }
 
                     }
@@ -4919,7 +4953,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(BOOL106, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL104, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -4950,35 +4984,35 @@
     };
 
     // $ANTLR start "auto_focus"
-    // src/main/resources/org/drools/lang/DRL.g:763:1: auto_focus : auto_focus_key ( BOOL )? ;
+    // src/main/resources/org/drools/lang/DRL.g:762: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);
 
         Object root_0 = null;
 
-        Token BOOL108=null;
-        DRLParser.auto_focus_key_return auto_focus_key107 = null;
+        Token BOOL106=null;
+        DRLParser.auto_focus_key_return auto_focus_key105 = null;
 
 
-        Object BOOL108_tree=null;
+        Object BOOL106_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:764:2: ( auto_focus_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:764:4: auto_focus_key ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:763:2: ( auto_focus_key ( BOOL )? )
+            // src/main/resources/org/drools/lang/DRL.g:763:4: auto_focus_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1854);
-            auto_focus_key107=auto_focus_key();
+            pushFollow(FOLLOW_auto_focus_key_in_auto_focus1863);
+            auto_focus_key105=auto_focus_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key107.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(auto_focus_key105.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:764:69: ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:763:69: ( BOOL )?
             int alt41=2;
             int LA41_0 = input.LA(1);
 
@@ -4987,12 +5021,12 @@
             }
             switch (alt41) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:764:69: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:763:69: BOOL
                     {
-                    BOOL108=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus1859); if (state.failed) return retval;
+                    BOOL106=(Token)match(input,BOOL,FOLLOW_BOOL_in_auto_focus1868); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL108_tree = (Object)adaptor.create(BOOL108);
-                    adaptor.addChild(root_0, BOOL108_tree);
+                    BOOL106_tree = (Object)adaptor.create(BOOL106);
+                    adaptor.addChild(root_0, BOOL106_tree);
                     }
 
                     }
@@ -5001,7 +5035,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(BOOL108, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL106, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -5032,41 +5066,41 @@
     };
 
     // $ANTLR start "activation_group"
-    // src/main/resources/org/drools/lang/DRL.g:768:1: activation_group : activation_group_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:767: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);
 
         Object root_0 = null;
 
-        Token STRING110=null;
-        DRLParser.activation_group_key_return activation_group_key109 = null;
+        Token STRING108=null;
+        DRLParser.activation_group_key_return activation_group_key107 = null;
 
 
-        Object STRING110_tree=null;
+        Object STRING108_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:769:2: ( activation_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:769:4: activation_group_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:768:2: ( activation_group_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:768:4: activation_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_activation_group_key_in_activation_group1876);
-            activation_group_key109=activation_group_key();
+            pushFollow(FOLLOW_activation_group_key_in_activation_group1885);
+            activation_group_key107=activation_group_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key109.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(activation_group_key107.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING110=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group1881); if (state.failed) return retval;
+            STRING108=(Token)match(input,STRING,FOLLOW_STRING_in_activation_group1890); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING110_tree = (Object)adaptor.create(STRING110);
-            adaptor.addChild(root_0, STRING110_tree);
+            STRING108_tree = (Object)adaptor.create(STRING108);
+            adaptor.addChild(root_0, STRING108_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING110, DroolsEditorType.STRING_CONST );	
+              	emit(STRING108, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5097,41 +5131,41 @@
     };
 
     // $ANTLR start "ruleflow_group"
-    // src/main/resources/org/drools/lang/DRL.g:773:1: ruleflow_group : ruleflow_group_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:772: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);
 
         Object root_0 = null;
 
-        Token STRING112=null;
-        DRLParser.ruleflow_group_key_return ruleflow_group_key111 = null;
+        Token STRING110=null;
+        DRLParser.ruleflow_group_key_return ruleflow_group_key109 = null;
 
 
-        Object STRING112_tree=null;
+        Object STRING110_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:774:2: ( ruleflow_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:774:4: ruleflow_group_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:773:2: ( ruleflow_group_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:773:4: ruleflow_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1895);
-            ruleflow_group_key111=ruleflow_group_key();
+            pushFollow(FOLLOW_ruleflow_group_key_in_ruleflow_group1904);
+            ruleflow_group_key109=ruleflow_group_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key111.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(ruleflow_group_key109.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING112=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group1900); if (state.failed) return retval;
+            STRING110=(Token)match(input,STRING,FOLLOW_STRING_in_ruleflow_group1909); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING112_tree = (Object)adaptor.create(STRING112);
-            adaptor.addChild(root_0, STRING112_tree);
+            STRING110_tree = (Object)adaptor.create(STRING110);
+            adaptor.addChild(root_0, STRING110_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING112, DroolsEditorType.STRING_CONST );	
+              	emit(STRING110, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5162,41 +5196,41 @@
     };
 
     // $ANTLR start "agenda_group"
-    // src/main/resources/org/drools/lang/DRL.g:778:1: agenda_group : agenda_group_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:777: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);
 
         Object root_0 = null;
 
-        Token STRING114=null;
-        DRLParser.agenda_group_key_return agenda_group_key113 = null;
+        Token STRING112=null;
+        DRLParser.agenda_group_key_return agenda_group_key111 = null;
 
 
-        Object STRING114_tree=null;
+        Object STRING112_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:779:2: ( agenda_group_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:779:4: agenda_group_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:778:2: ( agenda_group_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:778:4: agenda_group_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1914);
-            agenda_group_key113=agenda_group_key();
+            pushFollow(FOLLOW_agenda_group_key_in_agenda_group1923);
+            agenda_group_key111=agenda_group_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key113.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(agenda_group_key111.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING114=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group1919); if (state.failed) return retval;
+            STRING112=(Token)match(input,STRING,FOLLOW_STRING_in_agenda_group1928); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING114_tree = (Object)adaptor.create(STRING114);
-            adaptor.addChild(root_0, STRING114_tree);
+            STRING112_tree = (Object)adaptor.create(STRING112);
+            adaptor.addChild(root_0, STRING112_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING114, DroolsEditorType.STRING_CONST );	
+              	emit(STRING112, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5227,37 +5261,37 @@
     };
 
     // $ANTLR start "duration"
-    // src/main/resources/org/drools/lang/DRL.g:783:1: duration : duration_key ( INT | paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:782: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);
 
         Object root_0 = null;
 
-        Token INT116=null;
-        DRLParser.duration_key_return duration_key115 = null;
+        Token INT114=null;
+        DRLParser.duration_key_return duration_key113 = null;
 
-        DRLParser.paren_chunk_return paren_chunk117 = null;
+        DRLParser.paren_chunk_return paren_chunk115 = null;
 
 
-        Object INT116_tree=null;
+        Object INT114_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:784:2: ( duration_key ( INT | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:784:4: duration_key ( INT | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:783:2: ( duration_key ( INT | paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:783:4: duration_key ( INT | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_duration_key_in_duration1933);
-            duration_key115=duration_key();
+            pushFollow(FOLLOW_duration_key_in_duration1942);
+            duration_key113=duration_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key115.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(duration_key113.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:785:6: ( INT | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:784:6: ( INT | paren_chunk )
             int alt42=2;
             int LA42_0 = input.LA(1);
 
@@ -5276,28 +5310,28 @@
             }
             switch (alt42) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:785:8: INT
+                    // src/main/resources/org/drools/lang/DRL.g:784:8: INT
                     {
-                    INT116=(Token)match(input,INT,FOLLOW_INT_in_duration1946); if (state.failed) return retval;
+                    INT114=(Token)match(input,INT,FOLLOW_INT_in_duration1955); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    INT116_tree = (Object)adaptor.create(INT116);
-                    adaptor.addChild(root_0, INT116_tree);
+                    INT114_tree = (Object)adaptor.create(INT114);
+                    adaptor.addChild(root_0, INT114_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(INT116, DroolsEditorType.NUMERIC_CONST );	
+                      	emit(INT114, DroolsEditorType.NUMERIC_CONST );	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:786:8: paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:785:8: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_duration1957);
-                    paren_chunk117=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_duration1966);
+                    paren_chunk115=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk117.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk115.getTree());
 
                     }
                     break;
@@ -5333,41 +5367,41 @@
     };
 
     // $ANTLR start "dialect"
-    // src/main/resources/org/drools/lang/DRL.g:790:1: dialect : dialect_key STRING ;
+    // src/main/resources/org/drools/lang/DRL.g:789: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);
 
         Object root_0 = null;
 
-        Token STRING119=null;
-        DRLParser.dialect_key_return dialect_key118 = null;
+        Token STRING117=null;
+        DRLParser.dialect_key_return dialect_key116 = null;
 
 
-        Object STRING119_tree=null;
+        Object STRING117_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:791:2: ( dialect_key STRING )
-            // src/main/resources/org/drools/lang/DRL.g:791:4: dialect_key STRING
+            // src/main/resources/org/drools/lang/DRL.g:790:2: ( dialect_key STRING )
+            // src/main/resources/org/drools/lang/DRL.g:790:4: dialect_key STRING
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_dialect_key_in_dialect1977);
-            dialect_key118=dialect_key();
+            pushFollow(FOLLOW_dialect_key_in_dialect1986);
+            dialect_key116=dialect_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key118.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(dialect_key116.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            STRING119=(Token)match(input,STRING,FOLLOW_STRING_in_dialect1982); if (state.failed) return retval;
+            STRING117=(Token)match(input,STRING,FOLLOW_STRING_in_dialect1991); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            STRING119_tree = (Object)adaptor.create(STRING119);
-            adaptor.addChild(root_0, STRING119_tree);
+            STRING117_tree = (Object)adaptor.create(STRING117);
+            adaptor.addChild(root_0, STRING117_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(STRING119, DroolsEditorType.STRING_CONST );	
+              	emit(STRING117, DroolsEditorType.STRING_CONST );	
             }
 
             }
@@ -5398,35 +5432,35 @@
     };
 
     // $ANTLR start "lock_on_active"
-    // src/main/resources/org/drools/lang/DRL.g:795:1: lock_on_active : lock_on_active_key ( BOOL )? ;
+    // src/main/resources/org/drools/lang/DRL.g:794: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);
 
         Object root_0 = null;
 
-        Token BOOL121=null;
-        DRLParser.lock_on_active_key_return lock_on_active_key120 = null;
+        Token BOOL119=null;
+        DRLParser.lock_on_active_key_return lock_on_active_key118 = null;
 
 
-        Object BOOL121_tree=null;
+        Object BOOL119_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:796:2: ( lock_on_active_key ( BOOL )? )
-            // src/main/resources/org/drools/lang/DRL.g:796:4: lock_on_active_key ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:795:2: ( lock_on_active_key ( BOOL )? )
+            // src/main/resources/org/drools/lang/DRL.g:795:4: lock_on_active_key ( BOOL )?
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2000);
-            lock_on_active_key120=lock_on_active_key();
+            pushFollow(FOLLOW_lock_on_active_key_in_lock_on_active2009);
+            lock_on_active_key118=lock_on_active_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(lock_on_active_key120.getTree(), root_0);
+            if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(lock_on_active_key118.getTree(), root_0);
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:796:73: ( BOOL )?
+            // src/main/resources/org/drools/lang/DRL.g:795:73: ( BOOL )?
             int alt43=2;
             int LA43_0 = input.LA(1);
 
@@ -5435,12 +5469,12 @@
             }
             switch (alt43) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:796:73: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:795:73: BOOL
                     {
-                    BOOL121=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2005); if (state.failed) return retval;
+                    BOOL119=(Token)match(input,BOOL,FOLLOW_BOOL_in_lock_on_active2014); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL121_tree = (Object)adaptor.create(BOOL121);
-                    adaptor.addChild(root_0, BOOL121_tree);
+                    BOOL119_tree = (Object)adaptor.create(BOOL119);
+                    adaptor.addChild(root_0, BOOL119_tree);
                     }
 
                     }
@@ -5449,7 +5483,7 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(BOOL121, DroolsEditorType.BOOLEAN_CONST );	
+              	emit(BOOL119, DroolsEditorType.BOOLEAN_CONST );	
             }
 
             }
@@ -5480,42 +5514,51 @@
     };
 
     // $ANTLR start "normal_lhs_block"
-    // src/main/resources/org/drools/lang/DRL.g:800:1: normal_lhs_block : ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:799: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);
 
         Object root_0 = null;
 
-        DRLParser.lhs_return lhs122 = null;
+        DRLParser.lhs_return lhs120 = null;
 
 
         RewriteRuleSubtreeStream stream_lhs=new RewriteRuleSubtreeStream(adaptor,"rule lhs");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:801:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:801:4: ( lhs )*
+            // src/main/resources/org/drools/lang/DRL.g:800:2: ( ( lhs )* -> ^( VT_AND_IMPLICIT ( lhs )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:800:4: ( lhs )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:801:4: ( lhs )*
+            // src/main/resources/org/drools/lang/DRL.g:800:4: ( lhs )*
             loop44:
             do {
                 int alt44=2;
                 int LA44_0 = input.LA(1);
 
-                if ( (LA44_0==ID||LA44_0==LEFT_PAREN) ) {
+                if ( (LA44_0==ID) ) {
+                    int LA44_1 = input.LA(2);
+
+                    if ( (!((((validateIdentifierKey(DroolsSoftKeywords.END)))))) ) {
+                        alt44=1;
+                    }
+
+
+                }
+                else if ( (LA44_0==LEFT_PAREN) ) {
                     alt44=1;
                 }
 
 
                 switch (alt44) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:801:4: lhs
+            	    // src/main/resources/org/drools/lang/DRL.g:800:4: lhs
             	    {
-            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2020);
-            	    lhs122=lhs();
+            	    pushFollow(FOLLOW_lhs_in_normal_lhs_block2029);
+            	    lhs120=lhs();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_lhs.add(lhs122.getTree());
+            	    if ( state.backtracking==0 ) stream_lhs.add(lhs120.getTree());
 
             	    }
             	    break;
@@ -5538,14 +5581,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 802:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
+            // 801:2: -> ^( VT_AND_IMPLICIT ( lhs )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:802:5: ^( VT_AND_IMPLICIT ( lhs )* )
+                // src/main/resources/org/drools/lang/DRL.g:801: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:802:23: ( lhs )*
+                // src/main/resources/org/drools/lang/DRL.g:801:23: ( lhs )*
                 while ( stream_lhs.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs.nextTree());
 
@@ -5586,29 +5629,29 @@
     };
 
     // $ANTLR start "lhs"
-    // src/main/resources/org/drools/lang/DRL.g:805:1: lhs : lhs_or ;
+    // src/main/resources/org/drools/lang/DRL.g:804: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);
 
         Object root_0 = null;
 
-        DRLParser.lhs_or_return lhs_or123 = null;
+        DRLParser.lhs_or_return lhs_or121 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:805:5: ( lhs_or )
-            // src/main/resources/org/drools/lang/DRL.g:805:7: lhs_or
+            // src/main/resources/org/drools/lang/DRL.g:804:5: ( lhs_or )
+            // src/main/resources/org/drools/lang/DRL.g:804:7: lhs_or
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_lhs_or_in_lhs2041);
-            lhs_or123=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_lhs2050);
+            lhs_or121=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or123.getTree());
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or121.getTree());
 
             }
 
@@ -5638,7 +5681,7 @@
     };
 
     // $ANTLR start "lhs_or"
-    // src/main/resources/org/drools/lang/DRL.g:808:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
+    // src/main/resources/org/drools/lang/DRL.g:807:1: lhs_or : ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* );
     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);
@@ -5646,22 +5689,22 @@
         Object root_0 = null;
 
         Token pipe=null;
-        Token LEFT_PAREN124=null;
-        Token RIGHT_PAREN126=null;
+        Token LEFT_PAREN122=null;
+        Token RIGHT_PAREN124=null;
         DRLParser.or_key_return or = null;
 
         DRLParser.or_key_return value = null;
 
+        DRLParser.lhs_and_return lhs_and123 = null;
+
         DRLParser.lhs_and_return lhs_and125 = null;
 
-        DRLParser.lhs_and_return lhs_and127 = null;
+        DRLParser.lhs_and_return lhs_and126 = null;
 
-        DRLParser.lhs_and_return lhs_and128 = null;
 
-
         Object pipe_tree=null;
-        Object LEFT_PAREN124_tree=null;
-        Object RIGHT_PAREN126_tree=null;
+        Object LEFT_PAREN122_tree=null;
+        Object RIGHT_PAREN124_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");
@@ -5671,7 +5714,7 @@
         	Token orToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:811:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
+            // src/main/resources/org/drools/lang/DRL.g:810:3: ( ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN ) | ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )* )
             int alt48=2;
             int LA48_0 = input.LA(1);
 
@@ -5704,15 +5747,15 @@
             }
             switch (alt48) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:811:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:810:5: ( LEFT_PAREN or_key )=> LEFT_PAREN or= or_key ( lhs_and )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN124=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2065); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN124);
+                    LEFT_PAREN122=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_or2074); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN122);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN124, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN122, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_key_in_lhs_or2075);
+                    pushFollow(FOLLOW_or_key_in_lhs_or2084);
                     or=or_key();
 
                     state._fsp--;
@@ -5721,7 +5764,7 @@
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:815:4: ( lhs_and )+
+                    // src/main/resources/org/drools/lang/DRL.g:814:4: ( lhs_and )+
                     int cnt45=0;
                     loop45:
                     do {
@@ -5735,14 +5778,14 @@
 
                         switch (alt45) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:815:4: lhs_and
+                    	    // src/main/resources/org/drools/lang/DRL.g:814:4: lhs_and
                     	    {
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2083);
-                    	    lhs_and125=lhs_and();
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2092);
+                    	    lhs_and123=lhs_and();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and125.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and123.getTree());
 
                     	    }
                     	    break;
@@ -5757,11 +5800,11 @@
                         cnt45++;
                     } while (true);
 
-                    RIGHT_PAREN126=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2089); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN126);
+                    RIGHT_PAREN124=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_or2098); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN124);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN126, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN124, DroolsEditorType.SYMBOL);	
                     }
 
 
@@ -5776,9 +5819,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 817:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                    // 816:3: -> ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:817:6: ^( VT_OR_PREFIX[$or.start] ( lhs_and )+ RIGHT_PAREN )
+                        // src/main/resources/org/drools/lang/DRL.g:816:6: ^( VT_OR_PREFIX[$or.start] ( 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);
@@ -5802,17 +5845,17 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:818:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:817:4: ( lhs_and -> lhs_and ) ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:818:4: ( lhs_and -> lhs_and )
-                    // src/main/resources/org/drools/lang/DRL.g:818:5: lhs_and
+                    // src/main/resources/org/drools/lang/DRL.g:817:4: ( lhs_and -> lhs_and )
+                    // src/main/resources/org/drools/lang/DRL.g:817:5: lhs_and
                     {
-                    pushFollow(FOLLOW_lhs_and_in_lhs_or2112);
-                    lhs_and127=lhs_and();
+                    pushFollow(FOLLOW_lhs_and_in_lhs_or2121);
+                    lhs_and125=lhs_and();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and127.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and125.getTree());
 
 
                     // AST REWRITE
@@ -5826,7 +5869,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 818:13: -> lhs_and
+                    // 817:13: -> lhs_and
                     {
                         adaptor.addChild(root_0, stream_lhs_and.nextTree());
 
@@ -5835,14 +5878,14 @@
                     retval.tree = root_0;}
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:819:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:818:3: ( ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and ) )*
                     loop47:
                     do {
                         int alt47=2;
                         int LA47_0 = input.LA(1);
 
                         if ( (LA47_0==ID) ) {
-                            int LA47_2 = input.LA(2);
+                            int LA47_1 = input.LA(2);
 
                             if ( ((synpred2_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.OR))))) ) {
                                 alt47=1;
@@ -5863,9 +5906,9 @@
 
                         switch (alt47) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:819:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
+                    	    // src/main/resources/org/drools/lang/DRL.g:818:5: ( or_key | DOUBLE_PIPE )=> (value= or_key | pipe= DOUBLE_PIPE ) lhs_and
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:819:28: (value= or_key | pipe= DOUBLE_PIPE )
+                    	    // src/main/resources/org/drools/lang/DRL.g:818:28: (value= or_key | pipe= DOUBLE_PIPE )
                     	    int alt46=2;
                     	    int LA46_0 = input.LA(1);
 
@@ -5884,9 +5927,9 @@
                     	    }
                     	    switch (alt46) {
                     	        case 1 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:819:29: value= or_key
+                    	            // src/main/resources/org/drools/lang/DRL.g:818:29: value= or_key
                     	            {
-                    	            pushFollow(FOLLOW_or_key_in_lhs_or2134);
+                    	            pushFollow(FOLLOW_or_key_in_lhs_or2143);
                     	            value=or_key();
 
                     	            state._fsp--;
@@ -5899,9 +5942,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:819:69: pipe= DOUBLE_PIPE
+                    	            // src/main/resources/org/drools/lang/DRL.g:818:69: pipe= DOUBLE_PIPE
                     	            {
-                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2141); if (state.failed) return retval; 
+                    	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_lhs_or2150); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
                     	            if ( state.backtracking==0 ) {
@@ -5916,16 +5959,16 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2152);
-                    	    lhs_and128=lhs_and();
+                    	    pushFollow(FOLLOW_lhs_and_in_lhs_or2161);
+                    	    lhs_and126=lhs_and();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and128.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_and.add(lhs_and126.getTree());
 
 
                     	    // AST REWRITE
-                    	    // elements: lhs_or, lhs_and
+                    	    // elements: lhs_and, lhs_or
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -5935,9 +5978,9 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 822:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	    // 821:3: -> ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:822:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
+                    	        // src/main/resources/org/drools/lang/DRL.g:821:6: ^( VT_OR_INFIX[orToken] $lhs_or lhs_and )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_OR_INFIX, orToken), root_1);
@@ -5990,7 +6033,7 @@
     };
 
     // $ANTLR start "lhs_and"
-    // src/main/resources/org/drools/lang/DRL.g:825:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* );
+    // src/main/resources/org/drools/lang/DRL.g:824:1: lhs_and : ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $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);
@@ -5998,22 +6041,22 @@
         Object root_0 = null;
 
         Token amper=null;
-        Token LEFT_PAREN129=null;
-        Token RIGHT_PAREN131=null;
+        Token LEFT_PAREN127=null;
+        Token RIGHT_PAREN129=null;
         DRLParser.and_key_return and = null;
 
         DRLParser.and_key_return value = null;
 
+        DRLParser.lhs_unary_return lhs_unary128 = null;
+
         DRLParser.lhs_unary_return lhs_unary130 = null;
 
-        DRLParser.lhs_unary_return lhs_unary132 = null;
+        DRLParser.lhs_unary_return lhs_unary131 = null;
 
-        DRLParser.lhs_unary_return lhs_unary133 = null;
 
-
         Object amper_tree=null;
-        Object LEFT_PAREN129_tree=null;
-        Object RIGHT_PAREN131_tree=null;
+        Object LEFT_PAREN127_tree=null;
+        Object RIGHT_PAREN129_tree=null;
         RewriteRuleTokenStream stream_DOUBLE_AMPER=new RewriteRuleTokenStream(adaptor,"token DOUBLE_AMPER");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
@@ -6023,7 +6066,7 @@
         	Token andToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:828:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
+            // src/main/resources/org/drools/lang/DRL.g:827:3: ( ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN ) | ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )* )
             int alt52=2;
             int LA52_0 = input.LA(1);
 
@@ -6056,15 +6099,15 @@
             }
             switch (alt52) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:828:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:827:5: ( LEFT_PAREN and_key )=> LEFT_PAREN and= and_key ( lhs_unary )+ RIGHT_PAREN
                     {
-                    LEFT_PAREN129=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2193); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN129);
+                    LEFT_PAREN127=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_and2202); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN127);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN129, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN127, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_and_key_in_lhs_and2203);
+                    pushFollow(FOLLOW_and_key_in_lhs_and2212);
                     and=and_key();
 
                     state._fsp--;
@@ -6073,7 +6116,7 @@
                     if ( state.backtracking==0 ) {
                       	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:832:4: ( lhs_unary )+
+                    // src/main/resources/org/drools/lang/DRL.g:831:4: ( lhs_unary )+
                     int cnt49=0;
                     loop49:
                     do {
@@ -6087,14 +6130,14 @@
 
                         switch (alt49) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:832:4: lhs_unary
+                    	    // src/main/resources/org/drools/lang/DRL.g:831:4: lhs_unary
                     	    {
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2211);
-                    	    lhs_unary130=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2220);
+                    	    lhs_unary128=lhs_unary();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary130.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary128.getTree());
 
                     	    }
                     	    break;
@@ -6109,16 +6152,16 @@
                         cnt49++;
                     } while (true);
 
-                    RIGHT_PAREN131=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2217); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN131);
+                    RIGHT_PAREN129=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_and2226); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN129);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN131, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN129, DroolsEditorType.SYMBOL);	
                     }
 
 
                     // AST REWRITE
-                    // elements: lhs_unary, RIGHT_PAREN
+                    // elements: RIGHT_PAREN, lhs_unary
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -6128,9 +6171,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 834:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                    // 833:3: -> ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:834:6: ^( VT_AND_PREFIX[$and.start] ( lhs_unary )+ RIGHT_PAREN )
+                        // src/main/resources/org/drools/lang/DRL.g:833:6: ^( VT_AND_PREFIX[$and.start] ( 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);
@@ -6154,17 +6197,17 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:835:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:834:4: ( lhs_unary -> lhs_unary ) ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:835:4: ( lhs_unary -> lhs_unary )
-                    // src/main/resources/org/drools/lang/DRL.g:835:5: lhs_unary
+                    // src/main/resources/org/drools/lang/DRL.g:834:4: ( lhs_unary -> lhs_unary )
+                    // src/main/resources/org/drools/lang/DRL.g:834:5: lhs_unary
                     {
-                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2241);
-                    lhs_unary132=lhs_unary();
+                    pushFollow(FOLLOW_lhs_unary_in_lhs_and2250);
+                    lhs_unary130=lhs_unary();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary132.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary130.getTree());
 
 
                     // AST REWRITE
@@ -6178,7 +6221,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 835:15: -> lhs_unary
+                    // 834:15: -> lhs_unary
                     {
                         adaptor.addChild(root_0, stream_lhs_unary.nextTree());
 
@@ -6187,7 +6230,7 @@
                     retval.tree = root_0;}
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:836:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
+                    // src/main/resources/org/drools/lang/DRL.g:835:3: ( ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary ) )*
                     loop51:
                     do {
                         int alt51=2;
@@ -6215,9 +6258,9 @@
 
                         switch (alt51) {
                     	case 1 :
-                    	    // src/main/resources/org/drools/lang/DRL.g:836:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
+                    	    // src/main/resources/org/drools/lang/DRL.g:835:5: ( and_key | DOUBLE_AMPER )=> (value= and_key | amper= DOUBLE_AMPER ) lhs_unary
                     	    {
-                    	    // src/main/resources/org/drools/lang/DRL.g:836:30: (value= and_key | amper= DOUBLE_AMPER )
+                    	    // src/main/resources/org/drools/lang/DRL.g:835:30: (value= and_key | amper= DOUBLE_AMPER )
                     	    int alt50=2;
                     	    int LA50_0 = input.LA(1);
 
@@ -6236,9 +6279,9 @@
                     	    }
                     	    switch (alt50) {
                     	        case 1 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:836:31: value= and_key
+                    	            // src/main/resources/org/drools/lang/DRL.g:835:31: value= and_key
                     	            {
-                    	            pushFollow(FOLLOW_and_key_in_lhs_and2263);
+                    	            pushFollow(FOLLOW_and_key_in_lhs_and2272);
                     	            value=and_key();
 
                     	            state._fsp--;
@@ -6251,9 +6294,9 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // src/main/resources/org/drools/lang/DRL.g:836:73: amper= DOUBLE_AMPER
+                    	            // src/main/resources/org/drools/lang/DRL.g:835:73: amper= DOUBLE_AMPER
                     	            {
-                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2270); if (state.failed) return retval; 
+                    	            amper=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_lhs_and2279); if (state.failed) return retval; 
                     	            if ( state.backtracking==0 ) stream_DOUBLE_AMPER.add(amper);
 
                     	            if ( state.backtracking==0 ) {
@@ -6268,16 +6311,16 @@
                     	    if ( state.backtracking==0 ) {
                     	      	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	
                     	    }
-                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2281);
-                    	    lhs_unary133=lhs_unary();
+                    	    pushFollow(FOLLOW_lhs_unary_in_lhs_and2290);
+                    	    lhs_unary131=lhs_unary();
 
                     	    state._fsp--;
                     	    if (state.failed) return retval;
-                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary133.getTree());
+                    	    if ( state.backtracking==0 ) stream_lhs_unary.add(lhs_unary131.getTree());
 
 
                     	    // AST REWRITE
-                    	    // elements: lhs_and, lhs_unary
+                    	    // elements: lhs_unary, lhs_and
                     	    // token labels: 
                     	    // rule labels: retval
                     	    // token list labels: 
@@ -6287,9 +6330,9 @@
                     	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     	    root_0 = (Object)adaptor.nil();
-                    	    // 839:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	    // 838:3: -> ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	    {
-                    	        // src/main/resources/org/drools/lang/DRL.g:839:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
+                    	        // src/main/resources/org/drools/lang/DRL.g:838:6: ^( VT_AND_INFIX[andToken] $lhs_and lhs_unary )
                     	        {
                     	        Object root_1 = (Object)adaptor.nil();
                     	        root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_AND_INFIX, andToken), root_1);
@@ -6342,42 +6385,42 @@
     };
 
     // $ANTLR start "lhs_unary"
-    // src/main/resources/org/drools/lang/DRL.g:842:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? ;
+    // src/main/resources/org/drools/lang/DRL.g:841:1: lhs_unary : ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | 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_PAREN139=null;
-        Token RIGHT_PAREN141=null;
-        Token SEMICOLON143=null;
-        DRLParser.lhs_exist_return lhs_exist134 = null;
+        Token LEFT_PAREN137=null;
+        Token RIGHT_PAREN139=null;
+        Token SEMICOLON141=null;
+        DRLParser.lhs_exist_return lhs_exist132 = null;
 
-        DRLParser.lhs_not_binding_return lhs_not_binding135 = null;
+        DRLParser.lhs_not_binding_return lhs_not_binding133 = null;
 
-        DRLParser.lhs_not_return lhs_not136 = null;
+        DRLParser.lhs_not_return lhs_not134 = null;
 
-        DRLParser.lhs_eval_return lhs_eval137 = null;
+        DRLParser.lhs_eval_return lhs_eval135 = null;
 
-        DRLParser.lhs_forall_return lhs_forall138 = null;
+        DRLParser.lhs_forall_return lhs_forall136 = null;
 
-        DRLParser.lhs_or_return lhs_or140 = null;
+        DRLParser.lhs_or_return lhs_or138 = null;
 
-        DRLParser.pattern_source_return pattern_source142 = null;
+        DRLParser.pattern_source_return pattern_source140 = null;
 
 
-        Object LEFT_PAREN139_tree=null;
-        Object RIGHT_PAREN141_tree=null;
-        Object SEMICOLON143_tree=null;
+        Object LEFT_PAREN137_tree=null;
+        Object RIGHT_PAREN139_tree=null;
+        Object SEMICOLON141_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:843:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
-            // src/main/resources/org/drools/lang/DRL.g:843:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:842:2: ( ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )? )
+            // src/main/resources/org/drools/lang/DRL.g:842:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source ) ( ( SEMICOLON )=> SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:843:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
+            // src/main/resources/org/drools/lang/DRL.g:842:4: ( lhs_exist | {...}? => lhs_not_binding | lhs_not | lhs_eval | lhs_forall | LEFT_PAREN lhs_or RIGHT_PAREN | pattern_source )
             int alt53=7;
             int LA53_0 = input.LA(1);
 
@@ -6422,109 +6465,109 @@
             }
             switch (alt53) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:843:6: lhs_exist
+                    // src/main/resources/org/drools/lang/DRL.g:842:6: lhs_exist
                     {
-                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2312);
-                    lhs_exist134=lhs_exist();
+                    pushFollow(FOLLOW_lhs_exist_in_lhs_unary2321);
+                    lhs_exist132=lhs_exist();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist134.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_exist132.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:844:4: {...}? => lhs_not_binding
+                    // src/main/resources/org/drools/lang/DRL.g:843: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_unary2320);
-                    lhs_not_binding135=lhs_not_binding();
+                    pushFollow(FOLLOW_lhs_not_binding_in_lhs_unary2329);
+                    lhs_not_binding133=lhs_not_binding();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding135.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not_binding133.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:845:5: lhs_not
+                    // src/main/resources/org/drools/lang/DRL.g:844:5: lhs_not
                     {
-                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2326);
-                    lhs_not136=lhs_not();
+                    pushFollow(FOLLOW_lhs_not_in_lhs_unary2335);
+                    lhs_not134=lhs_not();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not136.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_not134.getTree());
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:846:5: lhs_eval
+                    // src/main/resources/org/drools/lang/DRL.g:845:5: lhs_eval
                     {
-                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2332);
-                    lhs_eval137=lhs_eval();
+                    pushFollow(FOLLOW_lhs_eval_in_lhs_unary2341);
+                    lhs_eval135=lhs_eval();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval137.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_eval135.getTree());
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:847:5: lhs_forall
+                    // src/main/resources/org/drools/lang/DRL.g:846:5: lhs_forall
                     {
-                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2338);
-                    lhs_forall138=lhs_forall();
+                    pushFollow(FOLLOW_lhs_forall_in_lhs_unary2347);
+                    lhs_forall136=lhs_forall();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall138.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_forall136.getTree());
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:848:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:847:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN139=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2344); if (state.failed) return retval;
+                    LEFT_PAREN137=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_unary2353); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN139, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN137, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2355);
-                    lhs_or140=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_unary2364);
+                    lhs_or138=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or140.getTree());
-                    RIGHT_PAREN141=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2361); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_or138.getTree());
+                    RIGHT_PAREN139=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_unary2370); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN141_tree = (Object)adaptor.create(RIGHT_PAREN141);
-                    adaptor.addChild(root_0, RIGHT_PAREN141_tree);
+                    RIGHT_PAREN139_tree = (Object)adaptor.create(RIGHT_PAREN139);
+                    adaptor.addChild(root_0, RIGHT_PAREN139_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN141, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN139, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:851:5: pattern_source
+                    // src/main/resources/org/drools/lang/DRL.g:850:5: pattern_source
                     {
-                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2369);
-                    pattern_source142=pattern_source();
+                    pushFollow(FOLLOW_pattern_source_in_lhs_unary2378);
+                    pattern_source140=pattern_source();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source142.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, pattern_source140.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:853:3: ( ( SEMICOLON )=> SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:852:3: ( ( SEMICOLON )=> SEMICOLON )?
             int alt54=2;
             int LA54_0 = input.LA(1);
 
@@ -6537,11 +6580,11 @@
             }
             switch (alt54) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:853:4: ( SEMICOLON )=> SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:852:4: ( SEMICOLON )=> SEMICOLON
                     {
-                    SEMICOLON143=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2383); if (state.failed) return retval;
+                    SEMICOLON141=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_lhs_unary2392); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(SEMICOLON143, DroolsEditorType.SYMBOL);	
+                      	emit(SEMICOLON141, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -6578,45 +6621,45 @@
     };
 
     // $ANTLR start "lhs_exist"
-    // src/main/resources/org/drools/lang/DRL.g:856: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 )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:855: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_PAREN146=null;
-        Token RIGHT_PAREN148=null;
-        DRLParser.exists_key_return exists_key144 = null;
+        Token LEFT_PAREN144=null;
+        Token RIGHT_PAREN146=null;
+        DRLParser.exists_key_return exists_key142 = null;
 
+        DRLParser.lhs_or_return lhs_or143 = null;
+
         DRLParser.lhs_or_return lhs_or145 = null;
 
-        DRLParser.lhs_or_return lhs_or147 = null;
+        DRLParser.lhs_pattern_return lhs_pattern147 = null;
 
-        DRLParser.lhs_pattern_return lhs_pattern149 = null;
 
-
-        Object LEFT_PAREN146_tree=null;
-        Object RIGHT_PAREN148_tree=null;
+        Object LEFT_PAREN144_tree=null;
+        Object RIGHT_PAREN146_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_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         RewriteRuleSubtreeStream stream_exists_key=new RewriteRuleSubtreeStream(adaptor,"rule exists_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:857: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 )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:857:4: exists_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // src/main/resources/org/drools/lang/DRL.g:856: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 )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:856: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_exist2399);
-            exists_key144=exists_key();
+            pushFollow(FOLLOW_exists_key_in_lhs_exist2408);
+            exists_key142=exists_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_exists_key.add(exists_key144.getTree());
+            if ( state.backtracking==0 ) stream_exists_key.add(exists_key142.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:859:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // src/main/resources/org/drools/lang/DRL.g:858:10: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt55=3;
             int LA55_0 = input.LA(1);
 
@@ -6640,7 +6683,7 @@
             else if ( (LA55_0==ID) ) {
                 int LA55_2 = input.LA(2);
 
-                if ( (((synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||((synpred6_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||synpred6_DRL()||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS)))))) ) {
+                if ( (((synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EVAL))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||synpred6_DRL()||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.EXISTS))))||((synpred6_DRL()&&(validateNotWithBinding()))&&((validateIdentifierKey(DroolsSoftKeywords.NOT))))||(synpred6_DRL()&&((validateIdentifierKey(DroolsSoftKeywords.FORALL)))))) ) {
                     alt55=1;
                 }
                 else if ( (true) ) {
@@ -6663,50 +6706,50 @@
             }
             switch (alt55) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:859:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // src/main/resources/org/drools/lang/DRL.g:858:12: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
                     {
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2426);
-                    lhs_or145=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2435);
+                    lhs_or143=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or145.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or143.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:860:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:859:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN146=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2433); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN146);
+                    LEFT_PAREN144=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_exist2442); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN144);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN146, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN144, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2441);
-                    lhs_or147=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_exist2450);
+                    lhs_or145=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or147.getTree());
-                    RIGHT_PAREN148=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2448); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN148);
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or145.getTree());
+                    RIGHT_PAREN146=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_exist2457); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN146);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN148, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN146, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:863:12: lhs_pattern
+                    // src/main/resources/org/drools/lang/DRL.g:862:12: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2463);
-                    lhs_pattern149=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_exist2472);
+                    lhs_pattern147=lhs_pattern();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern149.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern147.getTree());
 
                     }
                     break;
@@ -6716,7 +6759,7 @@
 
 
             // AST REWRITE
-            // elements: lhs_pattern, exists_key, lhs_or, RIGHT_PAREN
+            // elements: RIGHT_PAREN, exists_key, lhs_or, lhs_pattern
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -6726,26 +6769,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 865:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 864:10: -> ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:865:13: ^( exists_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // src/main/resources/org/drools/lang/DRL.g:864: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:865:26: ( lhs_or )?
+                // src/main/resources/org/drools/lang/DRL.g:864:26: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:865:34: ( lhs_pattern )?
+                // src/main/resources/org/drools/lang/DRL.g:864:34: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:865:47: ( RIGHT_PAREN )?
+                // src/main/resources/org/drools/lang/DRL.g:864:47: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -6786,36 +6829,36 @@
     };
 
     // $ANTLR start "lhs_not_binding"
-    // src/main/resources/org/drools/lang/DRL.g:868:1: lhs_not_binding : not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) ;
+    // src/main/resources/org/drools/lang/DRL.g:867: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_key150 = null;
+        DRLParser.not_key_return not_key148 = null;
 
-        DRLParser.fact_binding_return fact_binding151 = null;
+        DRLParser.fact_binding_return fact_binding149 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:869:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
-            // src/main/resources/org/drools/lang/DRL.g:869:4: not_key fact_binding
+            // src/main/resources/org/drools/lang/DRL.g:868:2: ( not_key fact_binding -> ^( not_key ^( VT_PATTERN fact_binding ) ) )
+            // src/main/resources/org/drools/lang/DRL.g:868:4: not_key fact_binding
             {
-            pushFollow(FOLLOW_not_key_in_lhs_not_binding2509);
-            not_key150=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not_binding2518);
+            not_key148=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_not_key.add(not_key150.getTree());
-            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2511);
-            fact_binding151=fact_binding();
+            if ( state.backtracking==0 ) stream_not_key.add(not_key148.getTree());
+            pushFollow(FOLLOW_fact_binding_in_lhs_not_binding2520);
+            fact_binding149=fact_binding();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding151.getTree());
+            if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding149.getTree());
 
 
             // AST REWRITE
@@ -6829,14 +6872,14 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 870:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
+            // 869:2: -> ^( not_key ^( VT_PATTERN fact_binding ) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:870:5: ^( not_key ^( VT_PATTERN fact_binding ) )
+                // src/main/resources/org/drools/lang/DRL.g:869:5: ^( not_key ^( VT_PATTERN fact_binding ) )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_not_key.nextNode(), root_1);
 
-                // src/main/resources/org/drools/lang/DRL.g:870:15: ^( VT_PATTERN fact_binding )
+                // src/main/resources/org/drools/lang/DRL.g:869: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);
@@ -6880,45 +6923,45 @@
     };
 
     // $ANTLR start "lhs_not"
-    // src/main/resources/org/drools/lang/DRL.g:873: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 )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:872: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_PAREN154=null;
-        Token RIGHT_PAREN156=null;
-        DRLParser.not_key_return not_key152 = null;
+        Token LEFT_PAREN152=null;
+        Token RIGHT_PAREN154=null;
+        DRLParser.not_key_return not_key150 = null;
 
+        DRLParser.lhs_or_return lhs_or151 = null;
+
         DRLParser.lhs_or_return lhs_or153 = null;
 
-        DRLParser.lhs_or_return lhs_or155 = null;
+        DRLParser.lhs_pattern_return lhs_pattern155 = null;
 
-        DRLParser.lhs_pattern_return lhs_pattern157 = null;
 
-
-        Object LEFT_PAREN154_tree=null;
-        Object RIGHT_PAREN156_tree=null;
+        Object LEFT_PAREN152_tree=null;
+        Object RIGHT_PAREN154_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_or=new RewriteRuleSubtreeStream(adaptor,"rule lhs_or");
         RewriteRuleSubtreeStream stream_not_key=new RewriteRuleSubtreeStream(adaptor,"rule not_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:873: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 )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:873:11: not_key ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // src/main/resources/org/drools/lang/DRL.g:872: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 )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:872: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_not2534);
-            not_key152=not_key();
+            pushFollow(FOLLOW_not_key_in_lhs_not2543);
+            not_key150=not_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_not_key.add(not_key152.getTree());
+            if ( state.backtracking==0 ) stream_not_key.add(not_key150.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:875:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
+            // src/main/resources/org/drools/lang/DRL.g:874:3: ( ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or | LEFT_PAREN lhs_or RIGHT_PAREN | lhs_pattern )
             int alt56=3;
             int LA56_0 = input.LA(1);
 
@@ -6965,53 +7008,53 @@
             }
             switch (alt56) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:875:5: ( LEFT_PAREN ( or_key | and_key ) )=> lhs_or
+                    // src/main/resources/org/drools/lang/DRL.g:874: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_not2556);
-                    lhs_or153=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2565);
+                    lhs_or151=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or153.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or151.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:876:5: LEFT_PAREN lhs_or RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:875:5: LEFT_PAREN lhs_or RIGHT_PAREN
                     {
-                    LEFT_PAREN154=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2563); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN154);
+                    LEFT_PAREN152=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_not2572); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN152);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN154, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
+                      	emit(LEFT_PAREN152, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	
                     }
-                    pushFollow(FOLLOW_lhs_or_in_lhs_not2572);
-                    lhs_or155=lhs_or();
+                    pushFollow(FOLLOW_lhs_or_in_lhs_not2581);
+                    lhs_or153=lhs_or();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or155.getTree());
-                    RIGHT_PAREN156=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2578); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN156);
+                    if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or153.getTree());
+                    RIGHT_PAREN154=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_not2587); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN154);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN156, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN154, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:879:6: lhs_pattern
+                    // src/main/resources/org/drools/lang/DRL.g:878:6: lhs_pattern
                     {
-                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2588);
-                    lhs_pattern157=lhs_pattern();
+                    pushFollow(FOLLOW_lhs_pattern_in_lhs_not2597);
+                    lhs_pattern155=lhs_pattern();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern157.getTree());
+                    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern155.getTree());
 
                     }
                     break;
@@ -7021,7 +7064,7 @@
 
 
             // AST REWRITE
-            // elements: lhs_or, not_key, RIGHT_PAREN, lhs_pattern
+            // elements: RIGHT_PAREN, lhs_or, lhs_pattern, not_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7031,26 +7074,26 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 880:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+            // 879:10: -> ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:880:13: ^( not_key ( lhs_or )? ( lhs_pattern )? ( RIGHT_PAREN )? )
+                // src/main/resources/org/drools/lang/DRL.g:879: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:880:23: ( lhs_or )?
+                // src/main/resources/org/drools/lang/DRL.g:879:23: ( lhs_or )?
                 if ( stream_lhs_or.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_or.nextTree());
 
                 }
                 stream_lhs_or.reset();
-                // src/main/resources/org/drools/lang/DRL.g:880:31: ( lhs_pattern )?
+                // src/main/resources/org/drools/lang/DRL.g:879:31: ( lhs_pattern )?
                 if ( stream_lhs_pattern.hasNext() ) {
                     adaptor.addChild(root_1, stream_lhs_pattern.nextTree());
 
                 }
                 stream_lhs_pattern.reset();
-                // src/main/resources/org/drools/lang/DRL.g:880:44: ( RIGHT_PAREN )?
+                // src/main/resources/org/drools/lang/DRL.g:879:44: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -7091,7 +7134,7 @@
     };
 
     // $ANTLR start "lhs_eval"
-    // src/main/resources/org/drools/lang/DRL.g:883:1: lhs_eval : ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:882: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);
@@ -7106,10 +7149,10 @@
         RewriteRuleSubtreeStream stream_eval_key=new RewriteRuleSubtreeStream(adaptor,"rule eval_key");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:884:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:884:4: ev= eval_key pc= paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:883:2: (ev= eval_key pc= paren_chunk -> ^( eval_key paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:883:4: ev= eval_key pc= paren_chunk
             {
-            pushFollow(FOLLOW_eval_key_in_lhs_eval2627);
+            pushFollow(FOLLOW_eval_key_in_lhs_eval2636);
             ev=eval_key();
 
             state._fsp--;
@@ -7118,7 +7161,7 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_EVAL);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2636);
+            pushFollow(FOLLOW_paren_chunk_in_lhs_eval2645);
             pc=paren_chunk();
 
             state._fsp--;
@@ -7147,9 +7190,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 893:3: -> ^( eval_key paren_chunk )
+            // 892:3: -> ^( eval_key paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:893:6: ^( eval_key paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:892:6: ^( eval_key paren_chunk )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_eval_key.nextNode(), root_1);
@@ -7190,43 +7233,43 @@
     };
 
     // $ANTLR start "lhs_forall"
-    // src/main/resources/org/drools/lang/DRL.g:896:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:895:1: lhs_forall : forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ 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_PAREN159=null;
-        Token RIGHT_PAREN161=null;
-        DRLParser.forall_key_return forall_key158 = null;
+        Token LEFT_PAREN157=null;
+        Token RIGHT_PAREN159=null;
+        DRLParser.forall_key_return forall_key156 = null;
 
-        DRLParser.lhs_pattern_return lhs_pattern160 = null;
+        DRLParser.lhs_pattern_return lhs_pattern158 = null;
 
 
-        Object LEFT_PAREN159_tree=null;
-        Object RIGHT_PAREN161_tree=null;
+        Object LEFT_PAREN157_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");
         RewriteRuleSubtreeStream stream_forall_key=new RewriteRuleSubtreeStream(adaptor,"rule forall_key");
         RewriteRuleSubtreeStream stream_lhs_pattern=new RewriteRuleSubtreeStream(adaptor,"rule lhs_pattern");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:897:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:897:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:896:2: ( forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:896:4: forall_key LEFT_PAREN ( lhs_pattern )+ RIGHT_PAREN
             {
-            pushFollow(FOLLOW_forall_key_in_lhs_forall2663);
-            forall_key158=forall_key();
+            pushFollow(FOLLOW_forall_key_in_lhs_forall2672);
+            forall_key156=forall_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_forall_key.add(forall_key158.getTree());
-            LEFT_PAREN159=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2668); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN159);
+            if ( state.backtracking==0 ) stream_forall_key.add(forall_key156.getTree());
+            LEFT_PAREN157=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_lhs_forall2677); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN157);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN159, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN157, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:899:4: ( lhs_pattern )+
+            // src/main/resources/org/drools/lang/DRL.g:898:4: ( lhs_pattern )+
             int cnt57=0;
             loop57:
             do {
@@ -7240,14 +7283,14 @@
 
                 switch (alt57) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:899:4: lhs_pattern
+            	    // src/main/resources/org/drools/lang/DRL.g:898:4: lhs_pattern
             	    {
-            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2676);
-            	    lhs_pattern160=lhs_pattern();
+            	    pushFollow(FOLLOW_lhs_pattern_in_lhs_forall2685);
+            	    lhs_pattern158=lhs_pattern();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern160.getTree());
+            	    if ( state.backtracking==0 ) stream_lhs_pattern.add(lhs_pattern158.getTree());
 
             	    }
             	    break;
@@ -7262,16 +7305,16 @@
                 cnt57++;
             } while (true);
 
-            RIGHT_PAREN161=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2682); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN161);
+            RIGHT_PAREN159=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_lhs_forall2691); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN159);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN161, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN159, DroolsEditorType.SYMBOL);	
             }
 
 
             // AST REWRITE
-            // elements: forall_key, RIGHT_PAREN, lhs_pattern
+            // elements: forall_key, lhs_pattern, RIGHT_PAREN
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7281,9 +7324,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 901:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+            // 900:3: -> ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:901:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:900:6: ^( forall_key ( lhs_pattern )+ RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_forall_key.nextNode(), root_1);
@@ -7332,43 +7375,43 @@
     };
 
     // $ANTLR start "pattern_source"
-    // src/main/resources/org/drools/lang/DRL.g:904:1: pattern_source : lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? ;
+    // src/main/resources/org/drools/lang/DRL.g:903: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 FROM164=null;
-        DRLParser.lhs_pattern_return lhs_pattern162 = null;
+        Token FROM162=null;
+        DRLParser.lhs_pattern_return lhs_pattern160 = null;
 
-        DRLParser.over_clause_return over_clause163 = null;
+        DRLParser.over_clause_return over_clause161 = null;
 
-        DRLParser.accumulate_statement_return accumulate_statement165 = null;
+        DRLParser.accumulate_statement_return accumulate_statement163 = null;
 
-        DRLParser.collect_statement_return collect_statement166 = null;
+        DRLParser.collect_statement_return collect_statement164 = null;
 
-        DRLParser.entrypoint_statement_return entrypoint_statement167 = null;
+        DRLParser.entrypoint_statement_return entrypoint_statement165 = null;
 
-        DRLParser.from_source_return from_source168 = null;
+        DRLParser.from_source_return from_source166 = null;
 
 
-        Object FROM164_tree=null;
+        Object FROM162_tree=null;
 
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:907:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
-            // src/main/resources/org/drools/lang/DRL.g:907:4: lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // src/main/resources/org/drools/lang/DRL.g:906:2: ( lhs_pattern ( over_clause )? ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )? )
+            // src/main/resources/org/drools/lang/DRL.g:906: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_source2718);
-            lhs_pattern162=lhs_pattern();
+            pushFollow(FOLLOW_lhs_pattern_in_pattern_source2727);
+            lhs_pattern160=lhs_pattern();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern162.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:908:3: ( over_clause )?
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, lhs_pattern160.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:907:3: ( over_clause )?
             int alt58=2;
             int LA58_0 = input.LA(1);
 
@@ -7377,21 +7420,21 @@
             }
             switch (alt58) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:908:3: over_clause
+                    // src/main/resources/org/drools/lang/DRL.g:907:3: over_clause
                     {
-                    pushFollow(FOLLOW_over_clause_in_pattern_source2722);
-                    over_clause163=over_clause();
+                    pushFollow(FOLLOW_over_clause_in_pattern_source2731);
+                    over_clause161=over_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause163.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_clause161.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:909:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
+            // src/main/resources/org/drools/lang/DRL.g:908:3: ( FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source ) )?
             int alt60=2;
             int LA60_0 = input.LA(1);
 
@@ -7400,18 +7443,18 @@
             }
             switch (alt60) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:910:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // src/main/resources/org/drools/lang/DRL.g:909:4: FROM ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     {
-                    FROM164=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source2732); if (state.failed) return retval;
+                    FROM162=(Token)match(input,FROM,FOLLOW_FROM_in_pattern_source2741); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    FROM164_tree = (Object)adaptor.create(FROM164);
-                    root_0 = (Object)adaptor.becomeRoot(FROM164_tree, root_0);
+                    FROM162_tree = (Object)adaptor.create(FROM162);
+                    root_0 = (Object)adaptor.becomeRoot(FROM162_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(FROM164, DroolsEditorType.KEYWORD);
+                      	emit(FROM162, DroolsEditorType.KEYWORD);
                       			emit(Location.LOCATION_LHS_FROM);	
                     }
-                    // src/main/resources/org/drools/lang/DRL.g:913:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
+                    // src/main/resources/org/drools/lang/DRL.g:912:11: ( accumulate_statement | collect_statement | entrypoint_statement | from_source )
                     int alt59=4;
                     switch ( input.LA(1) ) {
                     case ACCUMULATE:
@@ -7431,7 +7474,7 @@
                         if ( (LA59_3==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))))) {
                             alt59=3;
                         }
-                        else if ( ((LA59_3>=SEMICOLON && LA59_3<=DOT)||LA59_3==END||(LA59_3>=LEFT_PAREN && LA59_3<=RIGHT_PAREN)||(LA59_3>=DOUBLE_PIPE && LA59_3<=DOUBLE_AMPER)||LA59_3==INIT||LA59_3==THEN) ) {
+                        else if ( ((LA59_3>=SEMICOLON && LA59_3<=DOT)||(LA59_3>=LEFT_PAREN && LA59_3<=RIGHT_PAREN)||(LA59_3>=DOUBLE_PIPE && LA59_3<=DOUBLE_AMPER)||LA59_3==THEN) ) {
                             alt59=4;
                         }
                         else {
@@ -7453,50 +7496,50 @@
 
                     switch (alt59) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:913:14: accumulate_statement
+                            // src/main/resources/org/drools/lang/DRL.g:912:14: accumulate_statement
                             {
-                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2752);
-                            accumulate_statement165=accumulate_statement();
+                            pushFollow(FOLLOW_accumulate_statement_in_pattern_source2761);
+                            accumulate_statement163=accumulate_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement165.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_statement163.getTree());
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:914:15: collect_statement
+                            // src/main/resources/org/drools/lang/DRL.g:913:15: collect_statement
                             {
-                            pushFollow(FOLLOW_collect_statement_in_pattern_source2768);
-                            collect_statement166=collect_statement();
+                            pushFollow(FOLLOW_collect_statement_in_pattern_source2777);
+                            collect_statement164=collect_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement166.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, collect_statement164.getTree());
 
                             }
                             break;
                         case 3 :
-                            // src/main/resources/org/drools/lang/DRL.g:915:15: entrypoint_statement
+                            // src/main/resources/org/drools/lang/DRL.g:914:15: entrypoint_statement
                             {
-                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2785);
-                            entrypoint_statement167=entrypoint_statement();
+                            pushFollow(FOLLOW_entrypoint_statement_in_pattern_source2794);
+                            entrypoint_statement165=entrypoint_statement();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement167.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, entrypoint_statement165.getTree());
 
                             }
                             break;
                         case 4 :
-                            // src/main/resources/org/drools/lang/DRL.g:916:15: from_source
+                            // src/main/resources/org/drools/lang/DRL.g:915:15: from_source
                             {
-                            pushFollow(FOLLOW_from_source_in_pattern_source2801);
-                            from_source168=from_source();
+                            pushFollow(FOLLOW_from_source_in_pattern_source2810);
+                            from_source166=from_source();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source168.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, from_source166.getTree());
 
                             }
                             break;
@@ -7554,44 +7597,44 @@
     };
 
     // $ANTLR start "over_clause"
-    // src/main/resources/org/drools/lang/DRL.g:934:1: over_clause : OVER over_elements ( COMMA over_elements )* ;
+    // src/main/resources/org/drools/lang/DRL.g:933: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 OVER169=null;
-        Token COMMA171=null;
+        Token OVER167=null;
+        Token COMMA169=null;
+        DRLParser.over_elements_return over_elements168 = null;
+
         DRLParser.over_elements_return over_elements170 = null;
 
-        DRLParser.over_elements_return over_elements172 = null;
 
+        Object OVER167_tree=null;
+        Object COMMA169_tree=null;
 
-        Object OVER169_tree=null;
-        Object COMMA171_tree=null;
-
         try {
-            // src/main/resources/org/drools/lang/DRL.g:935:2: ( OVER over_elements ( COMMA over_elements )* )
-            // src/main/resources/org/drools/lang/DRL.g:935:4: OVER over_elements ( COMMA over_elements )*
+            // src/main/resources/org/drools/lang/DRL.g:934:2: ( OVER over_elements ( COMMA over_elements )* )
+            // src/main/resources/org/drools/lang/DRL.g:934:4: OVER over_elements ( COMMA over_elements )*
             {
             root_0 = (Object)adaptor.nil();
 
-            OVER169=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause2833); if (state.failed) return retval;
+            OVER167=(Token)match(input,OVER,FOLLOW_OVER_in_over_clause2842); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            OVER169_tree = (Object)adaptor.create(OVER169);
-            root_0 = (Object)adaptor.becomeRoot(OVER169_tree, root_0);
+            OVER167_tree = (Object)adaptor.create(OVER167);
+            root_0 = (Object)adaptor.becomeRoot(OVER167_tree, root_0);
             }
             if ( state.backtracking==0 ) {
-              	emit(OVER169, DroolsEditorType.KEYWORD);	
+              	emit(OVER167, DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_over_elements_in_over_clause2838);
-            over_elements170=over_elements();
+            pushFollow(FOLLOW_over_elements_in_over_clause2847);
+            over_elements168=over_elements();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements170.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:936:4: ( COMMA over_elements )*
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements168.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:935:4: ( COMMA over_elements )*
             loop61:
             do {
                 int alt61=2;
@@ -7616,18 +7659,18 @@
 
                 switch (alt61) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:936:5: COMMA over_elements
+            	    // src/main/resources/org/drools/lang/DRL.g:935:5: COMMA over_elements
             	    {
-            	    COMMA171=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause2845); if (state.failed) return retval;
+            	    COMMA169=(Token)match(input,COMMA,FOLLOW_COMMA_in_over_clause2854); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA171, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA169, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_over_elements_in_over_clause2850);
-            	    over_elements172=over_elements();
+            	    pushFollow(FOLLOW_over_elements_in_over_clause2859);
+            	    over_elements170=over_elements();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements172.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, over_elements170.getTree());
 
             	    }
             	    break;
@@ -7666,7 +7709,7 @@
     };
 
     // $ANTLR start "over_elements"
-    // src/main/resources/org/drools/lang/DRL.g:939:1: over_elements : id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:938: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);
@@ -7675,48 +7718,48 @@
 
         Token id1=null;
         Token id2=null;
-        Token COLON173=null;
-        DRLParser.paren_chunk_return paren_chunk174 = null;
+        Token COLON171=null;
+        DRLParser.paren_chunk_return paren_chunk172 = null;
 
 
         Object id1_tree=null;
         Object id2_tree=null;
-        Object COLON173_tree=null;
+        Object COLON171_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 {
-            // src/main/resources/org/drools/lang/DRL.g:940:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:940:4: id1= ID COLON id2= ID paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:939:2: (id1= ID COLON id2= ID paren_chunk -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:939:4: id1= ID COLON id2= ID paren_chunk
             {
-            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements2865); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_over_elements2874); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
             if ( state.backtracking==0 ) {
               	emit(id1, DroolsEditorType.IDENTIFIER);	
             }
-            COLON173=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements2872); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLON.add(COLON173);
+            COLON171=(Token)match(input,COLON,FOLLOW_COLON_in_over_elements2881); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON171);
 
             if ( state.backtracking==0 ) {
-              	emit(COLON173, DroolsEditorType.SYMBOL);	
+              	emit(COLON171, DroolsEditorType.SYMBOL);	
             }
-            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements2881); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_over_elements2890); 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_elements2888);
-            paren_chunk174=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_over_elements2897);
+            paren_chunk172=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk174.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk172.getTree());
 
 
             // AST REWRITE
-            // elements: id1, id2, paren_chunk
+            // elements: id1, paren_chunk, id2
             // token labels: id1, id2
             // rule labels: retval
             // token list labels: 
@@ -7728,9 +7771,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 944:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+            // 943:2: -> ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:944:5: ^( VT_BEHAVIOR $id1 $id2 paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:943: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);
@@ -7773,28 +7816,28 @@
     };
 
     // $ANTLR start "accumulate_statement"
-    // src/main/resources/org/drools/lang/DRL.g:947: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 ) ;
+    // src/main/resources/org/drools/lang/DRL.g:946: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 ACCUMULATE175=null;
-        Token LEFT_PAREN176=null;
-        Token COMMA178=null;
-        Token RIGHT_PAREN181=null;
-        DRLParser.lhs_or_return lhs_or177 = null;
+        Token ACCUMULATE173=null;
+        Token LEFT_PAREN174=null;
+        Token COMMA176=null;
+        Token RIGHT_PAREN179=null;
+        DRLParser.lhs_or_return lhs_or175 = null;
 
-        DRLParser.accumulate_init_clause_return accumulate_init_clause179 = null;
+        DRLParser.accumulate_init_clause_return accumulate_init_clause177 = null;
 
-        DRLParser.accumulate_id_clause_return accumulate_id_clause180 = null;
+        DRLParser.accumulate_id_clause_return accumulate_id_clause178 = null;
 
 
-        Object ACCUMULATE175_tree=null;
-        Object LEFT_PAREN176_tree=null;
-        Object COMMA178_tree=null;
-        Object RIGHT_PAREN181_tree=null;
+        Object ACCUMULATE173_tree=null;
+        Object LEFT_PAREN174_tree=null;
+        Object COMMA176_tree=null;
+        Object RIGHT_PAREN179_tree=null;
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
         RewriteRuleTokenStream stream_ACCUMULATE=new RewriteRuleTokenStream(adaptor,"token ACCUMULATE");
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
@@ -7803,31 +7846,31 @@
         RewriteRuleSubtreeStream stream_accumulate_init_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_init_clause");
         RewriteRuleSubtreeStream stream_accumulate_id_clause=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_id_clause");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:948: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 ) )
-            // src/main/resources/org/drools/lang/DRL.g:948:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:947: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 ) )
+            // src/main/resources/org/drools/lang/DRL.g:947:4: ACCUMULATE LEFT_PAREN lhs_or ( COMMA )? ( accumulate_init_clause | accumulate_id_clause ) RIGHT_PAREN
             {
-            ACCUMULATE175=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2914); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE175);
+            ACCUMULATE173=(Token)match(input,ACCUMULATE,FOLLOW_ACCUMULATE_in_accumulate_statement2923); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ACCUMULATE.add(ACCUMULATE173);
 
             if ( state.backtracking==0 ) {
-              	emit(ACCUMULATE175, DroolsEditorType.KEYWORD);	
+              	emit(ACCUMULATE173, DroolsEditorType.KEYWORD);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	
             }
-            LEFT_PAREN176=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2923); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN176);
+            LEFT_PAREN174=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_statement2932); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN174);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN176, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN174, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2931);
-            lhs_or177=lhs_or();
+            pushFollow(FOLLOW_lhs_or_in_accumulate_statement2940);
+            lhs_or175=lhs_or();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or177.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:952:3: ( COMMA )?
+            if ( state.backtracking==0 ) stream_lhs_or.add(lhs_or175.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:951:3: ( COMMA )?
             int alt62=2;
             int LA62_0 = input.LA(1);
 
@@ -7836,10 +7879,10 @@
             }
             switch (alt62) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:952:3: COMMA
+                    // src/main/resources/org/drools/lang/DRL.g:951:3: COMMA
                     {
-                    COMMA178=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2936); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA178);
+                    COMMA176=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_statement2945); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_COMMA.add(COMMA176);
 
 
                     }
@@ -7848,18 +7891,29 @@
             }
 
             if ( state.backtracking==0 ) {
-              	emit(COMMA178, DroolsEditorType.SYMBOL);	
+              	emit(COMMA176, DroolsEditorType.SYMBOL);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:953:3: ( accumulate_init_clause | accumulate_id_clause )
+            // src/main/resources/org/drools/lang/DRL.g:952:3: ( accumulate_init_clause | accumulate_id_clause )
             int alt63=2;
             int LA63_0 = input.LA(1);
 
-            if ( (LA63_0==INIT) ) {
-                alt63=1;
+            if ( (LA63_0==ID) ) {
+                int LA63_1 = input.LA(2);
+
+                if ( (((validateIdentifierKey(DroolsSoftKeywords.INIT)))) ) {
+                    alt63=1;
+                }
+                else if ( (true) ) {
+                    alt63=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return retval;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 63, 1, input);
+
+                    throw nvae;
+                }
             }
-            else if ( (LA63_0==ID) ) {
-                alt63=2;
-            }
             else {
                 if (state.backtracking>0) {state.failed=true; return retval;}
                 NoViableAltException nvae =
@@ -7869,37 +7923,37 @@
             }
             switch (alt63) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:953:5: accumulate_init_clause
+                    // src/main/resources/org/drools/lang/DRL.g:952:5: accumulate_init_clause
                     {
-                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2946);
-                    accumulate_init_clause179=accumulate_init_clause();
+                    pushFollow(FOLLOW_accumulate_init_clause_in_accumulate_statement2955);
+                    accumulate_init_clause177=accumulate_init_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause179.getTree());
+                    if ( state.backtracking==0 ) stream_accumulate_init_clause.add(accumulate_init_clause177.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:954:5: accumulate_id_clause
+                    // src/main/resources/org/drools/lang/DRL.g:953:5: accumulate_id_clause
                     {
-                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2952);
-                    accumulate_id_clause180=accumulate_id_clause();
+                    pushFollow(FOLLOW_accumulate_id_clause_in_accumulate_statement2961);
+                    accumulate_id_clause178=accumulate_id_clause();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause180.getTree());
+                    if ( state.backtracking==0 ) stream_accumulate_id_clause.add(accumulate_id_clause178.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN181=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2960); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN181);
+            RIGHT_PAREN179=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_statement2969); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN179);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN181, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN179, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
@@ -7907,7 +7961,7 @@
 
 
             // AST REWRITE
-            // elements: RIGHT_PAREN, accumulate_id_clause, ACCUMULATE, accumulate_init_clause, lhs_or
+            // elements: lhs_or, ACCUMULATE, RIGHT_PAREN, accumulate_init_clause, accumulate_id_clause
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -7917,21 +7971,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 958:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+            // 957:3: -> ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:958:6: ^( ACCUMULATE lhs_or ( accumulate_init_clause )? ( accumulate_id_clause )? RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:957: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());
-                // src/main/resources/org/drools/lang/DRL.g:958:26: ( accumulate_init_clause )?
+                // src/main/resources/org/drools/lang/DRL.g:957:26: ( accumulate_init_clause )?
                 if ( stream_accumulate_init_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_init_clause.nextTree());
 
                 }
                 stream_accumulate_init_clause.reset();
-                // src/main/resources/org/drools/lang/DRL.g:958:50: ( accumulate_id_clause )?
+                // src/main/resources/org/drools/lang/DRL.g:957:50: ( accumulate_id_clause )?
                 if ( stream_accumulate_id_clause.hasNext() ) {
                     adaptor.addChild(root_1, stream_accumulate_id_clause.nextTree());
 
@@ -7973,7 +8027,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // src/main/resources/org/drools/lang/DRL.g:962:1: accumulate_init_clause : INIT 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 $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) ;
+    // src/main/resources/org/drools/lang/DRL.g:961: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);
@@ -7983,7 +8037,6 @@
         Token cm1=null;
         Token cm2=null;
         Token cm3=null;
-        Token INIT182=null;
         DRLParser.accumulate_paren_chunk_return pc1 = null;
 
         DRLParser.accumulate_paren_chunk_return pc2 = null;
@@ -7994,42 +8047,43 @@
 
         DRLParser.accumulate_paren_chunk_return pc4 = null;
 
-        DRLParser.action_key_return action_key183 = null;
+        DRLParser.init_key_return init_key180 = null;
 
-        DRLParser.reverse_key_return reverse_key184 = null;
+        DRLParser.action_key_return action_key181 = null;
 
+        DRLParser.reverse_key_return reverse_key182 = null;
 
+
         Object cm1_tree=null;
         Object cm2_tree=null;
         Object cm3_tree=null;
-        Object INIT182_tree=null;
         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
-        RewriteRuleTokenStream stream_INIT=new RewriteRuleTokenStream(adaptor,"token INIT");
         RewriteRuleSubtreeStream stream_accumulate_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule accumulate_paren_chunk");
         RewriteRuleSubtreeStream stream_reverse_key=new RewriteRuleSubtreeStream(adaptor,"rule reverse_key");
         RewriteRuleSubtreeStream stream_result_key=new RewriteRuleSubtreeStream(adaptor,"rule result_key");
+        RewriteRuleSubtreeStream stream_init_key=new RewriteRuleSubtreeStream(adaptor,"rule init_key");
         RewriteRuleSubtreeStream stream_action_key=new RewriteRuleSubtreeStream(adaptor,"rule action_key");
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:965:2: ( INIT 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 $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) ) )
-            // src/main/resources/org/drools/lang/DRL.g:965:4: INIT 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]
+            // src/main/resources/org/drools/lang/DRL.g:964: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) ) )
+            // src/main/resources/org/drools/lang/DRL.g:964: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]
             {
-            INIT182=(Token)match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause3006); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_INIT.add(INIT182);
+            pushFollow(FOLLOW_init_key_in_accumulate_init_clause3015);
+            init_key180=init_key();
 
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) stream_init_key.add(init_key180.getTree());
             if ( state.backtracking==0 ) {
-              	emit(INIT182, DroolsEditorType.KEYWORD);	
-            }
-            if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3017);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3025);
             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());
-            // src/main/resources/org/drools/lang/DRL.g:967:84: (cm1= COMMA )?
+            // src/main/resources/org/drools/lang/DRL.g:966:84: (cm1= COMMA )?
             int alt64=2;
             int LA64_0 = input.LA(1);
 
@@ -8038,9 +8092,9 @@
             }
             switch (alt64) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:967:84: cm1= COMMA
+                    // src/main/resources/org/drools/lang/DRL.g:966:84: cm1= COMMA
                     {
-                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3022); if (state.failed) return retval; 
+                    cm1=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3030); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm1);
 
 
@@ -8055,19 +8109,19 @@
             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_clause3033);
-            action_key183=action_key();
+            pushFollow(FOLLOW_action_key_in_accumulate_init_clause3041);
+            action_key181=action_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_action_key.add(action_key183.getTree());
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3037);
+            if ( state.backtracking==0 ) stream_action_key.add(action_key181.getTree());
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3045);
             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());
-            // src/main/resources/org/drools/lang/DRL.g:969:97: (cm2= COMMA )?
+            // src/main/resources/org/drools/lang/DRL.g:968:97: (cm2= COMMA )?
             int alt65=2;
             int LA65_0 = input.LA(1);
 
@@ -8076,9 +8130,9 @@
             }
             switch (alt65) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:969:97: cm2= COMMA
+                    // src/main/resources/org/drools/lang/DRL.g:968:97: cm2= COMMA
                     {
-                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3042); if (state.failed) return retval; 
+                    cm2=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3050); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_COMMA.add(cm2);
 
 
@@ -8093,7 +8147,7 @@
             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);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:971:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
+            // src/main/resources/org/drools/lang/DRL.g:970:2: ( reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )? )?
             int alt67=2;
             int LA67_0 = input.LA(1);
 
@@ -8106,21 +8160,21 @@
             }
             switch (alt67) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:971:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
+                    // src/main/resources/org/drools/lang/DRL.g:970:4: reverse_key pc3= accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] (cm3= COMMA )?
                     {
-                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3054);
-                    reverse_key184=reverse_key();
+                    pushFollow(FOLLOW_reverse_key_in_accumulate_init_clause3062);
+                    reverse_key182=reverse_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key184.getTree());
-                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3058);
+                    if ( state.backtracking==0 ) stream_reverse_key.add(reverse_key182.getTree());
+                    pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3066);
                     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());
-                    // src/main/resources/org/drools/lang/DRL.g:971:100: (cm3= COMMA )?
+                    // src/main/resources/org/drools/lang/DRL.g:970:100: (cm3= COMMA )?
                     int alt66=2;
                     int LA66_0 = input.LA(1);
 
@@ -8129,9 +8183,9 @@
                     }
                     switch (alt66) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:971:100: cm3= COMMA
+                            // src/main/resources/org/drools/lang/DRL.g:970:100: cm3= COMMA
                             {
-                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3063); if (state.failed) return retval; 
+                            cm3=(Token)match(input,COMMA,FOLLOW_COMMA_in_accumulate_init_clause3071); if (state.failed) return retval; 
                             if ( state.backtracking==0 ) stream_COMMA.add(cm3);
 
 
@@ -8157,7 +8211,7 @@
               		}	
               	
             }
-            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3079);
+            pushFollow(FOLLOW_result_key_in_accumulate_init_clause3087);
             res1=result_key();
 
             state._fsp--;
@@ -8166,7 +8220,7 @@
             if ( state.backtracking==0 ) {
               	emit((res1!=null?((Token)res1.start):null), DroolsEditorType.KEYWORD);	
             }
-            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3085);
+            pushFollow(FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3093);
             pc4=accumulate_paren_chunk(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
 
             state._fsp--;
@@ -8175,7 +8229,7 @@
 
 
             // AST REWRITE
-            // elements: pc4, pc3, result_key, pc1, action_key, reverse_key, INIT, pc2
+            // elements: reverse_key, action_key, pc2, pc4, result_key, pc1, init_key, pc3
             // token labels: 
             // rule labels: pc2, pc3, pc4, pc1, retval
             // token list labels: 
@@ -8189,23 +8243,23 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 980:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+            // 979:2: -> ^( VT_ACCUMULATE_INIT_CLAUSE ^( init_key $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
             {
-                // src/main/resources/org/drools/lang/DRL.g:980:5: ^( VT_ACCUMULATE_INIT_CLAUSE ^( INIT $pc1) ^( action_key $pc2) ( ^( reverse_key $pc3) )? ^( result_key $pc4) )
+                // src/main/resources/org/drools/lang/DRL.g:979: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);
 
-                // src/main/resources/org/drools/lang/DRL.g:980:33: ^( INIT $pc1)
+                // src/main/resources/org/drools/lang/DRL.g:979:33: ^( init_key $pc1)
                 {
                 Object root_2 = (Object)adaptor.nil();
-                root_2 = (Object)adaptor.becomeRoot(stream_INIT.nextNode(), root_2);
+                root_2 = (Object)adaptor.becomeRoot(stream_init_key.nextNode(), root_2);
 
                 adaptor.addChild(root_2, stream_pc1.nextTree());
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // src/main/resources/org/drools/lang/DRL.g:980:46: ^( action_key $pc2)
+                // src/main/resources/org/drools/lang/DRL.g:979:50: ^( action_key $pc2)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_action_key.nextNode(), root_2);
@@ -8214,9 +8268,9 @@
 
                 adaptor.addChild(root_1, root_2);
                 }
-                // src/main/resources/org/drools/lang/DRL.g:980:65: ( ^( reverse_key $pc3) )?
-                if ( stream_pc3.hasNext()||stream_reverse_key.hasNext() ) {
-                    // src/main/resources/org/drools/lang/DRL.g:980:65: ^( reverse_key $pc3)
+                // src/main/resources/org/drools/lang/DRL.g:979:69: ( ^( reverse_key $pc3) )?
+                if ( stream_reverse_key.hasNext()||stream_pc3.hasNext() ) {
+                    // src/main/resources/org/drools/lang/DRL.g:979:69: ^( reverse_key $pc3)
                     {
                     Object root_2 = (Object)adaptor.nil();
                     root_2 = (Object)adaptor.becomeRoot(stream_reverse_key.nextNode(), root_2);
@@ -8227,9 +8281,9 @@
                     }
 
                 }
+                stream_reverse_key.reset();
                 stream_pc3.reset();
-                stream_reverse_key.reset();
-                // src/main/resources/org/drools/lang/DRL.g:980:86: ^( result_key $pc4)
+                // src/main/resources/org/drools/lang/DRL.g:979:90: ^( result_key $pc4)
                 {
                 Object root_2 = (Object)adaptor.nil();
                 root_2 = (Object)adaptor.becomeRoot(stream_result_key.nextNode(), root_2);
@@ -8286,7 +8340,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:993:1: accumulate_paren_chunk[int locationType] : pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:992: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);
@@ -8301,10 +8355,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:996:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:996:5: pc= accumulate_paren_chunk_data[false,$locationType]
+            // src/main/resources/org/drools/lang/DRL.g:995:3: (pc= accumulate_paren_chunk_data[false,$locationType] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:995:5: pc= accumulate_paren_chunk_data[false,$locationType]
             {
-            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3143);
+            pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3151);
             pc=accumulate_paren_chunk_data(false, locationType);
 
             state._fsp--;
@@ -8326,7 +8380,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 997:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 996:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -8361,7 +8415,7 @@
     };
 
     // $ANTLR start "accumulate_paren_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1000: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 ;
+    // src/main/resources/org/drools/lang/DRL.g:999: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);
@@ -8371,7 +8425,7 @@
         Token lp1=null;
         Token any=null;
         Token rp1=null;
-        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data185 = null;
+        DRLParser.accumulate_paren_chunk_data_return accumulate_paren_chunk_data183 = null;
 
 
         Object lp1_tree=null;
@@ -8379,12 +8433,12 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1001:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1001:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1000:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )* rp1= RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1000: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_data3167); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3175); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -8398,7 +8452,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1009:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
+            // src/main/resources/org/drools/lang/DRL.g:1008:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | accumulate_paren_chunk_data[true,-1] )*
             loop68:
             do {
                 int alt68=3;
@@ -8414,7 +8468,7 @@
 
                 switch (alt68) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1009:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // src/main/resources/org/drools/lang/DRL.g:1008: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) ) {
@@ -8435,14 +8489,14 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1009:87: accumulate_paren_chunk_data[true,-1]
+            	    // src/main/resources/org/drools/lang/DRL.g:1008:87: accumulate_paren_chunk_data[true,-1]
             	    {
-            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3195);
-            	    accumulate_paren_chunk_data185=accumulate_paren_chunk_data(true, -1);
+            	    pushFollow(FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3203);
+            	    accumulate_paren_chunk_data183=accumulate_paren_chunk_data(true, -1);
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data185.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, accumulate_paren_chunk_data183.getTree());
 
             	    }
             	    break;
@@ -8452,7 +8506,7 @@
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3206); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3214); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -8494,36 +8548,36 @@
     };
 
     // $ANTLR start "accumulate_id_clause"
-    // src/main/resources/org/drools/lang/DRL.g:1019:1: accumulate_id_clause : ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1018: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 ID186=null;
-        DRLParser.paren_chunk_return paren_chunk187 = null;
+        Token ID184=null;
+        DRLParser.paren_chunk_return paren_chunk185 = null;
 
 
-        Object ID186_tree=null;
+        Object ID184_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1020:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1020:4: ID paren_chunk
+            // src/main/resources/org/drools/lang/DRL.g:1019:2: ( ID paren_chunk -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:1019:4: ID paren_chunk
             {
-            ID186=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3222); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID186);
+            ID184=(Token)match(input,ID,FOLLOW_ID_in_accumulate_id_clause3230); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID184);
 
             if ( state.backtracking==0 ) {
-              	emit(ID186, DroolsEditorType.IDENTIFIER);	
+              	emit(ID184, DroolsEditorType.IDENTIFIER);	
             }
-            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3228);
-            paren_chunk187=paren_chunk();
+            pushFollow(FOLLOW_paren_chunk_in_accumulate_id_clause3236);
+            paren_chunk185=paren_chunk();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk187.getTree());
+            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk185.getTree());
 
 
             // AST REWRITE
@@ -8537,9 +8591,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1022:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+            // 1021:2: -> ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1022:5: ^( VT_ACCUMULATE_ID_CLAUSE ID paren_chunk )
+                // src/main/resources/org/drools/lang/DRL.g:1021: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);
@@ -8581,56 +8635,56 @@
     };
 
     // $ANTLR start "collect_statement"
-    // src/main/resources/org/drools/lang/DRL.g:1025:1: collect_statement : COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1024: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 COLLECT188=null;
-        Token LEFT_PAREN189=null;
-        Token RIGHT_PAREN191=null;
-        DRLParser.pattern_source_return pattern_source190 = null;
+        Token COLLECT186=null;
+        Token LEFT_PAREN187=null;
+        Token RIGHT_PAREN189=null;
+        DRLParser.pattern_source_return pattern_source188 = null;
 
 
-        Object COLLECT188_tree=null;
-        Object LEFT_PAREN189_tree=null;
-        Object RIGHT_PAREN191_tree=null;
+        Object COLLECT186_tree=null;
+        Object LEFT_PAREN187_tree=null;
+        Object RIGHT_PAREN189_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 {
-            // src/main/resources/org/drools/lang/DRL.g:1026:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1026:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1025:2: ( COLLECT LEFT_PAREN pattern_source RIGHT_PAREN -> ^( COLLECT pattern_source RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:1025:4: COLLECT LEFT_PAREN pattern_source RIGHT_PAREN
             {
-            COLLECT188=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3250); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT188);
+            COLLECT186=(Token)match(input,COLLECT,FOLLOW_COLLECT_in_collect_statement3258); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLLECT.add(COLLECT186);
 
             if ( state.backtracking==0 ) {
-              	emit(COLLECT188, DroolsEditorType.KEYWORD);	
+              	emit(COLLECT186, DroolsEditorType.KEYWORD);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            LEFT_PAREN189=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3259); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN189);
+            LEFT_PAREN187=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_collect_statement3267); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN187);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN189, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN187, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_pattern_source_in_collect_statement3266);
-            pattern_source190=pattern_source();
+            pushFollow(FOLLOW_pattern_source_in_collect_statement3274);
+            pattern_source188=pattern_source();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source190.getTree());
-            RIGHT_PAREN191=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3271); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN191);
+            if ( state.backtracking==0 ) stream_pattern_source.add(pattern_source188.getTree());
+            RIGHT_PAREN189=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_collect_statement3279); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN189);
 
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN191, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN189, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
@@ -8638,7 +8692,7 @@
 
 
             // AST REWRITE
-            // elements: COLLECT, pattern_source, RIGHT_PAREN
+            // elements: RIGHT_PAREN, pattern_source, COLLECT
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8648,9 +8702,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1032:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
+            // 1031:2: -> ^( COLLECT pattern_source RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1032:5: ^( COLLECT pattern_source RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:1031:5: ^( COLLECT pattern_source RIGHT_PAREN )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_COLLECT.nextNode(), root_1);
@@ -8692,46 +8746,46 @@
     };
 
     // $ANTLR start "entrypoint_statement"
-    // src/main/resources/org/drools/lang/DRL.g:1035:1: entrypoint_statement : entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1034: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_key192 = null;
+        DRLParser.entry_point_key_return entry_point_key190 = null;
 
-        DRLParser.entrypoint_id_return entrypoint_id193 = null;
+        DRLParser.entrypoint_id_return entrypoint_id191 = null;
 
 
         RewriteRuleSubtreeStream stream_entrypoint_id=new RewriteRuleSubtreeStream(adaptor,"rule entrypoint_id");
         RewriteRuleSubtreeStream stream_entry_point_key=new RewriteRuleSubtreeStream(adaptor,"rule entry_point_key");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1036:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
-            // src/main/resources/org/drools/lang/DRL.g:1036:4: entry_point_key entrypoint_id
+            // src/main/resources/org/drools/lang/DRL.g:1035:2: ( entry_point_key entrypoint_id -> ^( entry_point_key entrypoint_id ) )
+            // src/main/resources/org/drools/lang/DRL.g:1035:4: entry_point_key entrypoint_id
             {
-            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3298);
-            entry_point_key192=entry_point_key();
+            pushFollow(FOLLOW_entry_point_key_in_entrypoint_statement3306);
+            entry_point_key190=entry_point_key();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key192.getTree());
+            if ( state.backtracking==0 ) stream_entry_point_key.add(entry_point_key190.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_FROM_COLLECT);	
             }
-            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3306);
-            entrypoint_id193=entrypoint_id();
+            pushFollow(FOLLOW_entrypoint_id_in_entrypoint_statement3314);
+            entrypoint_id191=entrypoint_id();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id193.getTree());
+            if ( state.backtracking==0 ) stream_entrypoint_id.add(entrypoint_id191.getTree());
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	
             }
 
 
             // AST REWRITE
-            // elements: entry_point_key, entrypoint_id
+            // elements: entrypoint_id, entry_point_key
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8741,9 +8795,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1040:2: -> ^( entry_point_key entrypoint_id )
+            // 1039:2: -> ^( entry_point_key entrypoint_id )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1040:5: ^( entry_point_key entrypoint_id )
+                // src/main/resources/org/drools/lang/DRL.g:1039:5: ^( entry_point_key entrypoint_id )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(stream_entry_point_key.nextNode(), root_1);
@@ -8784,7 +8838,7 @@
     };
 
     // $ANTLR start "entrypoint_id"
-    // src/main/resources/org/drools/lang/DRL.g:1043:1: entrypoint_id : (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] );
+    // src/main/resources/org/drools/lang/DRL.g:1042: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);
@@ -8798,7 +8852,7 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1044:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
+            // src/main/resources/org/drools/lang/DRL.g:1043:2: (value= ID -> VT_ENTRYPOINT_ID[$value] | value= STRING -> VT_ENTRYPOINT_ID[$value] )
             int alt69=2;
             int LA69_0 = input.LA(1);
 
@@ -8817,9 +8871,9 @@
             }
             switch (alt69) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1044:5: value= ID
+                    // src/main/resources/org/drools/lang/DRL.g:1043:5: value= ID
                     {
-                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id3332); if (state.failed) return retval; 
+                    value=(Token)match(input,ID,FOLLOW_ID_in_entrypoint_id3340); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_ID.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -8838,7 +8892,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1045:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1044:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -8848,9 +8902,9 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1046:5: value= STRING
+                    // src/main/resources/org/drools/lang/DRL.g:1045:5: value= STRING
                     {
-                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id3349); if (state.failed) return retval; 
+                    value=(Token)match(input,STRING,FOLLOW_STRING_in_entrypoint_id3357); if (state.failed) return retval; 
                     if ( state.backtracking==0 ) stream_STRING.add(value);
 
                     if ( state.backtracking==0 ) {
@@ -8869,7 +8923,7 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1047:3: -> VT_ENTRYPOINT_ID[$value]
+                    // 1046:3: -> VT_ENTRYPOINT_ID[$value]
                     {
                         adaptor.addChild(root_0, (Object)adaptor.create(VT_ENTRYPOINT_ID, value));
 
@@ -8906,41 +8960,41 @@
     };
 
     // $ANTLR start "from_source"
-    // src/main/resources/org/drools/lang/DRL.g:1050:1: from_source : ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1049: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 ID194=null;
+        Token ID192=null;
         DRLParser.paren_chunk_return args = null;
 
-        DRLParser.expression_chain_return expression_chain195 = null;
+        DRLParser.expression_chain_return expression_chain193 = null;
 
 
-        Object ID194_tree=null;
+        Object ID192_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1051:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1051:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
+            // src/main/resources/org/drools/lang/DRL.g:1050:2: ( ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )? -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:1050:4: ID ( ( LEFT_PAREN )=>args= paren_chunk )? ( expression_chain )?
             {
-            ID194=(Token)match(input,ID,FOLLOW_ID_in_from_source3369); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID194);
+            ID192=(Token)match(input,ID,FOLLOW_ID_in_from_source3377); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID192);
 
             if ( state.backtracking==0 ) {
-              	emit(ID194, DroolsEditorType.IDENTIFIER);	
+              	emit(ID192, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1052:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
+            // src/main/resources/org/drools/lang/DRL.g:1051:3: ( ( LEFT_PAREN )=>args= paren_chunk )?
             int alt70=2;
             alt70 = dfa70.predict(input);
             switch (alt70) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1052:5: ( LEFT_PAREN )=>args= paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1051:5: ( LEFT_PAREN )=>args= paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_from_source3384);
+                    pushFollow(FOLLOW_paren_chunk_in_from_source3392);
                     args=paren_chunk();
 
                     state._fsp--;
@@ -8952,7 +9006,7 @@
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1053:3: ( expression_chain )?
+            // src/main/resources/org/drools/lang/DRL.g:1052:3: ( expression_chain )?
             int alt71=2;
             int LA71_0 = input.LA(1);
 
@@ -8961,14 +9015,14 @@
             }
             switch (alt71) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1053:3: expression_chain
+                    // src/main/resources/org/drools/lang/DRL.g:1052:3: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_from_source3391);
-                    expression_chain195=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_from_source3399);
+                    expression_chain193=expression_chain();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain195.getTree());
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain193.getTree());
 
                     }
                     break;
@@ -8985,7 +9039,7 @@
 
 
             // AST REWRITE
-            // elements: expression_chain, ID, paren_chunk
+            // elements: ID, paren_chunk, expression_chain
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -8995,21 +9049,21 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1059:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+            // 1058:2: -> ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1059:5: ^( VT_FROM_SOURCE ID ( paren_chunk )? ( expression_chain )? )
+                // src/main/resources/org/drools/lang/DRL.g:1058: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());
-                // src/main/resources/org/drools/lang/DRL.g:1059:25: ( paren_chunk )?
+                // src/main/resources/org/drools/lang/DRL.g:1058:25: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1059:38: ( expression_chain )?
+                // src/main/resources/org/drools/lang/DRL.g:1058:38: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -9050,81 +9104,81 @@
     };
 
     // $ANTLR start "expression_chain"
-    // src/main/resources/org/drools/lang/DRL.g:1062:1: expression_chain : DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1061: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 DOT196=null;
-        Token ID197=null;
-        DRLParser.paren_chunk_return paren_chunk198 = null;
+        Token DOT194=null;
+        Token ID195=null;
+        DRLParser.paren_chunk_return paren_chunk196 = null;
 
-        DRLParser.square_chunk_return square_chunk199 = null;
+        DRLParser.square_chunk_return square_chunk197 = null;
 
-        DRLParser.expression_chain_return expression_chain200 = null;
+        DRLParser.expression_chain_return expression_chain198 = null;
 
 
-        Object DOT196_tree=null;
-        Object ID197_tree=null;
+        Object DOT194_tree=null;
+        Object ID195_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         RewriteRuleSubtreeStream stream_expression_chain=new RewriteRuleSubtreeStream(adaptor,"rule expression_chain");
         RewriteRuleSubtreeStream stream_paren_chunk=new RewriteRuleSubtreeStream(adaptor,"rule paren_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1063:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1064:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
+            // src/main/resources/org/drools/lang/DRL.g:1062:2: ( DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )? -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:1063:3: DOT ID ({...}? paren_chunk | square_chunk )? ( expression_chain )?
             {
-            DOT196=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain3424); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_DOT.add(DOT196);
+            DOT194=(Token)match(input,DOT,FOLLOW_DOT_in_expression_chain3432); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_DOT.add(DOT194);
 
             if ( state.backtracking==0 ) {
-              	emit(DOT196, DroolsEditorType.IDENTIFIER);	
+              	emit(DOT194, DroolsEditorType.IDENTIFIER);	
             }
-            ID197=(Token)match(input,ID,FOLLOW_ID_in_expression_chain3431); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID197);
+            ID195=(Token)match(input,ID,FOLLOW_ID_in_expression_chain3439); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID195);
 
             if ( state.backtracking==0 ) {
-              	emit(ID197, DroolsEditorType.IDENTIFIER);	
+              	emit(ID195, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1066:4: ({...}? paren_chunk | square_chunk )?
+            // src/main/resources/org/drools/lang/DRL.g:1065:4: ({...}? paren_chunk | square_chunk )?
             int alt72=3;
             alt72 = dfa72.predict(input);
             switch (alt72) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1067:6: {...}? paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1066: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_chain3447);
-                    paren_chunk198=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_chain3455);
+                    paren_chunk196=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk198.getTree());
+                    if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk196.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1069:6: square_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1068:6: square_chunk
                     {
-                    pushFollow(FOLLOW_square_chunk_in_expression_chain3461);
-                    square_chunk199=square_chunk();
+                    pushFollow(FOLLOW_square_chunk_in_expression_chain3469);
+                    square_chunk197=square_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk199.getTree());
+                    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk197.getTree());
 
                     }
                     break;
 
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1071:4: ( expression_chain )?
+            // src/main/resources/org/drools/lang/DRL.g:1070:4: ( expression_chain )?
             int alt73=2;
             int LA73_0 = input.LA(1);
 
@@ -9133,14 +9187,14 @@
             }
             switch (alt73) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1071:4: expression_chain
+                    // src/main/resources/org/drools/lang/DRL.g:1070:4: expression_chain
                     {
-                    pushFollow(FOLLOW_expression_chain_in_expression_chain3472);
-                    expression_chain200=expression_chain();
+                    pushFollow(FOLLOW_expression_chain_in_expression_chain3480);
+                    expression_chain198=expression_chain();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain200.getTree());
+                    if ( state.backtracking==0 ) stream_expression_chain.add(expression_chain198.getTree());
 
                     }
                     break;
@@ -9160,27 +9214,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1072:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+            // 1071:4: -> ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1072:7: ^( VT_EXPRESSION_CHAIN[$DOT] ID ( square_chunk )? ( paren_chunk )? ( expression_chain )? )
+                // src/main/resources/org/drools/lang/DRL.g:1071: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, DOT196), root_1);
+                root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_EXPRESSION_CHAIN, DOT194), root_1);
 
                 adaptor.addChild(root_1, stream_ID.nextNode());
-                // src/main/resources/org/drools/lang/DRL.g:1072:38: ( square_chunk )?
+                // src/main/resources/org/drools/lang/DRL.g:1071:38: ( square_chunk )?
                 if ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
                 }
                 stream_square_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1072:52: ( paren_chunk )?
+                // src/main/resources/org/drools/lang/DRL.g:1071:52: ( paren_chunk )?
                 if ( stream_paren_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_paren_chunk.nextTree());
 
                 }
                 stream_paren_chunk.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1072:65: ( expression_chain )?
+                // src/main/resources/org/drools/lang/DRL.g:1071:65: ( expression_chain )?
                 if ( stream_expression_chain.hasNext() ) {
                     adaptor.addChild(root_1, stream_expression_chain.nextTree());
 
@@ -9221,34 +9275,34 @@
     };
 
     // $ANTLR start "lhs_pattern"
-    // src/main/resources/org/drools/lang/DRL.g:1075:1: lhs_pattern : ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) );
+    // src/main/resources/org/drools/lang/DRL.g:1074: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_binding201 = null;
+        DRLParser.fact_binding_return fact_binding199 = null;
 
-        DRLParser.fact_return fact202 = null;
+        DRLParser.fact_return fact200 = null;
 
 
         RewriteRuleSubtreeStream stream_fact_binding=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1076:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
+            // src/main/resources/org/drools/lang/DRL.g:1075:2: ( fact_binding -> ^( VT_PATTERN fact_binding ) | fact -> ^( VT_PATTERN fact ) )
             int alt74=2;
             int LA74_0 = input.LA(1);
 
             if ( (LA74_0==ID) ) {
                 int LA74_1 = input.LA(2);
 
-                if ( (LA74_1==COLON) ) {
+                if ( (LA74_1==DOT||LA74_1==LEFT_PAREN||LA74_1==LEFT_SQUARE) ) {
+                    alt74=2;
+                }
+                else if ( (LA74_1==COLON) ) {
                     alt74=1;
                 }
-                else if ( (LA74_1==DOT||LA74_1==LEFT_PAREN||LA74_1==LEFT_SQUARE) ) {
-                    alt74=2;
-                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
@@ -9266,14 +9320,14 @@
             }
             switch (alt74) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1076:4: fact_binding
+                    // src/main/resources/org/drools/lang/DRL.g:1075:4: fact_binding
                     {
-                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3505);
-                    fact_binding201=fact_binding();
+                    pushFollow(FOLLOW_fact_binding_in_lhs_pattern3513);
+                    fact_binding199=fact_binding();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding201.getTree());
+                    if ( state.backtracking==0 ) stream_fact_binding.add(fact_binding199.getTree());
 
 
                     // AST REWRITE
@@ -9287,9 +9341,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1076:17: -> ^( VT_PATTERN fact_binding )
+                    // 1075:17: -> ^( VT_PATTERN fact_binding )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1076:20: ^( VT_PATTERN fact_binding )
+                        // src/main/resources/org/drools/lang/DRL.g:1075:20: ^( VT_PATTERN fact_binding )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -9305,14 +9359,14 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1077:4: fact
+                    // src/main/resources/org/drools/lang/DRL.g:1076:4: fact
                     {
-                    pushFollow(FOLLOW_fact_in_lhs_pattern3518);
-                    fact202=fact();
+                    pushFollow(FOLLOW_fact_in_lhs_pattern3526);
+                    fact200=fact();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact.add(fact202.getTree());
+                    if ( state.backtracking==0 ) stream_fact.add(fact200.getTree());
 
 
                     // AST REWRITE
@@ -9326,9 +9380,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1077:9: -> ^( VT_PATTERN fact )
+                    // 1076:9: -> ^( VT_PATTERN fact )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1077:12: ^( VT_PATTERN fact )
+                        // src/main/resources/org/drools/lang/DRL.g:1076:12: ^( VT_PATTERN fact )
                         {
                         Object root_1 = (Object)adaptor.nil();
                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(VT_PATTERN, "VT_PATTERN"), root_1);
@@ -9371,40 +9425,40 @@
     };
 
     // $ANTLR start "fact_binding"
-    // src/main/resources/org/drools/lang/DRL.g:1080:1: fact_binding : label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1079: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_PAREN205=null;
-        Token RIGHT_PAREN207=null;
-        DRLParser.label_return label203 = null;
+        Token LEFT_PAREN203=null;
+        Token RIGHT_PAREN205=null;
+        DRLParser.label_return label201 = null;
 
-        DRLParser.fact_return fact204 = null;
+        DRLParser.fact_return fact202 = null;
 
-        DRLParser.fact_binding_expression_return fact_binding_expression206 = null;
+        DRLParser.fact_binding_expression_return fact_binding_expression204 = null;
 
 
-        Object LEFT_PAREN205_tree=null;
-        Object RIGHT_PAREN207_tree=null;
+        Object LEFT_PAREN203_tree=null;
+        Object RIGHT_PAREN205_tree=null;
         RewriteRuleTokenStream stream_LEFT_PAREN=new RewriteRuleTokenStream(adaptor,"token LEFT_PAREN");
         RewriteRuleTokenStream stream_RIGHT_PAREN=new RewriteRuleTokenStream(adaptor,"token RIGHT_PAREN");
         RewriteRuleSubtreeStream stream_label=new RewriteRuleSubtreeStream(adaptor,"rule label");
         RewriteRuleSubtreeStream stream_fact_binding_expression=new RewriteRuleSubtreeStream(adaptor,"rule fact_binding_expression");
         RewriteRuleSubtreeStream stream_fact=new RewriteRuleSubtreeStream(adaptor,"rule fact");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1081:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
-            // src/main/resources/org/drools/lang/DRL.g:1081:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1080:3: ( label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN ) -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:1080:5: label ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             {
-            pushFollow(FOLLOW_label_in_fact_binding3538);
-            label203=label();
+            pushFollow(FOLLOW_label_in_fact_binding3546);
+            label201=label();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_label.add(label203.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1082:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
+            if ( state.backtracking==0 ) stream_label.add(label201.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1081:3: ( fact | LEFT_PAREN fact_binding_expression RIGHT_PAREN )
             int alt75=2;
             int LA75_0 = input.LA(1);
 
@@ -9423,37 +9477,37 @@
             }
             switch (alt75) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1082:5: fact
+                    // src/main/resources/org/drools/lang/DRL.g:1081:5: fact
                     {
-                    pushFollow(FOLLOW_fact_in_fact_binding3544);
-                    fact204=fact();
+                    pushFollow(FOLLOW_fact_in_fact_binding3552);
+                    fact202=fact();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact.add(fact204.getTree());
+                    if ( state.backtracking==0 ) stream_fact.add(fact202.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1083:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:1082:6: LEFT_PAREN fact_binding_expression RIGHT_PAREN
                     {
-                    LEFT_PAREN205=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3551); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN205);
+                    LEFT_PAREN203=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact_binding3559); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN203);
 
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN205, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN203, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3559);
-                    fact_binding_expression206=fact_binding_expression();
+                    pushFollow(FOLLOW_fact_binding_expression_in_fact_binding3567);
+                    fact_binding_expression204=fact_binding_expression();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression206.getTree());
-                    RIGHT_PAREN207=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3567); if (state.failed) return retval; 
-                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN207);
+                    if ( state.backtracking==0 ) stream_fact_binding_expression.add(fact_binding_expression204.getTree());
+                    RIGHT_PAREN205=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact_binding3575); if (state.failed) return retval; 
+                    if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN205);
 
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN207, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN205, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -9464,7 +9518,7 @@
 
 
             // AST REWRITE
-            // elements: fact_binding_expression, fact, label, RIGHT_PAREN
+            // elements: fact, RIGHT_PAREN, label, fact_binding_expression
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -9474,27 +9528,27 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1087:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+            // 1086:3: -> ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1087:6: ^( VT_FACT_BINDING label ( fact )? ( fact_binding_expression )? ( RIGHT_PAREN )? )
+                // src/main/resources/org/drools/lang/DRL.g:1086: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());
-                // src/main/resources/org/drools/lang/DRL.g:1087:30: ( fact )?
+                // src/main/resources/org/drools/lang/DRL.g:1086:30: ( fact )?
                 if ( stream_fact.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact.nextTree());
 
                 }
                 stream_fact.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1087:36: ( fact_binding_expression )?
+                // src/main/resources/org/drools/lang/DRL.g:1086:36: ( fact_binding_expression )?
                 if ( stream_fact_binding_expression.hasNext() ) {
                     adaptor.addChild(root_1, stream_fact_binding_expression.nextTree());
 
                 }
                 stream_fact_binding_expression.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1087:61: ( RIGHT_PAREN )?
+                // src/main/resources/org/drools/lang/DRL.g:1086:61: ( RIGHT_PAREN )?
                 if ( stream_RIGHT_PAREN.hasNext() ) {
                     adaptor.addChild(root_1, stream_RIGHT_PAREN.nextNode());
 
@@ -9535,7 +9589,7 @@
     };
 
     // $ANTLR start "fact_binding_expression"
-    // src/main/resources/org/drools/lang/DRL.g:1090:1: fact_binding_expression : ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1089: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);
@@ -9545,9 +9599,9 @@
         Token pipe=null;
         DRLParser.or_key_return value = null;
 
-        DRLParser.fact_return fact208 = null;
+        DRLParser.fact_return fact206 = null;
 
-        DRLParser.fact_return fact209 = null;
+        DRLParser.fact_return fact207 = null;
 
 
         Object pipe_tree=null;
@@ -9558,18 +9612,18 @@
         	Token orToken = null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1093:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
-            // src/main/resources/org/drools/lang/DRL.g:1093:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // src/main/resources/org/drools/lang/DRL.g:1092:3: ( ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )* )
+            // src/main/resources/org/drools/lang/DRL.g:1092:5: ( fact -> fact ) ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             {
-            // src/main/resources/org/drools/lang/DRL.g:1093:5: ( fact -> fact )
-            // src/main/resources/org/drools/lang/DRL.g:1093:6: fact
+            // src/main/resources/org/drools/lang/DRL.g:1092:5: ( fact -> fact )
+            // src/main/resources/org/drools/lang/DRL.g:1092:6: fact
             {
-            pushFollow(FOLLOW_fact_in_fact_binding_expression3608);
-            fact208=fact();
+            pushFollow(FOLLOW_fact_in_fact_binding_expression3616);
+            fact206=fact();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_fact.add(fact208.getTree());
+            if ( state.backtracking==0 ) stream_fact.add(fact206.getTree());
 
 
             // AST REWRITE
@@ -9583,7 +9637,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1093:11: -> fact
+            // 1092:11: -> fact
             {
                 adaptor.addChild(root_0, stream_fact.nextTree());
 
@@ -9592,7 +9646,7 @@
             retval.tree = root_0;}
             }
 
-            // src/main/resources/org/drools/lang/DRL.g:1093:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
+            // src/main/resources/org/drools/lang/DRL.g:1092:20: ( (value= or_key | pipe= DOUBLE_PIPE ) fact -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact ) )*
             loop77:
             do {
                 int alt77=2;
@@ -9608,9 +9662,9 @@
 
                 switch (alt77) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1093:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
+            	    // src/main/resources/org/drools/lang/DRL.g:1092:22: (value= or_key | pipe= DOUBLE_PIPE ) fact
             	    {
-            	    // src/main/resources/org/drools/lang/DRL.g:1093:22: (value= or_key | pipe= DOUBLE_PIPE )
+            	    // src/main/resources/org/drools/lang/DRL.g:1092:22: (value= or_key | pipe= DOUBLE_PIPE )
             	    int alt76=2;
             	    int LA76_0 = input.LA(1);
 
@@ -9629,9 +9683,9 @@
             	    }
             	    switch (alt76) {
             	        case 1 :
-            	            // src/main/resources/org/drools/lang/DRL.g:1093:23: value= or_key
+            	            // src/main/resources/org/drools/lang/DRL.g:1092:23: value= or_key
             	            {
-            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3620);
+            	            pushFollow(FOLLOW_or_key_in_fact_binding_expression3628);
             	            value=or_key();
 
             	            state._fsp--;
@@ -9644,9 +9698,9 @@
             	            }
             	            break;
             	        case 2 :
-            	            // src/main/resources/org/drools/lang/DRL.g:1093:62: pipe= DOUBLE_PIPE
+            	            // src/main/resources/org/drools/lang/DRL.g:1092:62: pipe= DOUBLE_PIPE
             	            {
-            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3626); if (state.failed) return retval; 
+            	            pipe=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3634); if (state.failed) return retval; 
             	            if ( state.backtracking==0 ) stream_DOUBLE_PIPE.add(pipe);
 
             	            if ( state.backtracking==0 ) {
@@ -9658,12 +9712,12 @@
 
             	    }
 
-            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3631);
-            	    fact209=fact();
+            	    pushFollow(FOLLOW_fact_in_fact_binding_expression3639);
+            	    fact207=fact();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_fact.add(fact209.getTree());
+            	    if ( state.backtracking==0 ) stream_fact.add(fact207.getTree());
 
 
             	    // AST REWRITE
@@ -9677,9 +9731,9 @@
             	    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             	    root_0 = (Object)adaptor.nil();
-            	    // 1094:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	    // 1093:3: -> ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
             	    {
-            	        // src/main/resources/org/drools/lang/DRL.g:1094:6: ^( VT_FACT_OR[orToken] $fact_binding_expression fact )
+            	        // src/main/resources/org/drools/lang/DRL.g:1093: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);
@@ -9730,47 +9784,47 @@
     };
 
     // $ANTLR start "fact"
-    // src/main/resources/org/drools/lang/DRL.g:1097:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1096:1: fact : pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? 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_PAREN211=null;
-        Token RIGHT_PAREN213=null;
-        DRLParser.pattern_type_return pattern_type210 = null;
+        Token LEFT_PAREN209=null;
+        Token RIGHT_PAREN211=null;
+        DRLParser.pattern_type_return pattern_type208 = null;
 
-        DRLParser.constraints_return constraints212 = null;
+        DRLParser.constraints_return constraints210 = null;
 
 
-        Object LEFT_PAREN211_tree=null;
-        Object RIGHT_PAREN213_tree=null;
+        Object LEFT_PAREN209_tree=null;
+        Object RIGHT_PAREN211_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_type=new RewriteRuleSubtreeStream(adaptor,"rule pattern_type");
         RewriteRuleSubtreeStream stream_constraints=new RewriteRuleSubtreeStream(adaptor,"rule constraints");
          boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1100:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
-            // src/main/resources/org/drools/lang/DRL.g:1100:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1099:2: ( pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN ) )
+            // src/main/resources/org/drools/lang/DRL.g:1099:4: pattern_type LEFT_PAREN ( constraints )? RIGHT_PAREN
             {
-            pushFollow(FOLLOW_pattern_type_in_fact3671);
-            pattern_type210=pattern_type();
+            pushFollow(FOLLOW_pattern_type_in_fact3679);
+            pattern_type208=pattern_type();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type210.getTree());
-            LEFT_PAREN211=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3676); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN211);
+            if ( state.backtracking==0 ) stream_pattern_type.add(pattern_type208.getTree());
+            LEFT_PAREN209=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_fact3684); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_LEFT_PAREN.add(LEFT_PAREN209);
 
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN211, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN209, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1103:4: ( constraints )?
+            // src/main/resources/org/drools/lang/DRL.g:1102:4: ( constraints )?
             int alt78=2;
             int LA78_0 = input.LA(1);
 
@@ -9779,29 +9833,29 @@
             }
             switch (alt78) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1103:4: constraints
+                    // src/main/resources/org/drools/lang/DRL.g:1102:4: constraints
                     {
-                    pushFollow(FOLLOW_constraints_in_fact3687);
-                    constraints212=constraints();
+                    pushFollow(FOLLOW_constraints_in_fact3695);
+                    constraints210=constraints();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_constraints.add(constraints212.getTree());
+                    if ( state.backtracking==0 ) stream_constraints.add(constraints210.getTree());
 
                     }
                     break;
 
             }
 
-            RIGHT_PAREN213=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3693); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN213);
+            RIGHT_PAREN211=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_fact3701); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_RIGHT_PAREN.add(RIGHT_PAREN211);
 
             if ( state.backtracking==0 ) {
               	isFailedOnConstraints = false;	
             }
             if ( state.backtracking==0 ) {
-              	if ((RIGHT_PAREN213!=null?RIGHT_PAREN213.getText():null).equals(")") ){ //WORKAROUND FOR ANTLR BUG!
-              			emit(RIGHT_PAREN213, DroolsEditorType.SYMBOL);
+              	if ((RIGHT_PAREN211!=null?RIGHT_PAREN211.getText():null).equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+              			emit(RIGHT_PAREN211, DroolsEditorType.SYMBOL);
               			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
               		}	
             }
@@ -9818,15 +9872,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1109:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+            // 1108:2: -> ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1109:5: ^( VT_FACT pattern_type ( constraints )? RIGHT_PAREN )
+                // src/main/resources/org/drools/lang/DRL.g:1108:5: ^( VT_FACT pattern_type ( constraints )? 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());
-                // src/main/resources/org/drools/lang/DRL.g:1109:28: ( constraints )?
+                // src/main/resources/org/drools/lang/DRL.g:1108:28: ( constraints )?
                 if ( stream_constraints.hasNext() ) {
                     adaptor.addChild(root_1, stream_constraints.nextTree());
 
@@ -9878,34 +9932,34 @@
     };
 
     // $ANTLR start "constraints"
-    // src/main/resources/org/drools/lang/DRL.g:1119:1: constraints : constraint ( COMMA constraint )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1118: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 COMMA215=null;
+        Token COMMA213=null;
+        DRLParser.constraint_return constraint212 = null;
+
         DRLParser.constraint_return constraint214 = null;
 
-        DRLParser.constraint_return constraint216 = null;
 
+        Object COMMA213_tree=null;
 
-        Object COMMA215_tree=null;
-
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1120:2: ( constraint ( COMMA constraint )* )
-            // src/main/resources/org/drools/lang/DRL.g:1120:4: constraint ( COMMA constraint )*
+            // src/main/resources/org/drools/lang/DRL.g:1119:2: ( constraint ( COMMA constraint )* )
+            // src/main/resources/org/drools/lang/DRL.g:1119:4: constraint ( COMMA constraint )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_in_constraints3727);
-            constraint214=constraint();
+            pushFollow(FOLLOW_constraint_in_constraints3735);
+            constraint212=constraint();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint214.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1120:15: ( COMMA constraint )*
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint212.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1119:15: ( COMMA constraint )*
             loop79:
             do {
                 int alt79=2;
@@ -9918,19 +9972,19 @@
 
                 switch (alt79) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1120:17: COMMA constraint
+            	    // src/main/resources/org/drools/lang/DRL.g:1119:17: COMMA constraint
             	    {
-            	    COMMA215=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints3731); if (state.failed) return retval;
+            	    COMMA213=(Token)match(input,COMMA,FOLLOW_COMMA_in_constraints3739); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA215, DroolsEditorType.SYMBOL);
+            	      	emit(COMMA213, DroolsEditorType.SYMBOL);
             	      		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	
             	    }
-            	    pushFollow(FOLLOW_constraint_in_constraints3738);
-            	    constraint216=constraint();
+            	    pushFollow(FOLLOW_constraint_in_constraints3746);
+            	    constraint214=constraint();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint216.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint214.getTree());
 
             	    }
             	    break;
@@ -9969,29 +10023,29 @@
     };
 
     // $ANTLR start "constraint"
-    // src/main/resources/org/drools/lang/DRL.g:1125:1: constraint : or_constr ;
+    // src/main/resources/org/drools/lang/DRL.g:1124: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_constr217 = null;
+        DRLParser.or_constr_return or_constr215 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1126:2: ( or_constr )
-            // src/main/resources/org/drools/lang/DRL.g:1126:4: or_constr
+            // src/main/resources/org/drools/lang/DRL.g:1125:2: ( or_constr )
+            // src/main/resources/org/drools/lang/DRL.g:1125:4: or_constr
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_or_constr_in_constraint3752);
-            or_constr217=or_constr();
+            pushFollow(FOLLOW_or_constr_in_constraint3760);
+            or_constr215=or_constr();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr217.getTree());
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr215.getTree());
 
             }
 
@@ -10021,34 +10075,34 @@
     };
 
     // $ANTLR start "or_constr"
-    // src/main/resources/org/drools/lang/DRL.g:1129:1: or_constr : and_constr ( DOUBLE_PIPE and_constr )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1128:1: or_constr : and_constr ( 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_PIPE219=null;
+        Token DOUBLE_PIPE217=null;
+        DRLParser.and_constr_return and_constr216 = null;
+
         DRLParser.and_constr_return and_constr218 = null;
 
-        DRLParser.and_constr_return and_constr220 = null;
 
+        Object DOUBLE_PIPE217_tree=null;
 
-        Object DOUBLE_PIPE219_tree=null;
-
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1130:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1130:4: and_constr ( DOUBLE_PIPE and_constr )*
+            // src/main/resources/org/drools/lang/DRL.g:1129:2: ( and_constr ( DOUBLE_PIPE and_constr )* )
+            // src/main/resources/org/drools/lang/DRL.g:1129:4: and_constr ( DOUBLE_PIPE and_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_constr_in_or_constr3763);
-            and_constr218=and_constr();
+            pushFollow(FOLLOW_and_constr_in_or_constr3771);
+            and_constr216=and_constr();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr218.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1130:15: ( DOUBLE_PIPE and_constr )*
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr216.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1129:15: ( DOUBLE_PIPE and_constr )*
             loop80:
             do {
                 int alt80=2;
@@ -10061,22 +10115,22 @@
 
                 switch (alt80) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1130:17: DOUBLE_PIPE and_constr
+            	    // src/main/resources/org/drools/lang/DRL.g:1129:17: DOUBLE_PIPE and_constr
             	    {
-            	    DOUBLE_PIPE219=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3767); if (state.failed) return retval;
+            	    DOUBLE_PIPE217=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_constr3775); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_PIPE219_tree = (Object)adaptor.create(DOUBLE_PIPE219);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE219_tree, root_0);
+            	    DOUBLE_PIPE217_tree = (Object)adaptor.create(DOUBLE_PIPE217);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE217_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_PIPE219, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_PIPE217, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_constr_in_or_constr3774);
-            	    and_constr220=and_constr();
+            	    pushFollow(FOLLOW_and_constr_in_or_constr3782);
+            	    and_constr218=and_constr();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr220.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_constr218.getTree());
 
             	    }
             	    break;
@@ -10115,34 +10169,34 @@
     };
 
     // $ANTLR start "and_constr"
-    // src/main/resources/org/drools/lang/DRL.g:1134:1: and_constr : unary_constr ( DOUBLE_AMPER unary_constr )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1133:1: and_constr : unary_constr ( 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_AMPER222=null;
+        Token DOUBLE_AMPER220=null;
+        DRLParser.unary_constr_return unary_constr219 = null;
+
         DRLParser.unary_constr_return unary_constr221 = null;
 
-        DRLParser.unary_constr_return unary_constr223 = null;
 
+        Object DOUBLE_AMPER220_tree=null;
 
-        Object DOUBLE_AMPER222_tree=null;
-
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1135:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
-            // src/main/resources/org/drools/lang/DRL.g:1135:4: unary_constr ( DOUBLE_AMPER unary_constr )*
+            // src/main/resources/org/drools/lang/DRL.g:1134:2: ( unary_constr ( DOUBLE_AMPER unary_constr )* )
+            // src/main/resources/org/drools/lang/DRL.g:1134:4: unary_constr ( DOUBLE_AMPER unary_constr )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_unary_constr_in_and_constr3789);
-            unary_constr221=unary_constr();
+            pushFollow(FOLLOW_unary_constr_in_and_constr3797);
+            unary_constr219=unary_constr();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr221.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1135:17: ( DOUBLE_AMPER unary_constr )*
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr219.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1134:17: ( DOUBLE_AMPER unary_constr )*
             loop81:
             do {
                 int alt81=2;
@@ -10155,22 +10209,22 @@
 
                 switch (alt81) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1135:19: DOUBLE_AMPER unary_constr
+            	    // src/main/resources/org/drools/lang/DRL.g:1134:19: DOUBLE_AMPER unary_constr
             	    {
-            	    DOUBLE_AMPER222=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3793); if (state.failed) return retval;
+            	    DOUBLE_AMPER220=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_constr3801); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_AMPER222_tree = (Object)adaptor.create(DOUBLE_AMPER222);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER222_tree, root_0);
+            	    DOUBLE_AMPER220_tree = (Object)adaptor.create(DOUBLE_AMPER220);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER220_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_AMPER222, DroolsEditorType.SYMBOL);;	
+            	      	emit(DOUBLE_AMPER220, DroolsEditorType.SYMBOL);;	
             	    }
-            	    pushFollow(FOLLOW_unary_constr_in_and_constr3800);
-            	    unary_constr223=unary_constr();
+            	    pushFollow(FOLLOW_unary_constr_in_and_constr3808);
+            	    unary_constr221=unary_constr();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr223.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, unary_constr221.getTree());
 
             	    }
             	    break;
@@ -10209,89 +10263,89 @@
     };
 
     // $ANTLR start "unary_constr"
-    // src/main/resources/org/drools/lang/DRL.g:1139:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );
+    // src/main/resources/org/drools/lang/DRL.g:1138: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_PAREN227=null;
-        Token RIGHT_PAREN229=null;
-        DRLParser.eval_key_return eval_key224 = null;
+        Token LEFT_PAREN225=null;
+        Token RIGHT_PAREN227=null;
+        DRLParser.eval_key_return eval_key222 = null;
 
-        DRLParser.paren_chunk_return paren_chunk225 = null;
+        DRLParser.paren_chunk_return paren_chunk223 = null;
 
-        DRLParser.field_constraint_return field_constraint226 = null;
+        DRLParser.field_constraint_return field_constraint224 = null;
 
-        DRLParser.or_constr_return or_constr228 = null;
+        DRLParser.or_constr_return or_constr226 = null;
 
 
-        Object LEFT_PAREN227_tree=null;
-        Object RIGHT_PAREN229_tree=null;
+        Object LEFT_PAREN225_tree=null;
+        Object RIGHT_PAREN227_tree=null;
 
          boolean isFailed = true;	
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1143:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1142:2: ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN )
             int alt82=3;
             alt82 = dfa82.predict(input);
             switch (alt82) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1143:4: eval_key paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1142:4: eval_key paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_eval_key_in_unary_constr3833);
-                    eval_key224=eval_key();
+                    pushFollow(FOLLOW_eval_key_in_unary_constr3841);
+                    eval_key222=eval_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key224.getTree(), root_0);
-                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3836);
-                    paren_chunk225=paren_chunk();
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(eval_key222.getTree(), root_0);
+                    pushFollow(FOLLOW_paren_chunk_in_unary_constr3844);
+                    paren_chunk223=paren_chunk();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk225.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, paren_chunk223.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1144:4: field_constraint
+                    // src/main/resources/org/drools/lang/DRL.g:1143:4: field_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_field_constraint_in_unary_constr3841);
-                    field_constraint226=field_constraint();
+                    pushFollow(FOLLOW_field_constraint_in_unary_constr3849);
+                    field_constraint224=field_constraint();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint226.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, field_constraint224.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1145:5: LEFT_PAREN or_constr RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:1144:5: LEFT_PAREN or_constr RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN227=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3847); if (state.failed) return retval;
+                    LEFT_PAREN225=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_unary_constr3855); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN227, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN225, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_constr_in_unary_constr3857);
-                    or_constr228=or_constr();
+                    pushFollow(FOLLOW_or_constr_in_unary_constr3865);
+                    or_constr226=or_constr();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr228.getTree());
-                    RIGHT_PAREN229=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3862); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_constr226.getTree());
+                    RIGHT_PAREN227=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_unary_constr3870); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN229_tree = (Object)adaptor.create(RIGHT_PAREN229);
-                    adaptor.addChild(root_0, RIGHT_PAREN229_tree);
+                    RIGHT_PAREN227_tree = (Object)adaptor.create(RIGHT_PAREN227);
+                    adaptor.addChild(root_0, RIGHT_PAREN227_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN229, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN227, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -10335,7 +10389,7 @@
     };
 
     // $ANTLR start "field_constraint"
-    // src/main/resources/org/drools/lang/DRL.g:1158: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 ) );
+    // src/main/resources/org/drools/lang/DRL.g:1157: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);
@@ -10343,17 +10397,17 @@
         Object root_0 = null;
 
         Token arw=null;
-        DRLParser.label_return label230 = null;
+        DRLParser.label_return label228 = null;
 
-        DRLParser.accessor_path_return accessor_path231 = null;
+        DRLParser.accessor_path_return accessor_path229 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective232 = null;
+        DRLParser.or_restr_connective_return or_restr_connective230 = null;
 
-        DRLParser.paren_chunk_return paren_chunk233 = null;
+        DRLParser.paren_chunk_return paren_chunk231 = null;
 
-        DRLParser.accessor_path_return accessor_path234 = null;
+        DRLParser.accessor_path_return accessor_path232 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective235 = null;
+        DRLParser.or_restr_connective_return or_restr_connective233 = null;
 
 
         Object arw_tree=null;
@@ -10366,19 +10420,19 @@
         	boolean isArrow = false;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1161: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 ) )
+            // src/main/resources/org/drools/lang/DRL.g:1160: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 alt84=2;
             int LA84_0 = input.LA(1);
 
             if ( (LA84_0==ID) ) {
                 int LA84_1 = input.LA(2);
 
-                if ( (LA84_1==COLON) ) {
+                if ( ((LA84_1>=ID && LA84_1<=DOT)||LA84_1==LEFT_PAREN||(LA84_1>=EQUAL && LA84_1<=NOT_EQUAL)||LA84_1==LEFT_SQUARE) ) {
+                    alt84=2;
+                }
+                else if ( (LA84_1==COLON) ) {
                     alt84=1;
                 }
-                else if ( ((LA84_1>=ID && LA84_1<=DOT)||LA84_1==LEFT_PAREN||(LA84_1>=EQUAL && LA84_1<=NOT_EQUAL)||LA84_1==LEFT_SQUARE) ) {
-                    alt84=2;
-                }
                 else {
                     if (state.backtracking>0) {state.failed=true; return retval;}
                     NoViableAltException nvae =
@@ -10396,21 +10450,21 @@
             }
             switch (alt84) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1161:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
+                    // src/main/resources/org/drools/lang/DRL.g:1160:5: label accessor_path ( or_restr_connective | arw= ARROW paren_chunk )?
                     {
-                    pushFollow(FOLLOW_label_in_field_constraint3882);
-                    label230=label();
+                    pushFollow(FOLLOW_label_in_field_constraint3890);
+                    label228=label();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_label.add(label230.getTree());
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3884);
-                    accessor_path231=accessor_path();
+                    if ( state.backtracking==0 ) stream_label.add(label228.getTree());
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3892);
+                    accessor_path229=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path231.getTree());
-                    // src/main/resources/org/drools/lang/DRL.g:1162:3: ( or_restr_connective | arw= ARROW paren_chunk )?
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path229.getTree());
+                    // src/main/resources/org/drools/lang/DRL.g:1161:3: ( or_restr_connective | arw= ARROW paren_chunk )?
                     int alt83=3;
                     int LA83_0 = input.LA(1);
 
@@ -10425,32 +10479,32 @@
                     }
                     switch (alt83) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1162:5: or_restr_connective
+                            // src/main/resources/org/drools/lang/DRL.g:1161:5: or_restr_connective
                             {
-                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3891);
-                            or_restr_connective232=or_restr_connective();
+                            pushFollow(FOLLOW_or_restr_connective_in_field_constraint3899);
+                            or_restr_connective230=or_restr_connective();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective232.getTree());
+                            if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective230.getTree());
 
                             }
                             break;
                         case 2 :
-                            // src/main/resources/org/drools/lang/DRL.g:1162:27: arw= ARROW paren_chunk
+                            // src/main/resources/org/drools/lang/DRL.g:1161:27: arw= ARROW paren_chunk
                             {
-                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint3897); if (state.failed) return retval; 
+                            arw=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_constraint3905); 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_constraint3901);
-                            paren_chunk233=paren_chunk();
+                            pushFollow(FOLLOW_paren_chunk_in_field_constraint3909);
+                            paren_chunk231=paren_chunk();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk233.getTree());
+                            if ( state.backtracking==0 ) stream_paren_chunk.add(paren_chunk231.getTree());
                             if ( state.backtracking==0 ) {
                               isArrow = true;
                             }
@@ -10463,7 +10517,7 @@
 
 
                     // AST REWRITE
-                    // elements: paren_chunk, label, accessor_path, or_restr_connective, accessor_path, label
+                    // elements: label, or_restr_connective, accessor_path, label, paren_chunk, accessor_path
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -10473,15 +10527,15 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1163:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                    // 1162:3: -> {isArrow}? ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) ) ( ^( VK_EVAL[$arw] paren_chunk ) )?
                     if (isArrow) {
-                        // src/main/resources/org/drools/lang/DRL.g:1163:17: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ) )
+                        // src/main/resources/org/drools/lang/DRL.g:1162: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());
-                        // src/main/resources/org/drools/lang/DRL.g:1163:39: ^( VT_FIELD accessor_path )
+                        // src/main/resources/org/drools/lang/DRL.g:1162: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);
@@ -10493,9 +10547,9 @@
 
                         adaptor.addChild(root_0, root_1);
                         }
-                        // src/main/resources/org/drools/lang/DRL.g:1163:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
+                        // src/main/resources/org/drools/lang/DRL.g:1162:66: ( ^( VK_EVAL[$arw] paren_chunk ) )?
                         if ( stream_paren_chunk.hasNext() ) {
-                            // src/main/resources/org/drools/lang/DRL.g:1163:66: ^( VK_EVAL[$arw] paren_chunk )
+                            // src/main/resources/org/drools/lang/DRL.g:1162: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);
@@ -10509,21 +10563,21 @@
                         stream_paren_chunk.reset();
 
                     }
-                    else // 1164:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                    else // 1163:3: -> ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1164:6: ^( VT_BIND_FIELD label ^( VT_FIELD accessor_path ( or_restr_connective )? ) )
+                        // src/main/resources/org/drools/lang/DRL.g:1163: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());
-                        // src/main/resources/org/drools/lang/DRL.g:1164:28: ^( VT_FIELD accessor_path ( or_restr_connective )? )
+                        // src/main/resources/org/drools/lang/DRL.g:1163: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());
-                        // src/main/resources/org/drools/lang/DRL.g:1164:53: ( or_restr_connective )?
+                        // src/main/resources/org/drools/lang/DRL.g:1163:53: ( or_restr_connective )?
                         if ( stream_or_restr_connective.hasNext() ) {
                             adaptor.addChild(root_2, stream_or_restr_connective.nextTree());
 
@@ -10542,24 +10596,24 @@
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1165:4: accessor_path or_restr_connective
+                    // src/main/resources/org/drools/lang/DRL.g:1164:4: accessor_path or_restr_connective
                     {
-                    pushFollow(FOLLOW_accessor_path_in_field_constraint3955);
-                    accessor_path234=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_field_constraint3963);
+                    accessor_path232=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path234.getTree());
-                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3957);
-                    or_restr_connective235=or_restr_connective();
+                    if ( state.backtracking==0 ) stream_accessor_path.add(accessor_path232.getTree());
+                    pushFollow(FOLLOW_or_restr_connective_in_field_constraint3965);
+                    or_restr_connective233=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective235.getTree());
+                    if ( state.backtracking==0 ) stream_or_restr_connective.add(or_restr_connective233.getTree());
 
 
                     // AST REWRITE
-                    // elements: or_restr_connective, accessor_path
+                    // elements: accessor_path, or_restr_connective
                     // token labels: 
                     // rule labels: retval
                     // token list labels: 
@@ -10569,9 +10623,9 @@
                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
                     root_0 = (Object)adaptor.nil();
-                    // 1166:3: -> ^( VT_FIELD accessor_path or_restr_connective )
+                    // 1165:3: -> ^( VT_FIELD accessor_path or_restr_connective )
                     {
-                        // src/main/resources/org/drools/lang/DRL.g:1166:6: ^( VT_FIELD accessor_path or_restr_connective )
+                        // src/main/resources/org/drools/lang/DRL.g:1165: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);
@@ -10615,7 +10669,7 @@
     };
 
     // $ANTLR start "label"
-    // src/main/resources/org/drools/lang/DRL.g:1169:1: label : value= ID COLON -> VT_LABEL[$value] ;
+    // src/main/resources/org/drools/lang/DRL.g:1168: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);
@@ -10623,28 +10677,28 @@
         Object root_0 = null;
 
         Token value=null;
-        Token COLON236=null;
+        Token COLON234=null;
 
         Object value_tree=null;
-        Object COLON236_tree=null;
+        Object COLON234_tree=null;
         RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1170:2: (value= ID COLON -> VT_LABEL[$value] )
-            // src/main/resources/org/drools/lang/DRL.g:1170:4: value= ID COLON
+            // src/main/resources/org/drools/lang/DRL.g:1169:2: (value= ID COLON -> VT_LABEL[$value] )
+            // src/main/resources/org/drools/lang/DRL.g:1169:4: value= ID COLON
             {
-            value=(Token)match(input,ID,FOLLOW_ID_in_label3982); if (state.failed) return retval; 
+            value=(Token)match(input,ID,FOLLOW_ID_in_label3990); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(value);
 
             if ( state.backtracking==0 ) {
               	emit(value, DroolsEditorType.IDENTIFIER_VARIABLE);	
             }
-            COLON236=(Token)match(input,COLON,FOLLOW_COLON_in_label3989); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_COLON.add(COLON236);
+            COLON234=(Token)match(input,COLON,FOLLOW_COLON_in_label3997); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_COLON.add(COLON234);
 
             if ( state.backtracking==0 ) {
-              	emit(COLON236, DroolsEditorType.SYMBOL);	
+              	emit(COLON234, DroolsEditorType.SYMBOL);	
             }
 
 
@@ -10659,7 +10713,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1172:3: -> VT_LABEL[$value]
+            // 1171:3: -> VT_LABEL[$value]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_LABEL, value));
 
@@ -10694,34 +10748,34 @@
     };
 
     // $ANTLR start "or_restr_connective"
-    // src/main/resources/org/drools/lang/DRL.g:1175:1: or_restr_connective : and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1174: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_PIPE238=null;
+        Token DOUBLE_PIPE236=null;
+        DRLParser.and_restr_connective_return and_restr_connective235 = null;
+
         DRLParser.and_restr_connective_return and_restr_connective237 = null;
 
-        DRLParser.and_restr_connective_return and_restr_connective239 = null;
 
+        Object DOUBLE_PIPE236_tree=null;
 
-        Object DOUBLE_PIPE238_tree=null;
-
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1176:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
-            // src/main/resources/org/drools/lang/DRL.g:1176:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
+            // src/main/resources/org/drools/lang/DRL.g:1175:2: ( and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )* )
+            // src/main/resources/org/drools/lang/DRL.g:1175:4: and_restr_connective ({...}? => DOUBLE_PIPE and_restr_connective )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4010);
-            and_restr_connective237=and_restr_connective();
+            pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4018);
+            and_restr_connective235=and_restr_connective();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective237.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1176:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective235.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1175:25: ({...}? => DOUBLE_PIPE and_restr_connective )*
             loop85:
             do {
                 int alt85=2;
@@ -10740,26 +10794,26 @@
 
                 switch (alt85) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1176:26: {...}? => DOUBLE_PIPE and_restr_connective
+            	    // src/main/resources/org/drools/lang/DRL.g:1175: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_PIPE238=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective4016); if (state.failed) return retval;
+            	    DOUBLE_PIPE236=(Token)match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_or_restr_connective4024); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_PIPE238_tree = (Object)adaptor.create(DOUBLE_PIPE238);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE238_tree, root_0);
+            	    DOUBLE_PIPE236_tree = (Object)adaptor.create(DOUBLE_PIPE236);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_PIPE236_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_PIPE238, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_PIPE236, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4024);
-            	    and_restr_connective239=and_restr_connective();
+            	    pushFollow(FOLLOW_and_restr_connective_in_or_restr_connective4032);
+            	    and_restr_connective237=and_restr_connective();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective239.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, and_restr_connective237.getTree());
 
             	    }
             	    break;
@@ -10803,34 +10857,34 @@
     };
 
     // $ANTLR start "and_restr_connective"
-    // src/main/resources/org/drools/lang/DRL.g:1189:1: and_restr_connective : constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* ;
+    // src/main/resources/org/drools/lang/DRL.g:1188: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_AMPER241=null;
+        Token DOUBLE_AMPER239=null;
+        DRLParser.constraint_expression_return constraint_expression238 = null;
+
         DRLParser.constraint_expression_return constraint_expression240 = null;
 
-        DRLParser.constraint_expression_return constraint_expression242 = null;
 
+        Object DOUBLE_AMPER239_tree=null;
 
-        Object DOUBLE_AMPER241_tree=null;
-
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1190:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
-            // src/main/resources/org/drools/lang/DRL.g:1190:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
+            // src/main/resources/org/drools/lang/DRL.g:1189:2: ( constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )* )
+            // src/main/resources/org/drools/lang/DRL.g:1189:4: constraint_expression ({...}? => DOUBLE_AMPER constraint_expression )*
             {
             root_0 = (Object)adaptor.nil();
 
-            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4045);
-            constraint_expression240=constraint_expression();
+            pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4053);
+            constraint_expression238=constraint_expression();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression240.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1190:26: ({...}? => DOUBLE_AMPER constraint_expression )*
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression238.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1189:26: ({...}? => DOUBLE_AMPER constraint_expression )*
             loop86:
             do {
                 int alt86=2;
@@ -10849,26 +10903,26 @@
 
                 switch (alt86) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1190:27: {...}? => DOUBLE_AMPER constraint_expression
+            	    // src/main/resources/org/drools/lang/DRL.g:1189: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_AMPER241=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4051); if (state.failed) return retval;
+            	    DOUBLE_AMPER239=(Token)match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_and_restr_connective4059); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	    DOUBLE_AMPER241_tree = (Object)adaptor.create(DOUBLE_AMPER241);
-            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER241_tree, root_0);
+            	    DOUBLE_AMPER239_tree = (Object)adaptor.create(DOUBLE_AMPER239);
+            	    root_0 = (Object)adaptor.becomeRoot(DOUBLE_AMPER239_tree, root_0);
             	    }
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOUBLE_AMPER241, DroolsEditorType.SYMBOL);	
+            	      	emit(DOUBLE_AMPER239, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4058);
-            	    constraint_expression242=constraint_expression();
+            	    pushFollow(FOLLOW_constraint_expression_in_and_restr_connective4066);
+            	    constraint_expression240=constraint_expression();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression242.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, constraint_expression240.getTree());
 
             	    }
             	    break;
@@ -10912,80 +10966,80 @@
     };
 
     // $ANTLR start "constraint_expression"
-    // src/main/resources/org/drools/lang/DRL.g:1203:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );
+    // src/main/resources/org/drools/lang/DRL.g:1202:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | 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_PAREN245=null;
-        Token RIGHT_PAREN247=null;
-        DRLParser.compound_operator_return compound_operator243 = null;
+        Token LEFT_PAREN243=null;
+        Token RIGHT_PAREN245=null;
+        DRLParser.compound_operator_return compound_operator241 = null;
 
-        DRLParser.simple_operator_return simple_operator244 = null;
+        DRLParser.simple_operator_return simple_operator242 = null;
 
-        DRLParser.or_restr_connective_return or_restr_connective246 = null;
+        DRLParser.or_restr_connective_return or_restr_connective244 = null;
 
 
-        Object LEFT_PAREN245_tree=null;
-        Object RIGHT_PAREN247_tree=null;
+        Object LEFT_PAREN243_tree=null;
+        Object RIGHT_PAREN245_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1206:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1205:3: ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN )
             int alt87=3;
             alt87 = dfa87.predict(input);
             switch (alt87) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1206:5: compound_operator
+                    // src/main/resources/org/drools/lang/DRL.g:1205:5: compound_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4086);
-                    compound_operator243=compound_operator();
+                    pushFollow(FOLLOW_compound_operator_in_constraint_expression4094);
+                    compound_operator241=compound_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator243.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, compound_operator241.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1207:4: simple_operator
+                    // src/main/resources/org/drools/lang/DRL.g:1206:4: simple_operator
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4091);
-                    simple_operator244=simple_operator();
+                    pushFollow(FOLLOW_simple_operator_in_constraint_expression4099);
+                    simple_operator242=simple_operator();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, simple_operator244.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, simple_operator242.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1208:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
+                    // src/main/resources/org/drools/lang/DRL.g:1207:4: LEFT_PAREN or_restr_connective RIGHT_PAREN
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    LEFT_PAREN245=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4096); if (state.failed) return retval;
+                    LEFT_PAREN243=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_constraint_expression4104); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                      	emit(LEFT_PAREN245, DroolsEditorType.SYMBOL);	
+                      	emit(LEFT_PAREN243, DroolsEditorType.SYMBOL);	
                     }
-                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4105);
-                    or_restr_connective246=or_restr_connective();
+                    pushFollow(FOLLOW_or_restr_connective_in_constraint_expression4113);
+                    or_restr_connective244=or_restr_connective();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective246.getTree());
-                    RIGHT_PAREN247=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4110); if (state.failed) return retval;
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, or_restr_connective244.getTree());
+                    RIGHT_PAREN245=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_constraint_expression4118); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    RIGHT_PAREN247_tree = (Object)adaptor.create(RIGHT_PAREN247);
-                    adaptor.addChild(root_0, RIGHT_PAREN247_tree);
+                    RIGHT_PAREN245_tree = (Object)adaptor.create(RIGHT_PAREN245);
+                    adaptor.addChild(root_0, RIGHT_PAREN245_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(RIGHT_PAREN247, DroolsEditorType.SYMBOL);	
+                      	emit(RIGHT_PAREN245, DroolsEditorType.SYMBOL);	
                     }
 
                     }
@@ -11055,43 +11109,43 @@
     };
 
     // $ANTLR start "simple_operator"
-    // src/main/resources/org/drools/lang/DRL.g:1254:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value ;
+    // src/main/resources/org/drools/lang/DRL.g:1253:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value ;
     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 EQUAL248=null;
-        Token GREATER249=null;
-        Token GREATER_EQUAL250=null;
-        Token LESS251=null;
-        Token LESS_EQUAL252=null;
-        Token NOT_EQUAL253=null;
-        DRLParser.not_key_return not_key254 = null;
+        Token EQUAL246=null;
+        Token GREATER247=null;
+        Token GREATER_EQUAL248=null;
+        Token LESS249=null;
+        Token LESS_EQUAL250=null;
+        Token NOT_EQUAL251=null;
+        DRLParser.not_key_return not_key252 = null;
 
-        DRLParser.operator_key_return operator_key255 = null;
+        DRLParser.operator_key_return operator_key253 = null;
 
-        DRLParser.square_chunk_return square_chunk256 = null;
+        DRLParser.square_chunk_return square_chunk254 = null;
 
-        DRLParser.expression_value_return expression_value257 = null;
+        DRLParser.expression_value_return expression_value255 = null;
 
 
-        Object EQUAL248_tree=null;
-        Object GREATER249_tree=null;
-        Object GREATER_EQUAL250_tree=null;
-        Object LESS251_tree=null;
-        Object LESS_EQUAL252_tree=null;
-        Object NOT_EQUAL253_tree=null;
+        Object EQUAL246_tree=null;
+        Object GREATER247_tree=null;
+        Object GREATER_EQUAL248_tree=null;
+        Object LESS249_tree=null;
+        Object LESS_EQUAL250_tree=null;
+        Object NOT_EQUAL251_tree=null;
 
         if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1256:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value )
-            // src/main/resources/org/drools/lang/DRL.g:1257:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value
+            // src/main/resources/org/drools/lang/DRL.g:1255:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value )
+            // src/main/resources/org/drools/lang/DRL.g:1256:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) ) expression_value
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1257:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) )
+            // src/main/resources/org/drools/lang/DRL.g:1256:2: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | ( not_key )? ( operator_key ( square_chunk )? ) )
             int alt90=7;
             int LA90_0 = input.LA(1);
 
@@ -11125,93 +11179,93 @@
             }
             switch (alt90) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1258:3: EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1257:3: EQUAL
                     {
-                    EQUAL248=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4145); if (state.failed) return retval;
+                    EQUAL246=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_simple_operator4153); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    EQUAL248_tree = (Object)adaptor.create(EQUAL248);
-                    root_0 = (Object)adaptor.becomeRoot(EQUAL248_tree, root_0);
+                    EQUAL246_tree = (Object)adaptor.create(EQUAL246);
+                    root_0 = (Object)adaptor.becomeRoot(EQUAL246_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(EQUAL248, DroolsEditorType.SYMBOL);	
+                      	emit(EQUAL246, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1259:4: GREATER
+                    // src/main/resources/org/drools/lang/DRL.g:1258:4: GREATER
                     {
-                    GREATER249=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator4153); if (state.failed) return retval;
+                    GREATER247=(Token)match(input,GREATER,FOLLOW_GREATER_in_simple_operator4161); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    GREATER249_tree = (Object)adaptor.create(GREATER249);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER249_tree, root_0);
+                    GREATER247_tree = (Object)adaptor.create(GREATER247);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER247_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(GREATER249, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER247, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1260:4: GREATER_EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1259:4: GREATER_EQUAL
                     {
-                    GREATER_EQUAL250=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4161); if (state.failed) return retval;
+                    GREATER_EQUAL248=(Token)match(input,GREATER_EQUAL,FOLLOW_GREATER_EQUAL_in_simple_operator4169); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    GREATER_EQUAL250_tree = (Object)adaptor.create(GREATER_EQUAL250);
-                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL250_tree, root_0);
+                    GREATER_EQUAL248_tree = (Object)adaptor.create(GREATER_EQUAL248);
+                    root_0 = (Object)adaptor.becomeRoot(GREATER_EQUAL248_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(GREATER_EQUAL250, DroolsEditorType.SYMBOL);	
+                      	emit(GREATER_EQUAL248, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1261:4: LESS
+                    // src/main/resources/org/drools/lang/DRL.g:1260:4: LESS
                     {
-                    LESS251=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator4169); if (state.failed) return retval;
+                    LESS249=(Token)match(input,LESS,FOLLOW_LESS_in_simple_operator4177); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    LESS251_tree = (Object)adaptor.create(LESS251);
-                    root_0 = (Object)adaptor.becomeRoot(LESS251_tree, root_0);
+                    LESS249_tree = (Object)adaptor.create(LESS249);
+                    root_0 = (Object)adaptor.becomeRoot(LESS249_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(LESS251, DroolsEditorType.SYMBOL);	
+                      	emit(LESS249, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1262:4: LESS_EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1261:4: LESS_EQUAL
                     {
-                    LESS_EQUAL252=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4177); if (state.failed) return retval;
+                    LESS_EQUAL250=(Token)match(input,LESS_EQUAL,FOLLOW_LESS_EQUAL_in_simple_operator4185); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    LESS_EQUAL252_tree = (Object)adaptor.create(LESS_EQUAL252);
-                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL252_tree, root_0);
+                    LESS_EQUAL250_tree = (Object)adaptor.create(LESS_EQUAL250);
+                    root_0 = (Object)adaptor.becomeRoot(LESS_EQUAL250_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(LESS_EQUAL252, DroolsEditorType.SYMBOL);	
+                      	emit(LESS_EQUAL250, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 6 :
-                    // src/main/resources/org/drools/lang/DRL.g:1263:4: NOT_EQUAL
+                    // src/main/resources/org/drools/lang/DRL.g:1262:4: NOT_EQUAL
                     {
-                    NOT_EQUAL253=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4185); if (state.failed) return retval;
+                    NOT_EQUAL251=(Token)match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_simple_operator4193); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    NOT_EQUAL253_tree = (Object)adaptor.create(NOT_EQUAL253);
-                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL253_tree, root_0);
+                    NOT_EQUAL251_tree = (Object)adaptor.create(NOT_EQUAL251);
+                    root_0 = (Object)adaptor.becomeRoot(NOT_EQUAL251_tree, root_0);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(NOT_EQUAL253, DroolsEditorType.SYMBOL);	
+                      	emit(NOT_EQUAL251, DroolsEditorType.SYMBOL);	
                     }
 
                     }
                     break;
                 case 7 :
-                    // src/main/resources/org/drools/lang/DRL.g:1264:4: ( not_key )? ( operator_key ( square_chunk )? )
+                    // src/main/resources/org/drools/lang/DRL.g:1263:4: ( not_key )? ( operator_key ( square_chunk )? )
                     {
-                    // src/main/resources/org/drools/lang/DRL.g:1264:4: ( not_key )?
+                    // src/main/resources/org/drools/lang/DRL.g:1263:4: ( not_key )?
                     int alt88=2;
                     int LA88_0 = input.LA(1);
 
@@ -11224,30 +11278,30 @@
                     }
                     switch (alt88) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1264:4: not_key
+                            // src/main/resources/org/drools/lang/DRL.g:1263:4: not_key
                             {
-                            pushFollow(FOLLOW_not_key_in_simple_operator4193);
-                            not_key254=not_key();
+                            pushFollow(FOLLOW_not_key_in_simple_operator4201);
+                            not_key252=not_key();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key254.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key252.getTree());
 
                             }
                             break;
 
                     }
 
-                    // src/main/resources/org/drools/lang/DRL.g:1265:3: ( operator_key ( square_chunk )? )
-                    // src/main/resources/org/drools/lang/DRL.g:1265:5: operator_key ( square_chunk )?
+                    // src/main/resources/org/drools/lang/DRL.g:1264:3: ( operator_key ( square_chunk )? )
+                    // src/main/resources/org/drools/lang/DRL.g:1264:5: operator_key ( square_chunk )?
                     {
-                    pushFollow(FOLLOW_operator_key_in_simple_operator4200);
-                    operator_key255=operator_key();
+                    pushFollow(FOLLOW_operator_key_in_simple_operator4208);
+                    operator_key253=operator_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key255.getTree(), root_0);
-                    // src/main/resources/org/drools/lang/DRL.g:1265:19: ( square_chunk )?
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(operator_key253.getTree(), root_0);
+                    // src/main/resources/org/drools/lang/DRL.g:1264:19: ( square_chunk )?
                     int alt89=2;
                     int LA89_0 = input.LA(1);
 
@@ -11256,14 +11310,14 @@
                     }
                     switch (alt89) {
                         case 1 :
-                            // src/main/resources/org/drools/lang/DRL.g:1265:19: square_chunk
+                            // src/main/resources/org/drools/lang/DRL.g:1264:19: square_chunk
                             {
-                            pushFollow(FOLLOW_square_chunk_in_simple_operator4203);
-                            square_chunk256=square_chunk();
+                            pushFollow(FOLLOW_square_chunk_in_simple_operator4211);
+                            square_chunk254=square_chunk();
 
                             state._fsp--;
                             if (state.failed) return retval;
-                            if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk256.getTree());
+                            if ( state.backtracking==0 ) adaptor.addChild(root_0, square_chunk254.getTree());
 
                             }
                             break;
@@ -11282,12 +11336,12 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            pushFollow(FOLLOW_expression_value_in_simple_operator4215);
-            expression_value257=expression_value();
+            pushFollow(FOLLOW_expression_value_in_simple_operator4223);
+            expression_value255=expression_value();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value257.getTree());
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value255.getTree());
 
             }
 
@@ -11317,39 +11371,39 @@
     };
 
     // $ANTLR start "compound_operator"
-    // src/main/resources/org/drools/lang/DRL.g:1272:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    // src/main/resources/org/drools/lang/DRL.g:1271: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_PAREN261=null;
-        Token COMMA263=null;
-        Token RIGHT_PAREN265=null;
+        Token LEFT_PAREN259=null;
+        Token COMMA261=null;
+        Token RIGHT_PAREN263=null;
+        DRLParser.in_key_return in_key256 = null;
+
+        DRLParser.not_key_return not_key257 = null;
+
         DRLParser.in_key_return in_key258 = null;
 
-        DRLParser.not_key_return not_key259 = null;
+        DRLParser.expression_value_return expression_value260 = null;
 
-        DRLParser.in_key_return in_key260 = null;
-
         DRLParser.expression_value_return expression_value262 = null;
 
-        DRLParser.expression_value_return expression_value264 = null;
 
+        Object LEFT_PAREN259_tree=null;
+        Object COMMA261_tree=null;
+        Object RIGHT_PAREN263_tree=null;
 
-        Object LEFT_PAREN261_tree=null;
-        Object COMMA263_tree=null;
-        Object RIGHT_PAREN265_tree=null;
-
          if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1274:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1275:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1273:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1274:2: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1275:2: ( in_key | not_key in_key )
+            // src/main/resources/org/drools/lang/DRL.g:1274:2: ( in_key | not_key in_key )
             int alt91=2;
             int LA91_0 = input.LA(1);
 
@@ -11379,32 +11433,32 @@
             }
             switch (alt91) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1275:4: in_key
+                    // src/main/resources/org/drools/lang/DRL.g:1274:4: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator4237);
-                    in_key258=in_key();
+                    pushFollow(FOLLOW_in_key_in_compound_operator4245);
+                    in_key256=in_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key258.getTree(), root_0);
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key256.getTree(), root_0);
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1275:14: not_key in_key
+                    // src/main/resources/org/drools/lang/DRL.g:1274:14: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator4242);
-                    not_key259=not_key();
+                    pushFollow(FOLLOW_not_key_in_compound_operator4250);
+                    not_key257=not_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key259.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator4244);
-                    in_key260=in_key();
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_key257.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator4252);
+                    in_key258=in_key();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key260.getTree(), root_0);
+                    if ( state.backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key258.getTree(), root_0);
 
                     }
                     break;
@@ -11414,17 +11468,17 @@
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	
             }
-            LEFT_PAREN261=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4255); if (state.failed) return retval;
+            LEFT_PAREN259=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator4263); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-              	emit(LEFT_PAREN261, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_PAREN259, DroolsEditorType.SYMBOL);	
             }
-            pushFollow(FOLLOW_expression_value_in_compound_operator4263);
-            expression_value262=expression_value();
+            pushFollow(FOLLOW_expression_value_in_compound_operator4271);
+            expression_value260=expression_value();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value262.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1278:21: ( COMMA expression_value )*
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value260.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1277:21: ( COMMA expression_value )*
             loop92:
             do {
                 int alt92=2;
@@ -11437,18 +11491,18 @@
 
                 switch (alt92) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1278:23: COMMA expression_value
+            	    // src/main/resources/org/drools/lang/DRL.g:1277:23: COMMA expression_value
             	    {
-            	    COMMA263=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator4267); if (state.failed) return retval;
+            	    COMMA261=(Token)match(input,COMMA,FOLLOW_COMMA_in_compound_operator4275); if (state.failed) return retval;
             	    if ( state.backtracking==0 ) {
-            	      	emit(COMMA263, DroolsEditorType.SYMBOL);	
+            	      	emit(COMMA261, DroolsEditorType.SYMBOL);	
             	    }
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator4272);
-            	    expression_value264=expression_value();
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator4280);
+            	    expression_value262=expression_value();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value264.getTree());
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, expression_value262.getTree());
 
             	    }
             	    break;
@@ -11458,13 +11512,13 @@
                 }
             } while (true);
 
-            RIGHT_PAREN265=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4280); if (state.failed) return retval;
+            RIGHT_PAREN263=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator4288); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            RIGHT_PAREN265_tree = (Object)adaptor.create(RIGHT_PAREN265);
-            adaptor.addChild(root_0, RIGHT_PAREN265_tree);
+            RIGHT_PAREN263_tree = (Object)adaptor.create(RIGHT_PAREN263);
+            adaptor.addChild(root_0, RIGHT_PAREN263_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_PAREN265, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_PAREN263, DroolsEditorType.SYMBOL);	
             }
             if ( state.backtracking==0 ) {
               	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	
@@ -11504,7 +11558,7 @@
     };
 
     // $ANTLR start "operator_key"
-    // src/main/resources/org/drools/lang/DRL.g:1289:1: operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1288: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);
@@ -11517,14 +11571,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1290:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1290:9: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1289:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1289: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_key4311); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_operator_key4319); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -11543,7 +11597,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1292:9: -> VK_OPERATOR[$id]
+            // 1291:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -11578,7 +11632,7 @@
     };
 
     // $ANTLR start "neg_operator_key"
-    // src/main/resources/org/drools/lang/DRL.g:1295:1: neg_operator_key : {...}? =>id= ID -> VK_OPERATOR[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1294: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);
@@ -11591,14 +11645,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1296:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1296:9: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1295:2: ({...}? =>id= ID -> VK_OPERATOR[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1295: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_key4356); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_neg_operator_key4364); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -11617,7 +11671,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1298:9: -> VK_OPERATOR[$id]
+            // 1297:9: -> VK_OPERATOR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OPERATOR, id));
 
@@ -11652,28 +11706,28 @@
     };
 
     // $ANTLR start "expression_value"
-    // src/main/resources/org/drools/lang/DRL.g:1301:1: expression_value : ( accessor_path | literal_constraint | paren_chunk ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1300: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_path266 = null;
+        DRLParser.accessor_path_return accessor_path264 = null;
 
-        DRLParser.literal_constraint_return literal_constraint267 = null;
+        DRLParser.literal_constraint_return literal_constraint265 = null;
 
-        DRLParser.paren_chunk_return paren_chunk268 = null;
+        DRLParser.paren_chunk_return paren_chunk266 = null;
 
 
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1302:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
-            // src/main/resources/org/drools/lang/DRL.g:1302:4: ( accessor_path | literal_constraint | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:1301:2: ( ( accessor_path | literal_constraint | paren_chunk ) )
+            // src/main/resources/org/drools/lang/DRL.g:1301:4: ( accessor_path | literal_constraint | paren_chunk )
             {
             root_0 = (Object)adaptor.nil();
 
-            // src/main/resources/org/drools/lang/DRL.g:1302:4: ( accessor_path | literal_constraint | paren_chunk )
+            // src/main/resources/org/drools/lang/DRL.g:1301:4: ( accessor_path | literal_constraint | paren_chunk )
             int alt93=3;
             switch ( input.LA(1) ) {
             case ID:
@@ -11705,38 +11759,38 @@
 
             switch (alt93) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1302:5: accessor_path
+                    // src/main/resources/org/drools/lang/DRL.g:1301:5: accessor_path
                     {
-                    pushFollow(FOLLOW_accessor_path_in_expression_value4393);
-                    accessor_path266=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_expression_value4401);
+                    accessor_path264=accessor_path();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path266.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, accessor_path264.getTree());
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1303:4: literal_constraint
+                    // src/main/resources/org/drools/lang/DRL.g:1302:4: literal_constraint
                     {
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value4398);
-                    literal_constraint267=literal_constraint();
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value4406);
+                    literal_constraint265=literal_constraint();
 
                     state._fsp--;
                     if (state.failed) return retval;
-                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint267.getTree());
+                    if ( state.backtracking==0 ) adaptor.addChild(root_0, literal_constraint265.getTree());
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1304:4: paren_chunk
+                    // src/main/resources/org/drools/lang/DRL.g:1303:4: paren_chunk
                     {
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value4404);
-                    paren_chunk268=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value4412);
+                    paren_chunk266=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_chunk266.getTree());
 
                     }
                     break;
@@ -11785,27 +11839,27 @@
     };
 
     // $ANTLR start "literal_constraint"
-    // src/main/resources/org/drools/lang/DRL.g:1318:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    // src/main/resources/org/drools/lang/DRL.g:1317: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 STRING269=null;
-        Token INT270=null;
-        Token FLOAT271=null;
-        Token BOOL272=null;
-        Token NULL273=null;
+        Token STRING267=null;
+        Token INT268=null;
+        Token FLOAT269=null;
+        Token BOOL270=null;
+        Token NULL271=null;
 
-        Object STRING269_tree=null;
-        Object INT270_tree=null;
-        Object FLOAT271_tree=null;
-        Object BOOL272_tree=null;
-        Object NULL273_tree=null;
+        Object STRING267_tree=null;
+        Object INT268_tree=null;
+        Object FLOAT269_tree=null;
+        Object BOOL270_tree=null;
+        Object NULL271_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1319:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            // src/main/resources/org/drools/lang/DRL.g:1318:2: ( STRING | INT | FLOAT | BOOL | NULL )
             int alt94=5;
             switch ( input.LA(1) ) {
             case STRING:
@@ -11843,81 +11897,81 @@
 
             switch (alt94) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1319:4: STRING
+                    // src/main/resources/org/drools/lang/DRL.g:1318:4: STRING
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    STRING269=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint4423); if (state.failed) return retval;
+                    STRING267=(Token)match(input,STRING,FOLLOW_STRING_in_literal_constraint4431); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    STRING269_tree = (Object)adaptor.create(STRING269);
-                    adaptor.addChild(root_0, STRING269_tree);
+                    STRING267_tree = (Object)adaptor.create(STRING267);
+                    adaptor.addChild(root_0, STRING267_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(STRING269, DroolsEditorType.STRING_CONST);	
+                      	emit(STRING267, DroolsEditorType.STRING_CONST);	
                     }
 
                     }
                     break;
                 case 2 :
-                    // src/main/resources/org/drools/lang/DRL.g:1320:4: INT
+                    // src/main/resources/org/drools/lang/DRL.g:1319:4: INT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    INT270=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint4430); if (state.failed) return retval;
+                    INT268=(Token)match(input,INT,FOLLOW_INT_in_literal_constraint4438); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    INT270_tree = (Object)adaptor.create(INT270);
-                    adaptor.addChild(root_0, INT270_tree);
+                    INT268_tree = (Object)adaptor.create(INT268);
+                    adaptor.addChild(root_0, INT268_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(INT270, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(INT268, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 3 :
-                    // src/main/resources/org/drools/lang/DRL.g:1321:4: FLOAT
+                    // src/main/resources/org/drools/lang/DRL.g:1320:4: FLOAT
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    FLOAT271=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4437); if (state.failed) return retval;
+                    FLOAT269=(Token)match(input,FLOAT,FOLLOW_FLOAT_in_literal_constraint4445); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    FLOAT271_tree = (Object)adaptor.create(FLOAT271);
-                    adaptor.addChild(root_0, FLOAT271_tree);
+                    FLOAT269_tree = (Object)adaptor.create(FLOAT269);
+                    adaptor.addChild(root_0, FLOAT269_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(FLOAT271, DroolsEditorType.NUMERIC_CONST);	
+                      	emit(FLOAT269, DroolsEditorType.NUMERIC_CONST);	
                     }
 
                     }
                     break;
                 case 4 :
-                    // src/main/resources/org/drools/lang/DRL.g:1322:4: BOOL
+                    // src/main/resources/org/drools/lang/DRL.g:1321:4: BOOL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    BOOL272=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4444); if (state.failed) return retval;
+                    BOOL270=(Token)match(input,BOOL,FOLLOW_BOOL_in_literal_constraint4452); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    BOOL272_tree = (Object)adaptor.create(BOOL272);
-                    adaptor.addChild(root_0, BOOL272_tree);
+                    BOOL270_tree = (Object)adaptor.create(BOOL270);
+                    adaptor.addChild(root_0, BOOL270_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(BOOL272, DroolsEditorType.BOOLEAN_CONST);	
+                      	emit(BOOL270, DroolsEditorType.BOOLEAN_CONST);	
                     }
 
                     }
                     break;
                 case 5 :
-                    // src/main/resources/org/drools/lang/DRL.g:1323:4: NULL
+                    // src/main/resources/org/drools/lang/DRL.g:1322:4: NULL
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    NULL273=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint4451); if (state.failed) return retval;
+                    NULL271=(Token)match(input,NULL,FOLLOW_NULL_in_literal_constraint4459); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
-                    NULL273_tree = (Object)adaptor.create(NULL273);
-                    adaptor.addChild(root_0, NULL273_tree);
+                    NULL271_tree = (Object)adaptor.create(NULL271);
+                    adaptor.addChild(root_0, NULL271_tree);
                     }
                     if ( state.backtracking==0 ) {
-                      	emit(NULL273, DroolsEditorType.NULL_CONST);	
+                      	emit(NULL271, DroolsEditorType.NULL_CONST);	
                     }
 
                     }
@@ -11950,7 +12004,7 @@
     };
 
     // $ANTLR start "pattern_type"
-    // src/main/resources/org/drools/lang/DRL.g:1326:1: pattern_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1325: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);
@@ -11959,7 +12013,7 @@
 
         Token id=null;
         List list_id=null;
-        DRLParser.dimension_definition_return dimension_definition274 = null;
+        DRLParser.dimension_definition_return dimension_definition272 = null;
 
 
         Object id_tree=null;
@@ -11967,16 +12021,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1327:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1327:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:1326:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:1326:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4466); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4474); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:1327:11: (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:1326:11: (id+= DOT id+= ID )*
             loop95:
             do {
                 int alt95=2;
@@ -11989,15 +12043,15 @@
 
                 switch (alt95) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1327:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:1326:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type4472); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_pattern_type4480); 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_type4476); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_pattern_type4484); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -12016,7 +12070,7 @@
               	emit(list_id, DroolsEditorType.IDENTIFIER);
               		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens(list_id));	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1330:6: ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:1329:6: ( dimension_definition )*
             loop96:
             do {
                 int alt96=2;
@@ -12029,14 +12083,14 @@
 
                 switch (alt96) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1330:6: dimension_definition
+            	    // src/main/resources/org/drools/lang/DRL.g:1329:6: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4491);
-            	    dimension_definition274=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type4499);
+            	    dimension_definition272=dimension_definition();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition274.getTree());
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition272.getTree());
 
             	    }
             	    break;
@@ -12049,7 +12103,7 @@
 
 
             // AST REWRITE
-            // elements: dimension_definition, ID
+            // elements: ID, dimension_definition
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -12059,9 +12113,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1331:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 1330:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1331:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // src/main/resources/org/drools/lang/DRL.g:1330: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);
@@ -12074,7 +12128,7 @@
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1331:28: ( dimension_definition )*
+                // src/main/resources/org/drools/lang/DRL.g:1330:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -12115,7 +12169,7 @@
     };
 
     // $ANTLR start "data_type"
-    // src/main/resources/org/drools/lang/DRL.g:1334:1: data_type : id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1333: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);
@@ -12124,7 +12178,7 @@
 
         Token id=null;
         List list_id=null;
-        DRLParser.dimension_definition_return dimension_definition275 = null;
+        DRLParser.dimension_definition_return dimension_definition273 = null;
 
 
         Object id_tree=null;
@@ -12132,16 +12186,16 @@
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1335:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1335:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:1334:2: (id+= ID (id+= DOT id+= ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:1334:4: id+= ID (id+= DOT id+= ID )* ( dimension_definition )*
             {
-            id=(Token)match(input,ID,FOLLOW_ID_in_data_type4519); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_data_type4527); 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);
 
-            // src/main/resources/org/drools/lang/DRL.g:1335:11: (id+= DOT id+= ID )*
+            // src/main/resources/org/drools/lang/DRL.g:1334:11: (id+= DOT id+= ID )*
             loop97:
             do {
                 int alt97=2;
@@ -12154,15 +12208,15 @@
 
                 switch (alt97) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1335:13: id+= DOT id+= ID
+            	    // src/main/resources/org/drools/lang/DRL.g:1334:13: id+= DOT id+= ID
             	    {
-            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type4525); if (state.failed) return retval; 
+            	    id=(Token)match(input,DOT,FOLLOW_DOT_in_data_type4533); 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_type4529); if (state.failed) return retval; 
+            	    id=(Token)match(input,ID,FOLLOW_ID_in_data_type4537); if (state.failed) return retval; 
             	    if ( state.backtracking==0 ) stream_ID.add(id);
 
             	    if (list_id==null) list_id=new ArrayList();
@@ -12177,7 +12231,7 @@
                 }
             } while (true);
 
-            // src/main/resources/org/drools/lang/DRL.g:1335:31: ( dimension_definition )*
+            // src/main/resources/org/drools/lang/DRL.g:1334:31: ( dimension_definition )*
             loop98:
             do {
                 int alt98=2;
@@ -12190,14 +12244,14 @@
 
                 switch (alt98) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1335:31: dimension_definition
+            	    // src/main/resources/org/drools/lang/DRL.g:1334:31: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type4534);
-            	    dimension_definition275=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type4542);
+            	    dimension_definition273=dimension_definition();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition275.getTree());
+            	    if ( state.backtracking==0 ) stream_dimension_definition.add(dimension_definition273.getTree());
 
             	    }
             	    break;
@@ -12223,9 +12277,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1337:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 1336:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1337:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // src/main/resources/org/drools/lang/DRL.g:1336: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);
@@ -12238,7 +12292,7 @@
 
                 }
                 stream_ID.reset();
-                // src/main/resources/org/drools/lang/DRL.g:1337:25: ( dimension_definition )*
+                // src/main/resources/org/drools/lang/DRL.g:1336:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.nextTree());
 
@@ -12279,40 +12333,40 @@
     };
 
     // $ANTLR start "dimension_definition"
-    // src/main/resources/org/drools/lang/DRL.g:1340:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // src/main/resources/org/drools/lang/DRL.g:1339: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_SQUARE276=null;
-        Token RIGHT_SQUARE277=null;
+        Token LEFT_SQUARE274=null;
+        Token RIGHT_SQUARE275=null;
 
-        Object LEFT_SQUARE276_tree=null;
-        Object RIGHT_SQUARE277_tree=null;
+        Object LEFT_SQUARE274_tree=null;
+        Object RIGHT_SQUARE275_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1341:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1341:4: LEFT_SQUARE RIGHT_SQUARE
+            // src/main/resources/org/drools/lang/DRL.g:1340:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // src/main/resources/org/drools/lang/DRL.g:1340:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE276=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4563); if (state.failed) return retval;
+            LEFT_SQUARE274=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition4571); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            LEFT_SQUARE276_tree = (Object)adaptor.create(LEFT_SQUARE276);
-            adaptor.addChild(root_0, LEFT_SQUARE276_tree);
+            LEFT_SQUARE274_tree = (Object)adaptor.create(LEFT_SQUARE274);
+            adaptor.addChild(root_0, LEFT_SQUARE274_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(LEFT_SQUARE276, DroolsEditorType.SYMBOL);	
+              	emit(LEFT_SQUARE274, DroolsEditorType.SYMBOL);	
             }
-            RIGHT_SQUARE277=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4570); if (state.failed) return retval;
+            RIGHT_SQUARE275=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition4578); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            RIGHT_SQUARE277_tree = (Object)adaptor.create(RIGHT_SQUARE277);
-            adaptor.addChild(root_0, RIGHT_SQUARE277_tree);
+            RIGHT_SQUARE275_tree = (Object)adaptor.create(RIGHT_SQUARE275);
+            adaptor.addChild(root_0, RIGHT_SQUARE275_tree);
             }
             if ( state.backtracking==0 ) {
-              	emit(RIGHT_SQUARE277, DroolsEditorType.SYMBOL);	
+              	emit(RIGHT_SQUARE275, DroolsEditorType.SYMBOL);	
             }
 
             }
@@ -12343,33 +12397,33 @@
     };
 
     // $ANTLR start "accessor_path"
-    // src/main/resources/org/drools/lang/DRL.g:1345:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1344: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 DOT279=null;
+        Token DOT277=null;
+        DRLParser.accessor_element_return accessor_element276 = null;
+
         DRLParser.accessor_element_return accessor_element278 = null;
 
-        DRLParser.accessor_element_return accessor_element280 = null;
 
-
-        Object DOT279_tree=null;
+        Object DOT277_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_accessor_element=new RewriteRuleSubtreeStream(adaptor,"rule accessor_element");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1346:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // src/main/resources/org/drools/lang/DRL.g:1346:4: accessor_element ( DOT accessor_element )*
+            // src/main/resources/org/drools/lang/DRL.g:1345:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // src/main/resources/org/drools/lang/DRL.g:1345:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path4584);
-            accessor_element278=accessor_element();
+            pushFollow(FOLLOW_accessor_element_in_accessor_path4592);
+            accessor_element276=accessor_element();
 
             state._fsp--;
             if (state.failed) return retval;
-            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element278.getTree());
-            // src/main/resources/org/drools/lang/DRL.g:1346:21: ( DOT accessor_element )*
+            if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element276.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1345:21: ( DOT accessor_element )*
             loop99:
             do {
                 int alt99=2;
@@ -12382,20 +12436,20 @@
 
                 switch (alt99) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1346:23: DOT accessor_element
+            	    // src/main/resources/org/drools/lang/DRL.g:1345:23: DOT accessor_element
             	    {
-            	    DOT279=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path4588); if (state.failed) return retval; 
-            	    if ( state.backtracking==0 ) stream_DOT.add(DOT279);
+            	    DOT277=(Token)match(input,DOT,FOLLOW_DOT_in_accessor_path4596); if (state.failed) return retval; 
+            	    if ( state.backtracking==0 ) stream_DOT.add(DOT277);
 
             	    if ( state.backtracking==0 ) {
-            	      	emit(DOT279, DroolsEditorType.IDENTIFIER);	
+            	      	emit(DOT277, DroolsEditorType.IDENTIFIER);	
             	    }
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4592);
-            	    accessor_element280=accessor_element();
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path4600);
+            	    accessor_element278=accessor_element();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element280.getTree());
+            	    if ( state.backtracking==0 ) stream_accessor_element.add(accessor_element278.getTree());
 
             	    }
             	    break;
@@ -12418,9 +12472,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1347:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 1346:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1347:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // src/main/resources/org/drools/lang/DRL.g:1346: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);
@@ -12468,31 +12522,31 @@
     };
 
     // $ANTLR start "accessor_element"
-    // src/main/resources/org/drools/lang/DRL.g:1350:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    // src/main/resources/org/drools/lang/DRL.g:1349: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 ID281=null;
-        DRLParser.square_chunk_return square_chunk282 = null;
+        Token ID279=null;
+        DRLParser.square_chunk_return square_chunk280 = null;
 
 
-        Object ID281_tree=null;
+        Object ID279_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1351:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // src/main/resources/org/drools/lang/DRL.g:1351:4: ID ( square_chunk )*
+            // src/main/resources/org/drools/lang/DRL.g:1350:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // src/main/resources/org/drools/lang/DRL.g:1350:4: ID ( square_chunk )*
             {
-            ID281=(Token)match(input,ID,FOLLOW_ID_in_accessor_element4616); if (state.failed) return retval; 
-            if ( state.backtracking==0 ) stream_ID.add(ID281);
+            ID279=(Token)match(input,ID,FOLLOW_ID_in_accessor_element4624); if (state.failed) return retval; 
+            if ( state.backtracking==0 ) stream_ID.add(ID279);
 
             if ( state.backtracking==0 ) {
-              	emit(ID281, DroolsEditorType.IDENTIFIER);	
+              	emit(ID279, DroolsEditorType.IDENTIFIER);	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1352:3: ( square_chunk )*
+            // src/main/resources/org/drools/lang/DRL.g:1351:3: ( square_chunk )*
             loop100:
             do {
                 int alt100=2;
@@ -12505,14 +12559,14 @@
 
                 switch (alt100) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1352:3: square_chunk
+            	    // src/main/resources/org/drools/lang/DRL.g:1351:3: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4622);
-            	    square_chunk282=square_chunk();
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element4630);
+            	    square_chunk280=square_chunk();
 
             	    state._fsp--;
             	    if (state.failed) return retval;
-            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk282.getTree());
+            	    if ( state.backtracking==0 ) stream_square_chunk.add(square_chunk280.getTree());
 
             	    }
             	    break;
@@ -12535,15 +12589,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1353:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 1352:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // src/main/resources/org/drools/lang/DRL.g:1353:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // src/main/resources/org/drools/lang/DRL.g:1352: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());
-                // src/main/resources/org/drools/lang/DRL.g:1353:30: ( square_chunk )*
+                // src/main/resources/org/drools/lang/DRL.g:1352:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.nextTree());
 
@@ -12584,7 +12638,7 @@
     };
 
     // $ANTLR start "rhs_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1356:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1355: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);
@@ -12599,10 +12653,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1359:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1359:5: rc= rhs_chunk_data
+            // src/main/resources/org/drools/lang/DRL.g:1358:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1358:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4651);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk4659);
             rc=rhs_chunk_data();
 
             state._fsp--;
@@ -12624,7 +12678,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1360:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 1359:2: -> VT_RHS_CHUNK[$rc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_RHS_CHUNK, (rc!=null?((Token)rc.start):null), text));
 
@@ -12659,70 +12713,70 @@
     };
 
     // $ANTLR start "rhs_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1363:1: rhs_chunk_data : THEN (any=~ END )* end1= END ( SEMICOLON )? ;
+    // src/main/resources/org/drools/lang/DRL.g:1362: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 any=null;
-        Token end1=null;
-        Token THEN283=null;
+        Token THEN281=null;
         Token SEMICOLON284=null;
+        DRLParser.not_end_key_return not_end_key282 = null;
 
-        Object any_tree=null;
-        Object end1_tree=null;
-        Object THEN283_tree=null;
+        DRLParser.end_key_return end_key283 = null;
+
+
+        Object THEN281_tree=null;
         Object SEMICOLON284_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1364:2: ( THEN (any=~ END )* end1= END ( SEMICOLON )? )
-            // src/main/resources/org/drools/lang/DRL.g:1364:4: THEN (any=~ END )* end1= END ( SEMICOLON )?
+            // src/main/resources/org/drools/lang/DRL.g:1363:2: ( THEN ( not_end_key )* end_key ( SEMICOLON )? )
+            // src/main/resources/org/drools/lang/DRL.g:1363:4: THEN ( not_end_key )* end_key ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN283=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4670); if (state.failed) return retval;
+            THEN281=(Token)match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data4678); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
-            THEN283_tree = (Object)adaptor.create(THEN283);
-            adaptor.addChild(root_0, THEN283_tree);
+            THEN281_tree = (Object)adaptor.create(THEN281);
+            adaptor.addChild(root_0, THEN281_tree);
             }
             if ( state.backtracking==0 ) {
-              	if ((THEN283!=null?THEN283.getText():null).equalsIgnoreCase("then")){
-              			emit(THEN283, DroolsEditorType.KEYWORD);
+              	if ((THEN281!=null?THEN281.getText():null).equalsIgnoreCase("then")){
+              			emit(THEN281, DroolsEditorType.KEYWORD);
               			emit(Location.LOCATION_RHS);
               		}	
             }
-            // src/main/resources/org/drools/lang/DRL.g:1369:4: (any=~ END )*
+            // src/main/resources/org/drools/lang/DRL.g:1368:4: ( not_end_key )*
             loop101:
             do {
                 int alt101=2;
                 int LA101_0 = input.LA(1);
 
-                if ( ((LA101_0>=VT_COMPILATION_UNIT && LA101_0<=DOT_STAR)||(LA101_0>=STRING && LA101_0<=MULTI_LINE_COMMENT)) ) {
+                if ( (LA101_0==ID) && (((!(validateIdentifierKey(DroolsSoftKeywords.END)))||((validateIdentifierKey(DroolsSoftKeywords.END)))))) {
+                    int LA101_1 = input.LA(2);
+
+                    if ( ((!(validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
+                        alt101=1;
+                    }
+
+
+                }
+                else if ( ((LA101_0>=VT_COMPILATION_UNIT && LA101_0<=SEMICOLON)||(LA101_0>=DOT && LA101_0<=MULTI_LINE_COMMENT)) && ((!(validateIdentifierKey(DroolsSoftKeywords.END))))) {
                     alt101=1;
                 }
 
 
                 switch (alt101) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1369:6: any=~ END
+            	    // src/main/resources/org/drools/lang/DRL.g:1368:4: not_end_key
             	    {
-            	    any=(Token)input.LT(1);
-            	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=DOT_STAR)||(input.LA(1)>=STRING && input.LA(1)<=MULTI_LINE_COMMENT) ) {
-            	        input.consume();
-            	        if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(any));
-            	        state.errorRecovery=false;state.failed=false;
-            	    }
-            	    else {
-            	        if (state.backtracking>0) {state.failed=true; return retval;}
-            	        MismatchedSetException mse = new MismatchedSetException(null,input);
-            	        throw mse;
-            	    }
+            	    pushFollow(FOLLOW_not_end_key_in_rhs_chunk_data4687);
+            	    not_end_key282=not_end_key();
 
-            	    if ( state.backtracking==0 ) {
-            	       emit(any, DroolsEditorType.CODE_CHUNK); 
-            	    }
+            	    state._fsp--;
+            	    if (state.failed) return retval;
+            	    if ( state.backtracking==0 ) adaptor.addChild(root_0, not_end_key282.getTree());
 
             	    }
             	    break;
@@ -12732,15 +12786,13 @@
                 }
             } while (true);
 
-            end1=(Token)match(input,END,FOLLOW_END_in_rhs_chunk_data4696); if (state.failed) return retval;
-            if ( state.backtracking==0 ) {
-            end1_tree = (Object)adaptor.create(end1);
-            adaptor.addChild(root_0, end1_tree);
-            }
-            if ( state.backtracking==0 ) {
-              	emit(end1, DroolsEditorType.KEYWORD);	
-            }
-            // src/main/resources/org/drools/lang/DRL.g:1371:3: ( SEMICOLON )?
+            pushFollow(FOLLOW_end_key_in_rhs_chunk_data4693);
+            end_key283=end_key();
+
+            state._fsp--;
+            if (state.failed) return retval;
+            if ( state.backtracking==0 ) adaptor.addChild(root_0, end_key283.getTree());
+            // src/main/resources/org/drools/lang/DRL.g:1370:3: ( SEMICOLON )?
             int alt102=2;
             int LA102_0 = input.LA(1);
 
@@ -12749,9 +12801,9 @@
             }
             switch (alt102) {
                 case 1 :
-                    // src/main/resources/org/drools/lang/DRL.g:1371:3: SEMICOLON
+                    // src/main/resources/org/drools/lang/DRL.g:1370:3: SEMICOLON
                     {
-                    SEMICOLON284=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4702); if (state.failed) return retval;
+                    SEMICOLON284=(Token)match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data4698); if (state.failed) return retval;
                     if ( state.backtracking==0 ) {
                     SEMICOLON284_tree = (Object)adaptor.create(SEMICOLON284);
                     adaptor.addChild(root_0, SEMICOLON284_tree);
@@ -12794,7 +12846,7 @@
     };
 
     // $ANTLR start "curly_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1374:1: curly_chunk : cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1373: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);
@@ -12809,10 +12861,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1377:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1377:5: cc= curly_chunk_data[false]
+            // src/main/resources/org/drools/lang/DRL.g:1376:3: (cc= curly_chunk_data[false] -> VT_CURLY_CHUNK[$cc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1376:5: cc= curly_chunk_data[false]
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4721);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk4717);
             cc=curly_chunk_data(false);
 
             state._fsp--;
@@ -12834,7 +12886,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1378:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 1377:2: -> VT_CURLY_CHUNK[$cc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_CURLY_CHUNK, (cc!=null?((Token)cc.start):null), text));
 
@@ -12869,7 +12921,7 @@
     };
 
     // $ANTLR start "curly_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1381:1: curly_chunk_data[boolean isRecursive] : lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY ;
+    // src/main/resources/org/drools/lang/DRL.g:1380: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);
@@ -12887,12 +12939,12 @@
         Object rc1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1382:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
-            // src/main/resources/org/drools/lang/DRL.g:1382:4: lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY
+            // src/main/resources/org/drools/lang/DRL.g:1381:2: (lc1= LEFT_CURLY (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )* rc1= RIGHT_CURLY )
+            // src/main/resources/org/drools/lang/DRL.g:1381: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_data4744); if (state.failed) return retval;
+            lc1=(Token)match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data4740); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lc1_tree = (Object)adaptor.create(lc1);
             adaptor.addChild(root_0, lc1_tree);
@@ -12905,7 +12957,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1389:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
+            // src/main/resources/org/drools/lang/DRL.g:1388:4: (any=~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data[true] )*
             loop103:
             do {
                 int alt103=3;
@@ -12921,7 +12973,7 @@
 
                 switch (alt103) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1389:5: any=~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // src/main/resources/org/drools/lang/DRL.g:1388: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) ) {
@@ -12942,9 +12994,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1389:87: curly_chunk_data[true]
+            	    // src/main/resources/org/drools/lang/DRL.g:1388:87: curly_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4772);
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data4768);
             	    curly_chunk_data285=curly_chunk_data(true);
 
             	    state._fsp--;
@@ -12959,7 +13011,7 @@
                 }
             } while (true);
 
-            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4783); if (state.failed) return retval;
+            rc1=(Token)match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data4779); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rc1_tree = (Object)adaptor.create(rc1);
             adaptor.addChild(root_0, rc1_tree);
@@ -13001,7 +13053,7 @@
     };
 
     // $ANTLR start "paren_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1399:1: paren_chunk : pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1398: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);
@@ -13016,10 +13068,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1402:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1402:5: pc= paren_chunk_data[false]
+            // src/main/resources/org/drools/lang/DRL.g:1401:3: (pc= paren_chunk_data[false] -> VT_PAREN_CHUNK[$pc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1401:5: pc= paren_chunk_data[false]
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4804);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk4800);
             pc=paren_chunk_data(false);
 
             state._fsp--;
@@ -13041,7 +13093,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1403:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 1402:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_PAREN_CHUNK, (pc!=null?((Token)pc.start):null), text));
 
@@ -13076,7 +13128,7 @@
     };
 
     // $ANTLR start "paren_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1406:1: paren_chunk_data[boolean isRecursive] : lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN ;
+    // src/main/resources/org/drools/lang/DRL.g:1405: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);
@@ -13094,12 +13146,12 @@
         Object rp1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1407:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
-            // src/main/resources/org/drools/lang/DRL.g:1407:4: lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN
+            // src/main/resources/org/drools/lang/DRL.g:1406:2: (lp1= LEFT_PAREN (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )* rp1= RIGHT_PAREN )
+            // src/main/resources/org/drools/lang/DRL.g:1406: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_data4828); if (state.failed) return retval;
+            lp1=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data4824); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             lp1_tree = (Object)adaptor.create(lp1);
             adaptor.addChild(root_0, lp1_tree);
@@ -13112,7 +13164,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1414:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
+            // src/main/resources/org/drools/lang/DRL.g:1413:4: (any=~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data[true] )*
             loop104:
             do {
                 int alt104=3;
@@ -13128,7 +13180,7 @@
 
                 switch (alt104) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1414:5: any=~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // src/main/resources/org/drools/lang/DRL.g:1413: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) ) {
@@ -13149,9 +13201,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1414:87: paren_chunk_data[true]
+            	    // src/main/resources/org/drools/lang/DRL.g:1413:87: paren_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4856);
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data4852);
             	    paren_chunk_data286=paren_chunk_data(true);
 
             	    state._fsp--;
@@ -13166,7 +13218,7 @@
                 }
             } while (true);
 
-            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4867); if (state.failed) return retval;
+            rp1=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data4863); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rp1_tree = (Object)adaptor.create(rp1);
             adaptor.addChild(root_0, rp1_tree);
@@ -13208,7 +13260,7 @@
     };
 
     // $ANTLR start "square_chunk"
-    // src/main/resources/org/drools/lang/DRL.g:1424:1: square_chunk : sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1423: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);
@@ -13223,10 +13275,10 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1427:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // src/main/resources/org/drools/lang/DRL.g:1427:5: sc= square_chunk_data[false]
+            // src/main/resources/org/drools/lang/DRL.g:1426:3: (sc= square_chunk_data[false] -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // src/main/resources/org/drools/lang/DRL.g:1426:5: sc= square_chunk_data[false]
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4888);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk4884);
             sc=square_chunk_data(false);
 
             state._fsp--;
@@ -13248,7 +13300,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1428:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 1427:2: -> VT_SQUARE_CHUNK[$sc.start,text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VT_SQUARE_CHUNK, (sc!=null?((Token)sc.start):null), text));
 
@@ -13283,7 +13335,7 @@
     };
 
     // $ANTLR start "square_chunk_data"
-    // src/main/resources/org/drools/lang/DRL.g:1431:1: square_chunk_data[boolean isRecursive] : ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE ;
+    // src/main/resources/org/drools/lang/DRL.g:1430: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);
@@ -13301,12 +13353,12 @@
         Object rs1_tree=null;
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1432:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
-            // src/main/resources/org/drools/lang/DRL.g:1432:4: ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE
+            // src/main/resources/org/drools/lang/DRL.g:1431:2: (ls1= LEFT_SQUARE (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )* rs1= RIGHT_SQUARE )
+            // src/main/resources/org/drools/lang/DRL.g:1431: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_data4911); if (state.failed) return retval;
+            ls1=(Token)match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data4907); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             ls1_tree = (Object)adaptor.create(ls1);
             adaptor.addChild(root_0, ls1_tree);
@@ -13319,7 +13371,7 @@
               			}	
               		
             }
-            // src/main/resources/org/drools/lang/DRL.g:1439:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
+            // src/main/resources/org/drools/lang/DRL.g:1438:4: (any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data[true] )*
             loop105:
             do {
                 int alt105=3;
@@ -13335,7 +13387,7 @@
 
                 switch (alt105) {
             	case 1 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1439:5: any=~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // src/main/resources/org/drools/lang/DRL.g:1438: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) ) {
@@ -13356,9 +13408,9 @@
             	    }
             	    break;
             	case 2 :
-            	    // src/main/resources/org/drools/lang/DRL.g:1439:88: square_chunk_data[true]
+            	    // src/main/resources/org/drools/lang/DRL.g:1438:88: square_chunk_data[true]
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4938);
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data4934);
             	    square_chunk_data287=square_chunk_data(true);
 
             	    state._fsp--;
@@ -13373,7 +13425,7 @@
                 }
             } while (true);
 
-            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4949); if (state.failed) return retval;
+            rs1=(Token)match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data4945); if (state.failed) return retval;
             if ( state.backtracking==0 ) {
             rs1_tree = (Object)adaptor.create(rs1);
             adaptor.addChild(root_0, rs1_tree);
@@ -13415,7 +13467,7 @@
     };
 
     // $ANTLR start "lock_on_active_key"
-    // src/main/resources/org/drools/lang/DRL.g:1449:1: lock_on_active_key : {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1448: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);
@@ -13440,26 +13492,26 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1452:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1452:5: {...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID
+            // src/main/resources/org/drools/lang/DRL.g:1451:3: ({...}? =>id1= ID mis1= MISC id2= ID mis2= MISC id3= ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1451: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_key4973); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4969); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4977); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4973); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4981); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4977); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
-            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4985); if (state.failed) return retval; 
+            mis2=(Token)match(input,MISC,FOLLOW_MISC_in_lock_on_active_key4981); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis2);
 
-            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4989); if (state.failed) return retval; 
+            id3=(Token)match(input,ID,FOLLOW_ID_in_lock_on_active_key4985); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id3);
 
             if ( state.backtracking==0 ) {
@@ -13485,7 +13537,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1458:3: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 1457:3: -> VK_LOCK_ON_ACTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start), text));
 
@@ -13520,7 +13572,7 @@
     };
 
     // $ANTLR start "date_effective_key"
-    // src/main/resources/org/drools/lang/DRL.g:1461:1: date_effective_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1460: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);
@@ -13541,20 +13593,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1464:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1464:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1463:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1463: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_key5021); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5017); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key5025); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_effective_key5021); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5029); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_effective_key5025); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13578,7 +13630,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1468:3: -> VK_DATE_EFFECTIVE[$start, text]
+            // 1467:3: -> VK_DATE_EFFECTIVE[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start), text));
 
@@ -13613,7 +13665,7 @@
     };
 
     // $ANTLR start "date_expires_key"
-    // src/main/resources/org/drools/lang/DRL.g:1471:1: date_expires_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1470: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);
@@ -13634,20 +13686,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1474:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1474:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1473:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_DATE_EXPIRES[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1473: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_key5061); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5057); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key5065); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_date_expires_key5061); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5069); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_date_expires_key5065); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13671,7 +13723,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1478:3: -> VK_DATE_EXPIRES[$start, text]
+            // 1477:3: -> VK_DATE_EXPIRES[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start), text));
 
@@ -13706,7 +13758,7 @@
     };
 
     // $ANTLR start "no_loop_key"
-    // src/main/resources/org/drools/lang/DRL.g:1481:1: no_loop_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1480: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);
@@ -13727,20 +13779,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1484:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1484:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1483:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_NO_LOOP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1483: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_key5101); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5097); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key5105); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_no_loop_key5101); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5109); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_no_loop_key5105); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13764,7 +13816,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1488:3: -> VK_NO_LOOP[$start, text]
+            // 1487:3: -> VK_NO_LOOP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NO_LOOP, ((Token)retval.start), text));
 
@@ -13799,7 +13851,7 @@
     };
 
     // $ANTLR start "auto_focus_key"
-    // src/main/resources/org/drools/lang/DRL.g:1491:1: auto_focus_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1490: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);
@@ -13820,20 +13872,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1494:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1494:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1493:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AUTO_FOCUS[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1493: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_key5141); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5137); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key5145); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_auto_focus_key5141); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5149); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_auto_focus_key5145); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13857,7 +13909,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1498:3: -> VK_AUTO_FOCUS[$start, text]
+            // 1497:3: -> VK_AUTO_FOCUS[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start), text));
 
@@ -13892,7 +13944,7 @@
     };
 
     // $ANTLR start "activation_group_key"
-    // src/main/resources/org/drools/lang/DRL.g:1501:1: activation_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1500: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);
@@ -13913,20 +13965,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1504:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1504:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1503:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1503: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_key5181); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5177); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key5185); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_activation_group_key5181); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5189); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_activation_group_key5185); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -13950,7 +14002,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1508:3: -> VK_ACTIVATION_GROUP[$start, text]
+            // 1507:3: -> VK_ACTIVATION_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start), text));
 
@@ -13985,7 +14037,7 @@
     };
 
     // $ANTLR start "agenda_group_key"
-    // src/main/resources/org/drools/lang/DRL.g:1511:1: agenda_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1510: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);
@@ -14006,20 +14058,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1514:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1514:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1513:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_AGENDA_GROUP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1513: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_key5221); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5217); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key5225); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_agenda_group_key5221); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5229); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_agenda_group_key5225); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14043,7 +14095,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1518:3: -> VK_AGENDA_GROUP[$start, text]
+            // 1517:3: -> VK_AGENDA_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start), text));
 
@@ -14078,7 +14130,7 @@
     };
 
     // $ANTLR start "ruleflow_group_key"
-    // src/main/resources/org/drools/lang/DRL.g:1521:1: ruleflow_group_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1520: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);
@@ -14099,20 +14151,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1524:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1524:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1523:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1523: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_key5261); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5257); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5265); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key5261); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5269); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_ruleflow_group_key5265); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14136,7 +14188,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1528:3: -> VK_RULEFLOW_GROUP[$start, text]
+            // 1527:3: -> VK_RULEFLOW_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start), text));
 
@@ -14171,7 +14223,7 @@
     };
 
     // $ANTLR start "entry_point_key"
-    // src/main/resources/org/drools/lang/DRL.g:1531:1: entry_point_key : {...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] ;
+    // src/main/resources/org/drools/lang/DRL.g:1530: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);
@@ -14192,20 +14244,20 @@
         	String text = "";
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1534:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
-            // src/main/resources/org/drools/lang/DRL.g:1534:5: {...}? =>id1= ID mis1= MISC id2= ID
+            // src/main/resources/org/drools/lang/DRL.g:1533:3: ({...}? =>id1= ID mis1= MISC id2= ID -> VK_ENTRY_POINT[$start, text] )
+            // src/main/resources/org/drools/lang/DRL.g:1533: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_key5301); if (state.failed) return retval; 
+            id1=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5297); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id1);
 
-            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key5305); if (state.failed) return retval; 
+            mis1=(Token)match(input,MISC,FOLLOW_MISC_in_entry_point_key5301); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_MISC.add(mis1);
 
-            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5309); if (state.failed) return retval; 
+            id2=(Token)match(input,ID,FOLLOW_ID_in_entry_point_key5305); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id2);
 
             if ( state.backtracking==0 ) {
@@ -14229,7 +14281,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1538:3: -> VK_ENTRY_POINT[$start, text]
+            // 1537:3: -> VK_ENTRY_POINT[$start, text]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENTRY_POINT, ((Token)retval.start), text));
 
@@ -14264,7 +14316,7 @@
     };
 
     // $ANTLR start "duration_key"
-    // src/main/resources/org/drools/lang/DRL.g:1541:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1540: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);
@@ -14277,14 +14329,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1542:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1542:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1541:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1541: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_key5338); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_duration_key5334); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14303,7 +14355,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1544:3: -> VK_DURATION[$id]
+            // 1543:3: -> VK_DURATION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DURATION, id));
 
@@ -14338,7 +14390,7 @@
     };
 
     // $ANTLR start "package_key"
-    // src/main/resources/org/drools/lang/DRL.g:1547:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1546: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);
@@ -14351,14 +14403,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1548:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1548:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1547:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1547: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_key5365); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_package_key5361); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14377,7 +14429,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1550:3: -> VK_PACKAGE[$id]
+            // 1549:3: -> VK_PACKAGE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_PACKAGE, id));
 
@@ -14412,7 +14464,7 @@
     };
 
     // $ANTLR start "import_key"
-    // src/main/resources/org/drools/lang/DRL.g:1553:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1552: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);
@@ -14425,14 +14477,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1554:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1554:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1553:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1553: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_key5392); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_import_key5388); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14451,7 +14503,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1556:3: -> VK_IMPORT[$id]
+            // 1555:3: -> VK_IMPORT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IMPORT, id));
 
@@ -14486,7 +14538,7 @@
     };
 
     // $ANTLR start "dialect_key"
-    // src/main/resources/org/drools/lang/DRL.g:1559:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1558: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);
@@ -14499,14 +14551,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1560:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1560:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1559:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1559: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_key5419); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_dialect_key5415); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14525,7 +14577,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1562:3: -> VK_DIALECT[$id]
+            // 1561:3: -> VK_DIALECT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DIALECT, id));
 
@@ -14560,7 +14612,7 @@
     };
 
     // $ANTLR start "salience_key"
-    // src/main/resources/org/drools/lang/DRL.g:1565:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1564: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);
@@ -14573,14 +14625,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1566:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1566:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1565:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1565: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_key5446); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_salience_key5442); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14599,7 +14651,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1568:3: -> VK_SALIENCE[$id]
+            // 1567:3: -> VK_SALIENCE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_SALIENCE, id));
 
@@ -14634,7 +14686,7 @@
     };
 
     // $ANTLR start "enabled_key"
-    // src/main/resources/org/drools/lang/DRL.g:1571:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1570: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);
@@ -14647,14 +14699,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1572:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1572:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1571:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1571: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_key5473); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_enabled_key5469); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14673,7 +14725,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1574:3: -> VK_ENABLED[$id]
+            // 1573:3: -> VK_ENABLED[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ENABLED, id));
 
@@ -14708,7 +14760,7 @@
     };
 
     // $ANTLR start "attributes_key"
-    // src/main/resources/org/drools/lang/DRL.g:1577:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1576: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);
@@ -14721,14 +14773,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1578:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1578:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1577:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1577: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_key5500); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_attributes_key5496); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14747,7 +14799,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1580:3: -> VK_ATTRIBUTES[$id]
+            // 1579:3: -> VK_ATTRIBUTES[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ATTRIBUTES, id));
 
@@ -14782,7 +14834,7 @@
     };
 
     // $ANTLR start "rule_key"
-    // src/main/resources/org/drools/lang/DRL.g:1583:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1582: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);
@@ -14795,14 +14847,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1584:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1584:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1583:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1583: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_key5527); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_rule_key5523); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14821,7 +14873,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1586:3: -> VK_RULE[$id]
+            // 1585:3: -> VK_RULE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RULE, id));
 
@@ -14856,7 +14908,7 @@
     };
 
     // $ANTLR start "extend_key"
-    // src/main/resources/org/drools/lang/DRL.g:1589:1: extend_key : {...}? =>id= ID -> VK_EXTEND[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1588: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);
@@ -14869,14 +14921,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1590:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1590:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1589:2: ({...}? =>id= ID -> VK_EXTEND[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1589: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_key5554); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_extend_key5550); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14895,7 +14947,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1592:3: -> VK_EXTEND[$id]
+            // 1591:3: -> VK_EXTEND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXTEND, id));
 
@@ -14930,7 +14982,7 @@
     };
 
     // $ANTLR start "template_key"
-    // src/main/resources/org/drools/lang/DRL.g:1595:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1594: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);
@@ -14943,14 +14995,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1596:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1596:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1595:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1595: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_key5581); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_template_key5577); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -14969,7 +15021,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1598:3: -> VK_TEMPLATE[$id]
+            // 1597:3: -> VK_TEMPLATE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_TEMPLATE, id));
 
@@ -15004,7 +15056,7 @@
     };
 
     // $ANTLR start "query_key"
-    // src/main/resources/org/drools/lang/DRL.g:1601:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1600: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);
@@ -15017,14 +15069,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1602:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1602:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1601:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1601: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_key5608); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_query_key5604); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15043,7 +15095,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1604:3: -> VK_QUERY[$id]
+            // 1603:3: -> VK_QUERY[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_QUERY, id));
 
@@ -15078,7 +15130,7 @@
     };
 
     // $ANTLR start "declare_key"
-    // src/main/resources/org/drools/lang/DRL.g:1607:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1606: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);
@@ -15091,14 +15143,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1608:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1608:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1607:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1607: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_key5635); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_declare_key5631); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15117,7 +15169,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1610:3: -> VK_DECLARE[$id]
+            // 1609:3: -> VK_DECLARE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_DECLARE, id));
 
@@ -15152,7 +15204,7 @@
     };
 
     // $ANTLR start "function_key"
-    // src/main/resources/org/drools/lang/DRL.g:1613:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1612: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);
@@ -15165,14 +15217,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1614:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1614:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1613:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1613: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_key5662); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_function_key5658); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15191,7 +15243,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1616:3: -> VK_FUNCTION[$id]
+            // 1615:3: -> VK_FUNCTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FUNCTION, id));
 
@@ -15226,7 +15278,7 @@
     };
 
     // $ANTLR start "global_key"
-    // src/main/resources/org/drools/lang/DRL.g:1619:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1618: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);
@@ -15239,14 +15291,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1620:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1620:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1619:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1619: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_key5689); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_global_key5685); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15265,7 +15317,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1622:3: -> VK_GLOBAL[$id]
+            // 1621:3: -> VK_GLOBAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_GLOBAL, id));
 
@@ -15300,7 +15352,7 @@
     };
 
     // $ANTLR start "eval_key"
-    // src/main/resources/org/drools/lang/DRL.g:1625:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1624: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);
@@ -15313,14 +15365,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1626:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1626:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1625:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1625: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_key5716); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_eval_key5712); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15339,7 +15391,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1628:3: -> VK_EVAL[$id]
+            // 1627:3: -> VK_EVAL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EVAL, id));
 
@@ -15374,7 +15426,7 @@
     };
 
     // $ANTLR start "not_key"
-    // src/main/resources/org/drools/lang/DRL.g:1631:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1630: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);
@@ -15387,14 +15439,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1632:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1632:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1631:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1631: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_key5743); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_not_key5739); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15413,7 +15465,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1634:3: -> VK_NOT[$id]
+            // 1633:3: -> VK_NOT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_NOT, id));
 
@@ -15448,7 +15500,7 @@
     };
 
     // $ANTLR start "in_key"
-    // src/main/resources/org/drools/lang/DRL.g:1637:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1636: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);
@@ -15461,14 +15513,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1638:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1638:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1637:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1637: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_key5770); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_in_key5766); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15487,7 +15539,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1640:3: -> VK_IN[$id]
+            // 1639:3: -> VK_IN[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_IN, id));
 
@@ -15522,7 +15574,7 @@
     };
 
     // $ANTLR start "or_key"
-    // src/main/resources/org/drools/lang/DRL.g:1643:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1642: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);
@@ -15535,14 +15587,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1644:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1644:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1643:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1643: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_key5797); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_or_key5793); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15561,7 +15613,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1646:3: -> VK_OR[$id]
+            // 1645:3: -> VK_OR[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_OR, id));
 
@@ -15596,7 +15648,7 @@
     };
 
     // $ANTLR start "and_key"
-    // src/main/resources/org/drools/lang/DRL.g:1649:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1648: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);
@@ -15609,14 +15661,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1650:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1650:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1649:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1649: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_key5824); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_and_key5820); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15635,7 +15687,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1652:3: -> VK_AND[$id]
+            // 1651:3: -> VK_AND[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_AND, id));
 
@@ -15670,7 +15722,7 @@
     };
 
     // $ANTLR start "exists_key"
-    // src/main/resources/org/drools/lang/DRL.g:1655:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1654: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);
@@ -15683,14 +15735,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1656:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1656:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1655:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1655: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_key5851); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_exists_key5847); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15709,7 +15761,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1658:3: -> VK_EXISTS[$id]
+            // 1657:3: -> VK_EXISTS[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_EXISTS, id));
 
@@ -15744,7 +15796,7 @@
     };
 
     // $ANTLR start "forall_key"
-    // src/main/resources/org/drools/lang/DRL.g:1661:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1660: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);
@@ -15757,14 +15809,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1662:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1662:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1661:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1661: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_key5878); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_forall_key5874); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15783,7 +15835,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1664:3: -> VK_FORALL[$id]
+            // 1663:3: -> VK_FORALL[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_FORALL, id));
 
@@ -15818,7 +15870,7 @@
     };
 
     // $ANTLR start "action_key"
-    // src/main/resources/org/drools/lang/DRL.g:1667:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1666: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);
@@ -15831,14 +15883,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1668:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1668:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1667:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1667: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_key5905); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_action_key5901); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15857,7 +15909,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1670:3: -> VK_ACTION[$id]
+            // 1669:3: -> VK_ACTION[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_ACTION, id));
 
@@ -15892,7 +15944,7 @@
     };
 
     // $ANTLR start "reverse_key"
-    // src/main/resources/org/drools/lang/DRL.g:1673:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1672: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);
@@ -15905,14 +15957,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1674:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1674:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1673:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1673: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_key5932); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_reverse_key5928); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -15931,7 +15983,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1676:3: -> VK_REVERSE[$id]
+            // 1675:3: -> VK_REVERSE[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_REVERSE, id));
 
@@ -15966,7 +16018,7 @@
     };
 
     // $ANTLR start "result_key"
-    // src/main/resources/org/drools/lang/DRL.g:1679:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    // src/main/resources/org/drools/lang/DRL.g:1678: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);
@@ -15979,14 +16031,14 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // src/main/resources/org/drools/lang/DRL.g:1680:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // src/main/resources/org/drools/lang/DRL.g:1680:4: {...}? =>id= ID
+            // src/main/resources/org/drools/lang/DRL.g:1679:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1679: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_key5959); if (state.failed) return retval; 
+            id=(Token)match(input,ID,FOLLOW_ID_in_result_key5955); if (state.failed) return retval; 
             if ( state.backtracking==0 ) stream_ID.add(id);
 
             if ( state.backtracking==0 ) {
@@ -16005,7 +16057,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 1682:3: -> VK_RESULT[$id]
+            // 1681:3: -> VK_RESULT[$id]
             {
                 adaptor.addChild(root_0, (Object)adaptor.create(VK_RESULT, id));
 
@@ -16034,13 +16086,220 @@
     }
     // $ANTLR end "result_key"
 
+    public static class end_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "end_key"
+    // src/main/resources/org/drools/lang/DRL.g:1684: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);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // src/main/resources/org/drools/lang/DRL.g:1685:2: ({...}? =>id= ID -> VK_END[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1685: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_key5982); 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();
+            // 1687:3: -> VK_END[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_END, 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 "end_key"
+
+    public static class not_end_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "not_end_key"
+    // src/main/resources/org/drools/lang/DRL.g:1690: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);
+
+        Object root_0 = null;
+
+        Token any=null;
+
+        Object any_tree=null;
+
+        try {
+            // src/main/resources/org/drools/lang/DRL.g:1691:2: ({...}? =>any= . )
+            // src/main/resources/org/drools/lang/DRL.g:1691:4: {...}? =>any= .
+            {
+            root_0 = (Object)adaptor.nil();
+
+            if ( !((!(validateIdentifierKey(DroolsSoftKeywords.END)))) ) {
+                if (state.backtracking>0) {state.failed=true; return retval;}
+                throw new FailedPredicateException(input, "not_end_key", "!(validateIdentifierKey(DroolsSoftKeywords.END))");
+            }
+            any=(Token)input.LT(1);
+            matchAny(input); if (state.failed) return retval;
+            if ( state.backtracking==0 ) {
+            any_tree = (Object)adaptor.create(any);
+            adaptor.addChild(root_0, any_tree);
+            }
+            if ( state.backtracking==0 ) {
+              	emit(any, DroolsEditorType.CODE_CHUNK);	
+            }
+
+            }
+
+            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 "not_end_key"
+
+    public static class init_key_return extends ParserRuleReturnScope {
+        Object tree;
+        public Object getTree() { return tree; }
+    };
+
+    // $ANTLR start "init_key"
+    // src/main/resources/org/drools/lang/DRL.g:1695: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);
+
+        Object root_0 = null;
+
+        Token id=null;
+
+        Object id_tree=null;
+        RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
+
+        try {
+            // src/main/resources/org/drools/lang/DRL.g:1696:2: ({...}? =>id= ID -> VK_INIT[$id] )
+            // src/main/resources/org/drools/lang/DRL.g:1696: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_key6029); 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();
+            // 1698:3: -> VK_INIT[$id]
+            {
+                adaptor.addChild(root_0, (Object)adaptor.create(VK_INIT, 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 "init_key"
+
     // $ANTLR start synpred1_DRL
     public final void synpred1_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:811:5: ( LEFT_PAREN or_key )
-        // src/main/resources/org/drools/lang/DRL.g:811:6: LEFT_PAREN or_key
+        // src/main/resources/org/drools/lang/DRL.g:810:5: ( LEFT_PAREN or_key )
+        // src/main/resources/org/drools/lang/DRL.g:810:6: LEFT_PAREN or_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2056); if (state.failed) return ;
-        pushFollow(FOLLOW_or_key_in_synpred1_DRL2058);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred1_DRL2065); if (state.failed) return ;
+        pushFollow(FOLLOW_or_key_in_synpred1_DRL2067);
         or_key();
 
         state._fsp--;
@@ -16052,7 +16311,7 @@
 
     // $ANTLR start synpred2_DRL
     public final void synpred2_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:819:5: ( or_key | DOUBLE_PIPE )
+        // src/main/resources/org/drools/lang/DRL.g:818:5: ( or_key | DOUBLE_PIPE )
         int alt106=2;
         int LA106_0 = input.LA(1);
 
@@ -16071,9 +16330,9 @@
         }
         switch (alt106) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:819:6: or_key
+                // src/main/resources/org/drools/lang/DRL.g:818:6: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred2_DRL2125);
+                pushFollow(FOLLOW_or_key_in_synpred2_DRL2134);
                 or_key();
 
                 state._fsp--;
@@ -16082,9 +16341,9 @@
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:819:13: DOUBLE_PIPE
+                // src/main/resources/org/drools/lang/DRL.g:818:13: DOUBLE_PIPE
                 {
-                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2127); if (state.failed) return ;
+                match(input,DOUBLE_PIPE,FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2136); if (state.failed) return ;
 
                 }
                 break;
@@ -16094,11 +16353,11 @@
 
     // $ANTLR start synpred3_DRL
     public final void synpred3_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:828:5: ( LEFT_PAREN and_key )
-        // src/main/resources/org/drools/lang/DRL.g:828:6: LEFT_PAREN and_key
+        // src/main/resources/org/drools/lang/DRL.g:827:5: ( LEFT_PAREN and_key )
+        // src/main/resources/org/drools/lang/DRL.g:827:6: LEFT_PAREN and_key
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2184); if (state.failed) return ;
-        pushFollow(FOLLOW_and_key_in_synpred3_DRL2186);
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred3_DRL2193); if (state.failed) return ;
+        pushFollow(FOLLOW_and_key_in_synpred3_DRL2195);
         and_key();
 
         state._fsp--;
@@ -16110,7 +16369,7 @@
 
     // $ANTLR start synpred4_DRL
     public final void synpred4_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:836:5: ( and_key | DOUBLE_AMPER )
+        // src/main/resources/org/drools/lang/DRL.g:835:5: ( and_key | DOUBLE_AMPER )
         int alt107=2;
         int LA107_0 = input.LA(1);
 
@@ -16129,9 +16388,9 @@
         }
         switch (alt107) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:836:6: and_key
+                // src/main/resources/org/drools/lang/DRL.g:835:6: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred4_DRL2254);
+                pushFollow(FOLLOW_and_key_in_synpred4_DRL2263);
                 and_key();
 
                 state._fsp--;
@@ -16140,9 +16399,9 @@
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:836:14: DOUBLE_AMPER
+                // src/main/resources/org/drools/lang/DRL.g:835:14: DOUBLE_AMPER
                 {
-                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2256); if (state.failed) return ;
+                match(input,DOUBLE_AMPER,FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2265); if (state.failed) return ;
 
                 }
                 break;
@@ -16152,10 +16411,10 @@
 
     // $ANTLR start synpred5_DRL
     public final void synpred5_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:853:4: ( SEMICOLON )
-        // src/main/resources/org/drools/lang/DRL.g:853:5: SEMICOLON
+        // src/main/resources/org/drools/lang/DRL.g:852:4: ( SEMICOLON )
+        // src/main/resources/org/drools/lang/DRL.g:852:5: SEMICOLON
         {
-        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred5_DRL2379); if (state.failed) return ;
+        match(input,SEMICOLON,FOLLOW_SEMICOLON_in_synpred5_DRL2388); if (state.failed) return ;
 
         }
     }
@@ -16163,11 +16422,11 @@
 
     // $ANTLR start synpred6_DRL
     public final void synpred6_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:859:12: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:859:13: LEFT_PAREN ( or_key | and_key )
+        // src/main/resources/org/drools/lang/DRL.g:858:12: ( LEFT_PAREN ( or_key | and_key ) )
+        // src/main/resources/org/drools/lang/DRL.g:858:13: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2416); if (state.failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:859:24: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred6_DRL2425); if (state.failed) return ;
+        // src/main/resources/org/drools/lang/DRL.g:858:24: ( or_key | and_key )
         int alt108=2;
         int LA108_0 = input.LA(1);
 
@@ -16197,9 +16456,9 @@
         }
         switch (alt108) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:859:25: or_key
+                // src/main/resources/org/drools/lang/DRL.g:858:25: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred6_DRL2419);
+                pushFollow(FOLLOW_or_key_in_synpred6_DRL2428);
                 or_key();
 
                 state._fsp--;
@@ -16208,9 +16467,9 @@
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:859:32: and_key
+                // src/main/resources/org/drools/lang/DRL.g:858:32: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred6_DRL2421);
+                pushFollow(FOLLOW_and_key_in_synpred6_DRL2430);
                 and_key();
 
                 state._fsp--;
@@ -16228,11 +16487,11 @@
 
     // $ANTLR start synpred7_DRL
     public final void synpred7_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:875:5: ( LEFT_PAREN ( or_key | and_key ) )
-        // src/main/resources/org/drools/lang/DRL.g:875:6: LEFT_PAREN ( or_key | and_key )
+        // src/main/resources/org/drools/lang/DRL.g:874:5: ( LEFT_PAREN ( or_key | and_key ) )
+        // src/main/resources/org/drools/lang/DRL.g:874:6: LEFT_PAREN ( or_key | and_key )
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred7_DRL2544); if (state.failed) return ;
-        // src/main/resources/org/drools/lang/DRL.g:875:17: ( or_key | and_key )
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred7_DRL2553); if (state.failed) return ;
+        // src/main/resources/org/drools/lang/DRL.g:874:17: ( or_key | and_key )
         int alt109=2;
         int LA109_0 = input.LA(1);
 
@@ -16262,9 +16521,9 @@
         }
         switch (alt109) {
             case 1 :
-                // src/main/resources/org/drools/lang/DRL.g:875:18: or_key
+                // src/main/resources/org/drools/lang/DRL.g:874:18: or_key
                 {
-                pushFollow(FOLLOW_or_key_in_synpred7_DRL2547);
+                pushFollow(FOLLOW_or_key_in_synpred7_DRL2556);
                 or_key();
 
                 state._fsp--;
@@ -16273,9 +16532,9 @@
                 }
                 break;
             case 2 :
-                // src/main/resources/org/drools/lang/DRL.g:875:25: and_key
+                // src/main/resources/org/drools/lang/DRL.g:874:25: and_key
                 {
-                pushFollow(FOLLOW_and_key_in_synpred7_DRL2549);
+                pushFollow(FOLLOW_and_key_in_synpred7_DRL2558);
                 and_key();
 
                 state._fsp--;
@@ -16293,10 +16552,10 @@
 
     // $ANTLR start synpred8_DRL
     public final void synpred8_DRL_fragment() throws RecognitionException {   
-        // src/main/resources/org/drools/lang/DRL.g:1052:5: ( LEFT_PAREN )
-        // src/main/resources/org/drools/lang/DRL.g:1052:6: LEFT_PAREN
+        // src/main/resources/org/drools/lang/DRL.g:1051:5: ( LEFT_PAREN )
+        // src/main/resources/org/drools/lang/DRL.g:1051:6: LEFT_PAREN
         {
-        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3378); if (state.failed) return ;
+        match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred8_DRL3386); if (state.failed) return ;
 
         }
     }
@@ -16433,16 +16692,16 @@
     static final String DFA1_eofS =
         "\1\2\11\uffff";
     static final String DFA1_minS =
-        "\2\120\2\uffff\1\0\5\uffff";
+        "\2\122\2\uffff\1\0\5\uffff";
     static final String DFA1_maxS =
-        "\1\120\1\163\2\uffff\1\0\5\uffff";
+        "\1\122\1\163\2\uffff\1\0\5\uffff";
     static final String DFA1_acceptS =
         "\2\uffff\2\2\1\uffff\4\2\1\1";
     static final String DFA1_specialS =
-        "\1\uffff\1\1\2\uffff\1\0\5\uffff}>";
+        "\1\uffff\1\0\2\uffff\1\1\5\uffff}>";
     static final String[] DFA1_transitionS = {
             "\1\1",
-            "\1\4\3\uffff\1\5\1\7\6\uffff\1\10\1\6\25\uffff\1\3",
+            "\1\4\2\uffff\1\7\1\6\6\uffff\1\10\1\5\24\uffff\1\3",
             "",
             "",
             "\1\uffff",
@@ -16483,28 +16742,13 @@
             this.transition = DFA1_transition;
         }
         public String getDescription() {
-            return "394:4: ( package_statement )?";
+            return "396: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_4 = input.LA(1);
-
-                         
-                        int index1_4 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
-
-                        else if ( (true) ) {s = 8;}
-
-                         
-                        input.seek(index1_4);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
                         int LA1_1 = input.LA(1);
 
                          
@@ -16515,11 +16759,11 @@
 
                         else if ( (LA1_1==ID) ) {s = 4;}
 
-                        else if ( (LA1_1==STRING) ) {s = 5;}
+                        else if ( (LA1_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {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)))))) {s = 6;}
 
-                        else if ( (LA1_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
+                        else if ( (LA1_1==STRING) ) {s = 7;}
 
                         else if ( (LA1_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 8;}
 
@@ -16527,6 +16771,21 @@
                         input.seek(index1_1);
                         if ( s>=0 ) return s;
                         break;
+                    case 1 : 
+                        int LA1_4 = input.LA(1);
+
+                         
+                        int index1_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.PACKAGE)))) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index1_4);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
@@ -16540,22 +16799,21 @@
     static final String DFA5_eofS =
         "\20\uffff";
     static final String DFA5_minS =
-        "\2\120\1\uffff\1\0\2\uffff\1\0\11\uffff";
+        "\2\122\3\uffff\2\0\11\uffff";
     static final String DFA5_maxS =
-        "\1\120\1\163\1\uffff\1\0\2\uffff\1\0\11\uffff";
+        "\1\122\1\163\3\uffff\2\0\11\uffff";
     static final String DFA5_acceptS =
-        "\2\uffff\1\1\1\uffff\2\1\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1"+
-        "\10\1\11";
+        "\2\uffff\3\1\2\uffff\1\1\1\6\1\10\1\11\1\2\1\3\1\4\1\5\1\7";
     static final String DFA5_specialS =
-        "\1\uffff\1\0\1\uffff\1\1\2\uffff\1\2\11\uffff}>";
+        "\1\uffff\1\0\3\uffff\1\1\1\2\11\uffff}>";
     static final String[] DFA5_transitionS = {
             "\1\1",
-            "\1\3\3\uffff\1\6\1\5\6\uffff\1\7\1\4\25\uffff\1\2",
+            "\1\6\2\uffff\1\5\1\4\6\uffff\1\7\1\3\24\uffff\1\2",
             "",
-            "\1\uffff",
             "",
             "",
             "\1\uffff",
+            "\1\uffff",
             "",
             "",
             "",
@@ -16597,7 +16855,7 @@
             this.transition = DFA5_transition;
         }
         public String getDescription() {
-            return "452:1: statement options {k=2; } : ( rule_attribute | {...}? => function_import_statement | import_statement | global | function | {...}? => template | {...}? => type_declaration | rule | query );";
+            return "454: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;
@@ -16612,13 +16870,13 @@
                         s = -1;
                         if ( (LA5_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DATE!
 ) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 2;}
 
-                        else if ( (LA5_1==ID) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(!
 (validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((valid!
 ateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey
(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(Drools!
 SoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))|
|!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validat!
 eIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1!
 , DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKey
words.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords!
 .IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "fun!
 ction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((
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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1,!
  DroolsSoftKeywords.TEMPLATE)))||(((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))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdenti!
 fierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywo
rds.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywo!
 rds.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((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))))||((validateI
dentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, D!
 roolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TEM
PLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))!
 ))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!
 !(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIde
ntifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifier!
 Key(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dr!
 oolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((valid!
 ateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierK
ey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Droo!
 lsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(Dr!
 oolsSoftKeywords.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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)!
 ))||((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((!
 (validateLT(1, "import") && validateLT(2, "function") ))&&((validateId
entifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifi!
 erKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftK!
 eywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((v
alidateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") !
 ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateI
dentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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(Drool!
 sSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((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))))||((validateIdentifierKey(!
 DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeyword
s.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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))))||((valida!
 teIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifier!
 Key(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && 
validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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(DroolsSoftKey!
 words.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)!
 ))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifi
erKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(D!
 roolsSoftKeywords.DECLARE)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKe!
 ywords.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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GL!
 OBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((!
 validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentif
ierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(!
 DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validat!
 eLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPO
RT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((val!
 idateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdenti!
 fierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeyw
ords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSof!
 tKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DE!
 CLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((va
lidateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateId!
 entifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((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))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateL!
 T(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywor
ds.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECL!
 ARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))!
 ||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT
(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(Dro!
 olsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSof!
 tKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECL
ARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUER!
 Y)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validat!
 eIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifie
rKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(Dr!
 oolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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(DroolsSo!
 ftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "func
tion") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") !
 ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!(((!
 (((validateLT(1, "import") && validateLT(2, "function") ))&&((validate
IdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKe!
 ywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||
!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((v!
 alidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((valida!
 teLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsS
oftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.FUNCTION)))||!(((((validateIdentifierKey(Drools!
 SoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKe!
 ywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function
") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((val!
 idateLT(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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdent!
 ifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSo
ftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Droo!
 lsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(Dro!
 olsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLAR
E)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((!
 validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, D
roolsSoftKeywords.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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE!
 )))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((va!
 lidateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateI
dentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && valida!
 teLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsS!
 oftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))
))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!!
 (((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((v!
 alidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifier
Key(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.GLOBAL)))||((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)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TE!
 MPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|
|(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifi!
 erKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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(DroolsS
oftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))))) {s = 3;}
+                        else if ( (LA5_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 3;}
 
-                        else if ( (LA5_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 4;}
+                        else if ( (LA5_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 4;}
 
-                        else if ( (LA5_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 5;}
+                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((vali!
 dateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, !
 DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsS
oftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords!
 .QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1
, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof!
 tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.!
 TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY))
)||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((!
 (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdenti
fierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKey!
 words.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!
(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((valida!
 teIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifi!
 erKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftK
eywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.Q!
 UERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((vali!
 dateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey
(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoft!
 Keywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((va
lidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, D!
 roolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftK!
 eywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords
.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validate!
 IdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof
tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.T!
 EMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))!
 )))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida
teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))))) {s = 5;}
 
-                        else if ( (LA5_1==STRING) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((vali!
 dateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, !
 DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsS
oftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords!
 .QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))|!
 |((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1
, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof!
 tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.!
 TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY))
)||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida!
 teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifi!
 erKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeyword
s.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)!
 )))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((!
 (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdenti
fierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKey!
 words.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!
(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((valida!
 teIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifi!
 erKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftK
eywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIA!
 LECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(!
 (validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, 
DroolsSoftKeywords.TEMPLATE))))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoft!
 Keywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.D!
 IALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((va
lidateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdent!
 ifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(Drool!
 sSoftKeywords.QUERY)))||!(((((validateIdentifierKey(DroolsSoftKeywords
.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validate!
 IdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSof
tKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.T!
 EMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))!
 )))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((valida
teIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifie!
 rKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))))) {s = 6;}
+                        else if ( (LA5_1==ID) && ((!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIden!
 tifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifi!
 erKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoft
Keywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "functio!
 n") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNC!
 TION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((vali
dateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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))))))||!(((((validateIde!
 ntifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, "impor!
 t") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSof
tKeywords.IMPORT))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.D!
 ECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((va!
 lidateLT(1, "import") && validateLT(2, "function") ))&&((validateIdent
ifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdent!
 ifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Dro!
 olsSoftKeywords.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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((val!
 idateLT(1, "import") && validateLT(2, "function") ))&&((validateIdenti
fierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey!
 (DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftK!
 eywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((v
alidateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))!
 )||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIden!
 tifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(Drools
SoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKey!
 words.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSo!
 ftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))
||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((val!
 idateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKe!
 y(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.T
EMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT!
 )))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(!
 (validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1,
 DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentif!
 ierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && vali!
 dateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.I
MPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)!
 ))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIde!
 ntifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(Drool
sSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && valida!
 teLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftK!
 eywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT))
)||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdent!
 ifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIden!
 tifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(Drools
SoftKeywords.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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.!
 DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE!
 )))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validat
eIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateI!
 dentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKe!
 y(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validate
LT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IM!
 PORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((vali
dateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT!
 (1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Drools!
 SoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)
))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMP!
 ORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1!
 , "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validate!
 IdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(Dr
oolsSoftKeywords.FUNCTION)))||((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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeyw!
 ords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DEC!
 LARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((val
idateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "impor!
 t") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") &&!
  validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywo
rds.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMP!
 LATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.I!
 MPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((val
idateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(!
 DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(Drools!
 SoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMP
ORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((val!
 idateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, Dro
olsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(Dro!
 olsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.
FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.!
 GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((vali!
 dateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, Drool
sSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSof!
 tKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, "import") && validateLT(2, "fun!
 ction") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((
(((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||!((((((val!
 idateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!((((((validateL!
 T(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoft
Keywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKe!
 ywords.GLOBAL)))||((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.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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validateLT(2!
 , "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))
)||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||!((((((validateLT(1!
 , DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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)))))))||!(((((validateIdentifierK!
 ey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, "import") && validate
LT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "!
 function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.FUNCTION)))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((vali!
 dateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIden
tifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||!(((((validateIdentifierK!
 ey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!(((((validateIdentifierKey(Dro!
 olsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)
))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))!
 )||((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.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((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))))||!(((((vali!
 dateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey
(DroolsSoftKeywords.GLOBAL)))||(((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)))))))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsS!
 oftKeywords.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKey!
 words.DECLARE)))))))||!((((((validateLT(1, "import") && validateLT(2, 
"function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))!
 ||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validat!
 eIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey
(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||(((validateLT(1, DroolsSoft!
 Keywords.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.QUERY)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSof!
 tKeywords.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.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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.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)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))||(((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))))) {s = 6;}
 
                         else if ( (LA5_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 7;}
 
@@ -16627,30 +16885,22 @@
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA5_3 = input.LA(1);
+                        int LA5_5 = input.LA(1);
 
                          
-                        int index5_3 = input.index();
+                        int index5_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) ) {s = 8;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 7;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {s = 9;}
+                        else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {s = 8;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {s = 10;}
+                        else if ( (!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))) ) {s = 9;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {s = 11;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 10;}
 
-                        else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {s = 12;}
-
-                        else if ( ((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))) ) {s = 13;}
-
-                        else if ( (!((((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))||((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))||((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))) ) {s = 14;}
-
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
-
                          
-                        input.seek(index5_3);
+                        input.seek(index5_5);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
@@ -16660,14 +16910,22 @@
                         int index5_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 7;}
+                        if ( ((((validateLT(1, "import") && validateLT(2, "function") ))&&((validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) ) {s = 11;}
 
-                        else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {s = 12;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {s = 12;}
 
-                        else if ( (!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateLT(1, DroolsSoftKeywords.TEMPLATE))))))) ) {s = 14;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) ) {s = 13;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 15;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) ) {s = 14;}
 
+                        else if ( (((validateLT(1, DroolsSoftKeywords.TEMPLATE)))) ) {s = 8;}
+
+                        else if ( ((((validateLT(1, DroolsSoftKeywords.DECLARE)))&&((validateIdentifierKey(DroolsSoftKeywords.DECLARE))))) ) {s = 15;}
+
+                        else if ( (!(((((validateIdentifierKey(DroolsSoftKeywords.QUERY)))||((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))||((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))))))) ) {s = 9;}
+
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) ) {s = 10;}
+
                          
                         input.seek(index5_6);
                         if ( s>=0 ) return s;
@@ -16685,29 +16943,30 @@
     static final String DFA12_eofS =
         "\16\uffff";
     static final String DFA12_minS =
-        "\2\120\1\uffff\1\120\1\uffff\2\120\2\157\2\120\1\125\1\157\1\120";
+        "\2\122\1\uffff\1\122\1\uffff\1\157\3\122\1\157\1\122\1\126\1\157"+
+        "\1\122";
     static final String DFA12_maxS =
-        "\1\125\1\127\1\uffff\1\156\1\uffff\1\156\1\120\2\157\3\156\1\157"+
-        "\1\156";
+        "\1\126\1\130\1\uffff\1\156\1\uffff\1\157\1\156\1\122\1\156\1\157"+
+        "\2\156\1\157\1\156";
     static final String DFA12_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\11\uffff";
     static final String DFA12_specialS =
         "\16\uffff}>";
     static final String[] DFA12_transitionS = {
-            "\1\2\2\uffff\1\2\1\uffff\1\1",
-            "\1\3\4\uffff\1\2\1\uffff\1\4",
+            "\1\2\3\uffff\1\1",
+            "\1\3\3\uffff\1\2\1\uffff\1\4",
             "",
-            "\1\5\1\6\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\7",
+            "\1\6\1\7\2\uffff\1\2\2\4\1\uffff\1\2\23\uffff\1\5",
             "",
-            "\2\2\3\uffff\1\2\2\4\1\uffff\1\2\24\uffff\1\10",
-            "\1\11",
+            "\1\10",
+            "\2\2\2\uffff\1\2\2\4\1\uffff\1\2\23\uffff\1\11",
             "\1\12",
+            "\1\4\3\uffff\1\2\2\4\25\uffff\1\5",
             "\1\13",
-            "\1\4\1\6\3\uffff\1\2\30\uffff\1\14",
-            "\1\4\4\uffff\1\2\2\4\26\uffff\1\7",
-            "\1\2\2\4\26\uffff\1\10",
+            "\1\4\1\7\2\uffff\1\2\27\uffff\1\14",
+            "\1\2\2\4\25\uffff\1\11",
             "\1\15",
-            "\1\4\4\uffff\1\2\30\uffff\1\14"
+            "\1\4\3\uffff\1\2\27\uffff\1\14"
     };
 
     static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
@@ -16740,7 +16999,7 @@
             this.transition = DFA12_transition;
         }
         public String getDescription() {
-            return "523:3: ( parameters )?";
+            return "525:3: ( parameters )?";
         }
     }
     static final String DFA17_eotS =
@@ -16748,20 +17007,20 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\120\1\uffff\1\157\1\uffff\1\120";
+        "\2\122\1\157\2\uffff\1\122";
     static final String DFA17_maxS =
-        "\1\120\1\156\1\uffff\1\157\1\uffff\1\156";
+        "\1\122\1\156\1\157\2\uffff\1\156";
     static final String DFA17_acceptS =
-        "\2\uffff\1\1\1\uffff\1\2\1\uffff";
+        "\3\uffff\1\2\1\1\1\uffff";
     static final String DFA17_specialS =
         "\6\uffff}>";
     static final String[] DFA17_transitionS = {
             "\1\1",
-            "\2\2\4\uffff\2\4\26\uffff\1\3",
-            "",
+            "\2\4\3\uffff\2\3\25\uffff\1\2",
             "\1\5",
             "",
-            "\1\2\5\uffff\2\4\26\uffff\1\3"
+            "",
+            "\1\4\4\uffff\2\3\25\uffff\1\2"
     };
 
     static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
@@ -16794,7 +17053,7 @@
             this.transition = DFA17_transition;
         }
         public String getDescription() {
-            return "549:4: ( data_type )?";
+            return "550:4: ( data_type )?";
         }
     }
     static final String DFA28_eotS =
@@ -16802,25 +17061,25 @@
     static final String DFA28_eofS =
         "\12\uffff";
     static final String DFA28_minS =
-        "\2\120\7\uffff\1\0";
+        "\2\122\3\uffff\1\0\4\uffff";
     static final String DFA28_maxS =
-        "\1\160\1\163\7\uffff\1\0";
+        "\1\160\1\163\3\uffff\1\0\4\uffff";
     static final String DFA28_acceptS =
-        "\2\uffff\6\2\1\1\1\uffff";
+        "\2\uffff\2\2\1\1\1\uffff\4\2";
     static final String DFA28_specialS =
-        "\1\2\1\0\7\uffff\1\1}>";
+        "\1\1\1\2\3\uffff\1\0\4\uffff}>";
     static final String[] DFA28_transitionS = {
-            "\1\1\7\uffff\1\2\2\uffff\1\2\24\uffff\1\2",
-            "\1\10\3\uffff\1\11\1\5\3\uffff\1\6\2\uffff\1\7\1\4\25\uffff"+
+            "\1\1\6\uffff\1\2\2\uffff\1\2\23\uffff\1\2",
+            "\1\4\2\uffff\1\5\1\7\3\uffff\1\11\2\uffff\1\6\1\10\24\uffff"+
             "\1\3",
             "",
             "",
             "",
+            "\1\uffff",
             "",
             "",
             "",
-            "",
-            "\1\uffff"
+            ""
     };
 
     static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
@@ -16853,65 +17112,65 @@
             this.transition = DFA28_transition;
         }
         public String getDescription() {
-            return "641:3: ( extend_key rule_id )?";
+            return "640: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 LA28_1 = input.LA(1);
+                        int LA28_5 = input.LA(1);
 
                          
-                        int index28_1 = input.index();
+                        int index28_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA28_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DAT!
 E) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
+                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 4;}
 
-                        else if ( (LA28_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 4;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 9;}
 
-                        else if ( (LA28_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 5;}
-
-                        else if ( (LA28_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 6;}
-
-                        else if ( (LA28_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 7;}
-
-                        else if ( (LA28_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 8;}
-
-                        else if ( (LA28_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 9;}
-
                          
-                        input.seek(index28_1);
+                        input.seek(index28_5);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA28_9 = input.LA(1);
+                        int LA28_0 = input.LA(1);
 
                          
-                        int index28_9 = input.index();
+                        int index28_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))) ) {s = 8;}
+                        if ( (LA28_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {s = 1;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) ) {s = 7;}
+                        else if ( (LA28_0==AT||LA28_0==WHEN||LA28_0==THEN) ) {s = 2;}
 
                          
-                        input.seek(index28_9);
+                        input.seek(index28_0);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA28_0 = input.LA(1);
+                        int LA28_1 = input.LA(1);
 
                          
-                        int index28_0 = input.index();
+                        int index28_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA28_0==ID) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))||((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))||((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE)))||!
 ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))))) {s = 1;}
+                        if ( (LA28_1==MISC) && ((((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES)))||((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((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.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP)))||((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS)))||((validateIdentifierKey(DroolsSoftKeywords.DAT!
 E) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE)))))) {s = 3;}
 
-                        else if ( (LA28_0==AT||LA28_0==WHEN||LA28_0==THEN) ) {s = 2;}
+                        else if ( (LA28_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.EXTEND))))) {s = 4;}
 
+                        else if ( (LA28_1==STRING) && ((((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))||((validateIdentifierKey(DroolsSoftKeywords.EXTEND)))))) {s = 5;}
+
+                        else if ( (LA28_1==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.ENABLED))))) {s = 6;}
+
+                        else if ( (LA28_1==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 7;}
+
+                        else if ( (LA28_1==INT) && ((((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))||((validateIdentifierKey(DroolsSoftKeywords.DURATION)))))) {s = 8;}
+
+                        else if ( (LA28_1==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 9;}
+
                          
-                        input.seek(index28_0);
+                        input.seek(index28_1);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -16927,9 +17186,9 @@
     static final String DFA37_eofS =
         "\16\uffff";
     static final String DFA37_minS =
-        "\1\120\1\0\14\uffff";
+        "\1\122\1\0\14\uffff";
     static final String DFA37_maxS =
-        "\1\120\1\0\14\uffff";
+        "\1\122\1\0\14\uffff";
     static final String DFA37_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";
     static final String DFA37_specialS =
@@ -16981,7 +17240,7 @@
             this.transition = DFA37_transition;
         }
         public String getDescription() {
-            return "710:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );";
+            return "709:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17044,20 +17303,19 @@
         }
     }
     static final String DFA70_eotS =
-        "\15\uffff";
+        "\13\uffff";
     static final String DFA70_eofS =
-        "\15\uffff";
+        "\13\uffff";
     static final String DFA70_minS =
-        "\1\117\1\0\13\uffff";
+        "\1\121\1\0\11\uffff";
     static final String DFA70_maxS =
-        "\1\160\1\0\13\uffff";
+        "\1\160\1\0\11\uffff";
     static final String DFA70_acceptS =
-        "\2\uffff\1\2\11\uffff\1\1";
+        "\2\uffff\1\2\7\uffff\1\1";
     static final String DFA70_specialS =
-        "\1\uffff\1\0\13\uffff}>";
+        "\1\uffff\1\0\11\uffff}>";
     static final String[] DFA70_transitionS = {
-            "\3\2\1\uffff\1\2\1\uffff\1\1\2\2\6\uffff\2\2\3\uffff\1\2\14"+
-            "\uffff\1\2",
+            "\3\2\2\uffff\1\1\2\2\6\uffff\2\2\17\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -17067,8 +17325,6 @@
             "",
             "",
             "",
-            "",
-            "",
             ""
     };
 
@@ -17102,7 +17358,7 @@
             this.transition = DFA70_transition;
         }
         public String getDescription() {
-            return "1052:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
+            return "1051:3: ( ( LEFT_PAREN )=>args= paren_chunk )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17115,7 +17371,7 @@
                         int index70_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred8_DRL()) ) {s = 12;}
+                        if ( (synpred8_DRL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -17132,20 +17388,19 @@
         }
     }
     static final String DFA72_eotS =
-        "\16\uffff";
+        "\14\uffff";
     static final String DFA72_eofS =
-        "\16\uffff";
+        "\14\uffff";
     static final String DFA72_minS =
-        "\1\117\1\0\14\uffff";
+        "\1\121\1\0\12\uffff";
     static final String DFA72_maxS =
-        "\1\160\1\0\14\uffff";
+        "\1\160\1\0\12\uffff";
     static final String DFA72_acceptS =
-        "\2\uffff\1\2\1\3\11\uffff\1\1";
+        "\2\uffff\1\2\1\3\7\uffff\1\1";
     static final String DFA72_specialS =
-        "\1\uffff\1\0\14\uffff}>";
+        "\1\uffff\1\0\12\uffff}>";
     static final String[] DFA72_transitionS = {
-            "\3\3\1\uffff\1\3\1\uffff\1\1\2\3\6\uffff\2\3\3\uffff\1\3\12"+
-            "\uffff\1\2\1\uffff\1\3",
+            "\3\3\2\uffff\1\1\2\3\6\uffff\2\3\15\uffff\1\2\1\uffff\1\3",
             "\1\uffff",
             "",
             "",
@@ -17156,8 +17411,6 @@
             "",
             "",
             "",
-            "",
-            "",
             ""
     };
 
@@ -17191,7 +17444,7 @@
             this.transition = DFA72_transition;
         }
         public String getDescription() {
-            return "1066:4: ({...}? paren_chunk | square_chunk )?";
+            return "1065:4: ({...}? paren_chunk | square_chunk )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17204,7 +17457,7 @@
                         int index72_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 13;}
+                        if ( ((input.LA(1) == LEFT_PAREN)) ) {s = 11;}
 
                         else if ( (true) ) {s = 3;}
 
@@ -17225,16 +17478,16 @@
     static final String DFA82_eofS =
         "\17\uffff";
     static final String DFA82_minS =
-        "\2\120\13\uffff\1\0\1\uffff";
+        "\2\122\13\uffff\1\0\1\uffff";
     static final String DFA82_maxS =
-        "\1\125\1\156\13\uffff\1\0\1\uffff";
+        "\1\126\1\156\13\uffff\1\0\1\uffff";
     static final String DFA82_acceptS =
         "\2\uffff\1\3\1\2\12\uffff\1\1";
     static final String DFA82_specialS =
         "\15\uffff\1\0\1\uffff}>";
     static final String[] DFA82_transitionS = {
-            "\1\1\4\uffff\1\2",
-            "\2\3\3\uffff\1\15\3\uffff\1\3\14\uffff\6\3\2\uffff\1\3",
+            "\1\1\3\uffff\1\2",
+            "\2\3\2\uffff\1\15\3\uffff\1\3\13\uffff\6\3\2\uffff\1\3",
             "",
             "",
             "",
@@ -17280,7 +17533,7 @@
             this.transition = DFA82_transition;
         }
         public String getDescription() {
-            return "1139:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );";
+            return "1138: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;
@@ -17314,19 +17567,19 @@
     static final String DFA87_eofS =
         "\50\uffff";
     static final String DFA87_minS =
-        "\2\120\10\uffff\1\120\5\uffff\1\4\7\uffff\1\0\5\uffff\7\0\3\uffff";
+        "\2\122\10\uffff\1\122\5\uffff\1\4\6\uffff\1\0\6\uffff\7\0\3\uffff";
     static final String DFA87_maxS =
-        "\1\153\1\156\10\uffff\1\156\5\uffff\1\175\7\uffff\1\0\5\uffff\7"+
+        "\1\153\1\156\10\uffff\1\156\5\uffff\1\175\6\uffff\1\0\6\uffff\7"+
         "\0\3\uffff";
     static final String DFA87_acceptS =
-        "\2\uffff\1\2\5\uffff\1\3\1\2\7\uffff\2\2\6\uffff\1\2\15\uffff\1"+
-        "\1";
+        "\2\uffff\1\2\5\uffff\1\3\1\2\7\uffff\2\2\5\uffff\1\2\14\uffff\1"+
+        "\2\1\uffff\1\1";
     static final String DFA87_specialS =
-        "\1\0\1\1\10\uffff\1\2\5\uffff\1\3\7\uffff\1\4\5\uffff\1\5\1\6\1"+
+        "\1\0\1\1\10\uffff\1\2\5\uffff\1\3\6\uffff\1\4\6\uffff\1\5\1\6\1"+
         "\7\1\10\1\11\1\12\1\13\3\uffff}>";
     static final String[] DFA87_transitionS = {
-            "\1\1\4\uffff\1\10\20\uffff\6\2",
-            "\1\12\3\uffff\1\11\1\20\6\uffff\2\11\16\uffff\3\11",
+            "\1\1\3\uffff\1\10\17\uffff\6\2",
+            "\1\12\2\uffff\1\11\1\20\6\uffff\2\11\15\uffff\3\11",
             "",
             "",
             "",
@@ -17335,28 +17588,28 @@
             "",
             "",
             "",
-            "\1\22\1\31\2\uffff\1\22\1\30\2\31\4\uffff\2\22\2\31\14\uffff"+
-            "\2\22\1\21",
+            "\1\30\1\22\1\uffff\1\30\1\27\2\22\4\uffff\2\30\2\22\13\uffff"+
+            "\2\30\1\21",
             "",
             "",
             "",
             "",
             "",
-            "\114\31\1\36\3\31\1\37\1\44\6\31\1\42\1\40\16\31\1\41\1\43"+
-            "\20\31",
+            "\116\45\1\36\2\45\1\37\1\44\6\45\1\42\1\40\15\45\1\41\1\43"+
+            "\20\45",
             "",
             "",
             "",
             "",
             "",
             "",
-            "",
             "\1\uffff",
             "",
             "",
             "",
             "",
             "",
+            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -17399,7 +17652,7 @@
             this.transition = DFA87_transition;
         }
         public String getDescription() {
-            return "1203:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
+            return "1202:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -17448,11 +17701,11 @@
                         s = -1;
                         if ( (LA87_10==LEFT_SQUARE) && ((((validateIdentifierKey(DroolsSoftKeywords.NOT)))||((isPluggableEvaluator(false)))))) {s = 17;}
 
-                        else if ( (LA87_10==ID||LA87_10==STRING||(LA87_10>=BOOL && LA87_10<=INT)||(LA87_10>=FLOAT && LA87_10<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 18;}
+                        else if ( (LA87_10==DOT||(LA87_10>=COMMA && LA87_10<=RIGHT_PAREN)||(LA87_10>=DOUBLE_PIPE && LA87_10<=DOUBLE_AMPER)) && (((isPluggableEvaluator(false))))) {s = 18;}
 
-                        else if ( (LA87_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 24;}
+                        else if ( (LA87_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 23;}
 
-                        else if ( (LA87_10==DOT||(LA87_10>=COMMA && LA87_10<=RIGHT_PAREN)||(LA87_10>=DOUBLE_PIPE && LA87_10<=DOUBLE_AMPER)) && (((isPluggableEvaluator(false))))) {s = 25;}
+                        else if ( (LA87_10==ID||LA87_10==STRING||(LA87_10>=BOOL && LA87_10<=INT)||(LA87_10>=FLOAT && LA87_10<=NULL)) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))))) {s = 24;}
 
                          
                         input.seek(index87_10);
@@ -17479,25 +17732,25 @@
 
                         else if ( (LA87_16==LEFT_PAREN) && ((((validateIdentifierKey(DroolsSoftKeywords.IN)))||((isPluggableEvaluator(false)))))) {s = 36;}
 
-                        else if ( ((LA87_16>=VT_COMPILATION_UNIT && LA87_16<=SEMICOLON)||(LA87_16>=DOT && LA87_16<=END)||(LA87_16>=COMMA && LA87_16<=WHEN)||(LA87_16>=DOUBLE_PIPE && LA87_16<=NOT_EQUAL)||(LA87_16>=LEFT_SQUARE && LA87_16<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 25;}
+                        else if ( ((LA87_16>=VT_COMPILATION_UNIT && LA87_16<=SEMICOLON)||(LA87_16>=DOT && LA87_16<=DOT_STAR)||(LA87_16>=COMMA && LA87_16<=WHEN)||(LA87_16>=DOUBLE_PIPE && LA87_16<=NOT_EQUAL)||(LA87_16>=LEFT_SQUARE && LA87_16<=MULTI_LINE_COMMENT)) && (((isPluggableEvaluator(false))))) {s = 37;}
 
                          
                         input.seek(index87_16);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA87_24 = input.LA(1);
+                        int LA87_23 = input.LA(1);
 
                          
-                        int index87_24 = input.index();
+                        int index87_23 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 39;}
 
-                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 25;}
+                        else if ( (((validateIdentifierKey(DroolsSoftKeywords.NOT)))) ) {s = 37;}
 
                          
-                        input.seek(index87_24);
+                        input.seek(index87_23);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
@@ -17509,7 +17762,7 @@
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 37;}
 
                          
                         input.seek(index87_30);
@@ -17524,7 +17777,7 @@
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 37;}
 
                          
                         input.seek(index87_31);
@@ -17539,7 +17792,7 @@
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 37;}
 
                          
                         input.seek(index87_32);
@@ -17554,7 +17807,7 @@
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 37;}
 
                          
                         input.seek(index87_33);
@@ -17569,7 +17822,7 @@
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 37;}
 
                          
                         input.seek(index87_34);
@@ -17584,7 +17837,7 @@
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 37;}
 
                          
                         input.seek(index87_35);
@@ -17599,7 +17852,7 @@
                         s = -1;
                         if ( (((validateIdentifierKey(DroolsSoftKeywords.IN)))) ) {s = 39;}
 
-                        else if ( (((isPluggableEvaluator(false)))) ) {s = 25;}
+                        else if ( (((isPluggableEvaluator(false)))) ) {s = 37;}
 
                          
                         input.seek(index87_36);
@@ -17615,434 +17868,436 @@
     }
  
 
-    public static final BitSet FOLLOW_package_statement_in_compilation_unit376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_statement_in_compilation_unit381 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_EOF_in_compilation_unit386 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_package_key_in_package_statement441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_package_id_in_package_statement445 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_package_statement447 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_id474 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_DOT_in_package_id480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_package_id484 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_rule_attribute_in_statement522 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_import_statement_in_statement529 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_statement_in_statement535 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_in_statement541 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_in_statement547 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_in_statement555 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_type_declaration_in_statement563 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_in_statement568 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_in_statement573 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_import_statement595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_import_name_in_import_statement597 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_import_statement600 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_import_key_in_function_import_statement638 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_function_key_in_function_import_statement640 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_import_name_in_function_import_statement642 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement645 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_name679 = new BitSet(new long[]{0x0000000000000002L,0x0000000000060000L});
-    public static final BitSet FOLLOW_DOT_in_import_name685 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_import_name689 = new BitSet(new long[]{0x0000000000000002L,0x0000000000060000L});
-    public static final BitSet FOLLOW_DOT_STAR_in_import_name696 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_global_key_in_global736 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_data_type_in_global738 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_global_id_in_global740 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_global742 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_id771 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_function_key_in_function803 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_data_type_in_function805 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_function_id_in_function808 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_parameters_in_function810 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_curly_chunk_in_function812 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_id842 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_query_key_in_query874 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
-    public static final BitSet FOLLOW_query_id_in_query876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000290000L});
-    public static final BitSet FOLLOW_parameters_in_query884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000290000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_query893 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_END_in_query898 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_query900 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_id935 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_query_id951 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters970 = new BitSet(new long[]{0x0000000000000000L,0x0000000000810000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters979 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_COMMA_in_parameters982 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_param_definition_in_parameters986 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters995 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_param_definition1021 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_argument_in_param_definition1024 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument1035 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument1041 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_declare_key_in_type_declaration1064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1067 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1071 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration1076 = new BitSet(new long[]{0x0000000000000000L,0x0000000000090000L});
-    public static final BitSet FOLLOW_END_in_type_declaration1081 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_type_declare_id1116 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_AT_in_decl_metadata1135 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_decl_metadata1143 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1150 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_decl_field1173 = new BitSet(new long[]{0x0000000000000000L,0x0000000006000000L});
-    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1179 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COLON_in_decl_field1185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field1191 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field1195 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
-    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1223 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1229 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_template_key_in_template1266 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
-    public static final BitSet FOLLOW_template_id_in_template1268 = new BitSet(new long[]{0x0000000000000000L,0x0000000000018000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000018000L});
-    public static final BitSet FOLLOW_template_slot_in_template1283 = new BitSet(new long[]{0x0000000000000000L,0x0000000000098000L});
-    public static final BitSet FOLLOW_END_in_template1288 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template1292 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_id1325 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_template_id1341 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_data_type_in_template_slot1361 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_slot_id_in_template_slot1363 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1365 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_slot_id1394 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_rule_key_in_rule1431 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1433 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
-    public static final BitSet FOLLOW_extend_key_in_rule1442 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1444 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule1448 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1451 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
-    public static final BitSet FOLLOW_when_part_in_rule1454 = new BitSet(new long[]{0x0000000000000000L,0x0001000009010000L});
-    public static final BitSet FOLLOW_rhs_chunk_in_rule1457 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_WHEN_in_when_part1501 = new BitSet(new long[]{0x0000000000000000L,0x0000000002210000L});
-    public static final BitSet FOLLOW_COLON_in_when_part1507 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1517 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_id1538 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_rule_id1554 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1575 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COLON_in_rule_attributes1577 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1587 = new BitSet(new long[]{0x0000000000000002L,0x0000000000410000L});
-    public static final BitSet FOLLOW_COMMA_in_rule_attributes1591 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1598 = new BitSet(new long[]{0x0000000000000002L,0x0000000000410000L});
-    public static final BitSet FOLLOW_salience_in_rule_attribute1637 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_in_rule_attribute1643 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1648 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_in_rule_attribute1655 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_in_rule_attribute1662 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1668 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_in_rule_attribute1674 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_in_rule_attribute1680 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_in_rule_attribute1686 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1692 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1698 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_in_rule_attribute1703 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_effective_key_in_date_effective1718 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_date_effective1723 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_date_expires_key_in_date_expires1737 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_date_expires1742 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_enabled_key_in_enabled1757 = new BitSet(new long[]{0x0000000000000000L,0x0000000010200000L});
-    public static final BitSet FOLLOW_BOOL_in_enabled1770 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_enabled1781 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_salience_key_in_salience1801 = new BitSet(new long[]{0x0000000000000000L,0x0000000020200000L});
-    public static final BitSet FOLLOW_INT_in_salience1810 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_salience1819 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_no_loop_key_in_no_loop1834 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_BOOL_in_no_loop1839 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1854 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_BOOL_in_auto_focus1859 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_activation_group_key_in_activation_group1876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_activation_group1881 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1895 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_ruleflow_group1900 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1914 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_agenda_group1919 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_duration_key_in_duration1933 = new BitSet(new long[]{0x0000000000000000L,0x0000000020200000L});
-    public static final BitSet FOLLOW_INT_in_duration1946 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_duration1957 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_dialect_key_in_dialect1977 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
-    public static final BitSet FOLLOW_STRING_in_dialect1982 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2000 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
-    public static final BitSet FOLLOW_BOOL_in_lock_on_active2005 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2020 = new BitSet(new long[]{0x0000000000000002L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs2041 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2083 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2089 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2112 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_or_key_in_lhs_or2134 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2141 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_and_in_lhs_or2152 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2193 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2203 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2211 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2217 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2241 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
-    public static final BitSet FOLLOW_and_key_in_lhs_and2263 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2270 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2281 = new BitSet(new long[]{0x0000000000000002L,0x0000000080010000L});
-    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2312 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2320 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2326 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2332 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2338 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2344 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2355 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2361 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2369 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2383 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_exists_key_in_lhs_exist2399 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2426 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2433 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2448 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2463 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2509 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2511 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_not_key_in_lhs_not2534 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2556 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2563 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_lhs_not2572 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2578 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2588 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_eval_key_in_lhs_eval2627 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2636 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_forall_key_in_lhs_forall2663 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2668 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2676 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2682 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2718 = new BitSet(new long[]{0x0000000000000002L,0x0000000300000000L});
-    public static final BitSet FOLLOW_over_clause_in_pattern_source2722 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
-    public static final BitSet FOLLOW_FROM_in_pattern_source2732 = new BitSet(new long[]{0x0000000000000000L,0x0000001400010000L});
-    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2752 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_collect_statement_in_pattern_source2768 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2785 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_from_source_in_pattern_source2801 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_OVER_in_over_clause2833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2838 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_COMMA_in_over_clause2845 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_over_elements_in_over_clause2850 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2865 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COLON_in_over_elements2872 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_over_elements2881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_over_elements2888 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2914 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2931 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2936 = new BitSet(new long[]{0x0000000000000000L,0x0000000800410000L});
-    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2946 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2952 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2960 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause3006 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3017 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3022 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3037 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3054 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3058 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3063 = new BitSet(new long[]{0x0000000000000000L,0x0000000000410000L});
-    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3079 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3085 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3143 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3167 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3179 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3195 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3206 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3222 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3228 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_COLLECT_in_collect_statement3250 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3259 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_pattern_source_in_collect_statement3266 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3271 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3298 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
-    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3306 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entrypoint_id3332 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_entrypoint_id3349 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_source3369 = new BitSet(new long[]{0x0000000000000002L,0x0000000000220000L});
-    public static final BitSet FOLLOW_paren_chunk_in_from_source3384 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_expression_chain_in_from_source3391 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOT_in_expression_chain3424 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain3431 = new BitSet(new long[]{0x0000000000000002L,0x0000400000220000L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3447 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_square_chunk_in_expression_chain3461 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_expression_chain_in_expression_chain3472 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3505 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_lhs_pattern3518 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_fact_binding3538 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding3544 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3551 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3559 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3567 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3608 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3620 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3626 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_fact_in_fact_binding_expression3631 = new BitSet(new long[]{0x0000000000000002L,0x0000000040010000L});
-    public static final BitSet FOLLOW_pattern_type_in_fact3671 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3676 = new BitSet(new long[]{0x0000000000000000L,0x0000000000A10000L});
-    public static final BitSet FOLLOW_constraints_in_fact3687 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3693 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_constraint_in_constraints3727 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_COMMA_in_constraints3731 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_constraint_in_constraints3738 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
-    public static final BitSet FOLLOW_or_constr_in_constraint3752 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3763 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3767 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_and_constr_in_or_constr3774 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3789 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3793 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_unary_constr_in_and_constr3800 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_eval_key_in_unary_constr3833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3836 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_field_constraint_in_unary_constr3841 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3847 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
-    public static final BitSet FOLLOW_or_constr_in_unary_constr3857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3862 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_label_in_field_constraint3882 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3884 = new BitSet(new long[]{0x0000000000000002L,0x00000FE000210000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3891 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ARROW_in_field_constraint3897 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3901 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint3955 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3957 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_label3982 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
-    public static final BitSet FOLLOW_COLON_in_label3989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4010 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective4016 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4024 = new BitSet(new long[]{0x0000000000000002L,0x0000000040000000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4045 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4051 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4058 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4086 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4091 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4096 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000210000L});
-    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4110 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator4145 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator4153 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4161 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator4169 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4177 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4185 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_not_key_in_simple_operator4193 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000010000L});
-    public static final BitSet FOLLOW_operator_key_in_simple_operator4200 = new BitSet(new long[]{0x0000000000000000L,0x0000700030310000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator4203 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator4215 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4237 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator4242 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator4244 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4255 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4263 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator4267 = new BitSet(new long[]{0x0000000000000000L,0x0000300030310000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator4272 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4280 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_operator_key4311 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_neg_operator_key4356 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value4393 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value4398 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value4404 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_STRING_in_literal_constraint4423 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_INT_in_literal_constraint4430 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4437 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_BOOL_in_literal_constraint4444 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_NULL_in_literal_constraint4451 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4466 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type4472 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type4476 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4491 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type4519 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_DOT_in_data_type4525 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_data_type4529 = new BitSet(new long[]{0x0000000000000002L,0x0000400000020000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type4534 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4563 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4570 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4584 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path4588 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path4592 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element4616 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element4622 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4651 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4670 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk_data4683 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk_data4696 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4702 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4721 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4744 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data4756 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4772 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4783 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4804 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4828 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data4840 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4856 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4867 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4888 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4911 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk_data4923 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4938 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4949 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4973 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4977 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4981 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4985 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key4989 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5021 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key5025 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key5029 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5061 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key5065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key5069 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5101 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key5105 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key5109 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5141 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key5145 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key5149 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5181 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key5185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key5189 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5221 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key5225 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key5229 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5261 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5265 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5269 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5301 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key5305 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key5309 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key5338 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key5365 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key5392 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key5419 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key5446 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key5473 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key5500 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key5527 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_extend_key5554 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key5581 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key5608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key5635 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key5662 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key5689 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key5716 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key5743 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key5770 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key5797 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key5824 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key5851 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key5878 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key5905 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key5932 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key5959 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2056 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2058 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_or_key_in_synpred2_DRL2125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2127 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2184 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_and_key_in_synpred3_DRL2186 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred4_DRL2254 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2256 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_SEMICOLON_in_synpred5_DRL2379 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2416 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_synpred6_DRL2419 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2421 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred7_DRL2544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_or_key_in_synpred7_DRL2547 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2549 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3378 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_statement_in_compilation_unit384 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_statement_in_compilation_unit389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_EOF_in_compilation_unit394 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_package_key_in_package_statement449 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_package_id_in_package_statement453 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_package_statement455 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_id482 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_DOT_in_package_id488 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_package_id492 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_rule_attribute_in_statement530 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_import_statement_in_statement537 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_statement_in_statement543 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_in_statement549 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_in_statement555 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_in_statement563 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_type_declaration_in_statement571 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_in_statement576 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_in_statement581 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_import_statement603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_import_name_in_import_statement605 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_import_statement608 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_import_key_in_function_import_statement646 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_function_key_in_function_import_statement648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_import_name_in_function_import_statement650 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_function_import_statement653 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_name687 = new BitSet(new long[]{0x0000000000000002L,0x0000000000180000L});
+    public static final BitSet FOLLOW_DOT_in_import_name693 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_import_name697 = new BitSet(new long[]{0x0000000000000002L,0x0000000000180000L});
+    public static final BitSet FOLLOW_DOT_STAR_in_import_name704 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_global_key_in_global744 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_data_type_in_global746 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_global_id_in_global748 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_global750 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_id779 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_function_key_in_function811 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_data_type_in_function813 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_function_id_in_function816 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_parameters_in_function818 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_curly_chunk_in_function820 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_id850 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_query_key_in_query882 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
+    public static final BitSet FOLLOW_query_id_in_query884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_parameters_in_query892 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_query901 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_end_key_in_query908 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_query910 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_id945 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_query_id961 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_parameters980 = new BitSet(new long[]{0x0000000000000000L,0x0000000001040000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters989 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+    public static final BitSet FOLLOW_COMMA_in_parameters992 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters996 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters1005 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_param_definition1031 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_argument_in_param_definition1034 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_argument1045 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument1051 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_declare_key_in_type_declaration1074 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_type_declare_id_in_type_declaration1077 = new BitSet(new long[]{0x0000000000000000L,0x0000000002440000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration1081 = new BitSet(new long[]{0x0000000000000000L,0x0000000002440000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration1086 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_end_key_in_type_declaration1091 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_type_declare_id1123 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_AT_in_decl_metadata1142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_decl_metadata1150 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_metadata1157 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_decl_field1180 = new BitSet(new long[]{0x0000000000000000L,0x000000000C000000L});
+    public static final BitSet FOLLOW_decl_field_initialization_in_decl_field1186 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_COLON_in_decl_field1192 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field1198 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field1202 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization1230 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_decl_field_initialization1236 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_template_key_in_template1273 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
+    public static final BitSet FOLLOW_template_id_in_template1275 = new BitSet(new long[]{0x0000000000000000L,0x0000000000060000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000060000L});
+    public static final BitSet FOLLOW_template_slot_in_template1290 = new BitSet(new long[]{0x0000000000000000L,0x0000000000460000L});
+    public static final BitSet FOLLOW_end_key_in_template1297 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template1301 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_id1334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_template_id1350 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_data_type_in_template_slot1370 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_slot_id_in_template_slot1372 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_template_slot1374 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_slot_id1403 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_rule_key_in_rule1440 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1442 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
+    public static final BitSet FOLLOW_extend_key_in_rule1451 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1453 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule1457 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1460 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
+    public static final BitSet FOLLOW_when_part_in_rule1463 = new BitSet(new long[]{0x0000000000000000L,0x0001000012040000L});
+    public static final BitSet FOLLOW_rhs_chunk_in_rule1466 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_WHEN_in_when_part1510 = new BitSet(new long[]{0x0000000000000000L,0x0000000004440000L});
+    public static final BitSet FOLLOW_COLON_in_when_part1516 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_normal_lhs_block_in_when_part1526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_id1547 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_rule_id1563 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_attributes_key_in_rule_attributes1584 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_COLON_in_rule_attributes1586 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1596 = new BitSet(new long[]{0x0000000000000002L,0x0000000000840000L});
+    public static final BitSet FOLLOW_COMMA_in_rule_attributes1600 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_rule_attribute_in_rule_attributes1607 = new BitSet(new long[]{0x0000000000000002L,0x0000000000840000L});
+    public static final BitSet FOLLOW_salience_in_rule_attribute1646 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_in_rule_attribute1652 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_in_rule_attribute1657 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_in_rule_attribute1664 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_in_rule_attribute1671 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_in_rule_attribute1677 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_in_rule_attribute1683 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_in_rule_attribute1689 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_in_rule_attribute1695 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_in_rule_attribute1701 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_in_rule_attribute1707 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_in_rule_attribute1712 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_effective_key_in_date_effective1727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_date_effective1732 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_date_expires_key_in_date_expires1746 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_date_expires1751 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_enabled_key_in_enabled1766 = new BitSet(new long[]{0x0000000000000000L,0x0000000020400000L});
+    public static final BitSet FOLLOW_BOOL_in_enabled1779 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_enabled1790 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_salience_key_in_salience1810 = new BitSet(new long[]{0x0000000000000000L,0x0000000040400000L});
+    public static final BitSet FOLLOW_INT_in_salience1819 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_salience1828 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_no_loop_key_in_no_loop1843 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_BOOL_in_no_loop1848 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_auto_focus_key_in_auto_focus1863 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_BOOL_in_auto_focus1868 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_activation_group_key_in_activation_group1885 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_activation_group1890 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ruleflow_group_key_in_ruleflow_group1904 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_ruleflow_group1909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_agenda_group_key_in_agenda_group1923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_agenda_group1928 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_duration_key_in_duration1942 = new BitSet(new long[]{0x0000000000000000L,0x0000000040400000L});
+    public static final BitSet FOLLOW_INT_in_duration1955 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_duration1966 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_dialect_key_in_dialect1986 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_STRING_in_dialect1991 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lock_on_active_key_in_lock_on_active2009 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_BOOL_in_lock_on_active2014 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_in_normal_lhs_block2029 = new BitSet(new long[]{0x0000000000000002L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs2050 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_or2074 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2084 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2092 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_or2098 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2121 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
+    public static final BitSet FOLLOW_or_key_in_lhs_or2143 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_lhs_or2150 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_and_in_lhs_or2161 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_and2202 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2212 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2220 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_and2226 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2250 = new BitSet(new long[]{0x0000000000000002L,0x0000000100040000L});
+    public static final BitSet FOLLOW_and_key_in_lhs_and2272 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_lhs_and2279 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_unary_in_lhs_and2290 = new BitSet(new long[]{0x0000000000000002L,0x0000000100040000L});
+    public static final BitSet FOLLOW_lhs_exist_in_lhs_unary2321 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_lhs_not_binding_in_lhs_unary2329 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_lhs_not_in_lhs_unary2335 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_lhs_eval_in_lhs_unary2341 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_lhs_forall_in_lhs_unary2347 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_unary2353 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_unary2364 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_unary2370 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_pattern_source_in_lhs_unary2378 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_lhs_unary2392 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_exists_key_in_lhs_exist2408 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2435 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_exist2442 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_exist2450 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_exist2457 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_exist2472 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not_binding2518 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_not_binding2520 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_not_key_in_lhs_not2543 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2565 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_not2572 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_or_in_lhs_not2581 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_not2587 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_not2597 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_eval_key_in_lhs_eval2636 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_lhs_eval2645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_forall_key_in_lhs_forall2672 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_lhs_forall2677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs_forall2685 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_lhs_forall2691 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_lhs_pattern_in_pattern_source2727 = new BitSet(new long[]{0x0000000000000002L,0x0000000600000000L});
+    public static final BitSet FOLLOW_over_clause_in_pattern_source2731 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_FROM_in_pattern_source2741 = new BitSet(new long[]{0x0000000000000000L,0x0000001800040000L});
+    public static final BitSet FOLLOW_accumulate_statement_in_pattern_source2761 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_collect_statement_in_pattern_source2777 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entrypoint_statement_in_pattern_source2794 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_from_source_in_pattern_source2810 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_OVER_in_over_clause2842 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2847 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+    public static final BitSet FOLLOW_COMMA_in_over_clause2854 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_over_elements_in_over_clause2859 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2874 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_COLON_in_over_elements2881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_over_elements2890 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_over_elements2897 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ACCUMULATE_in_accumulate_statement2923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_statement2932 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_lhs_or_in_accumulate_statement2940 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_statement2945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_statement2955 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_statement2961 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_statement2969 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_init_key_in_accumulate_init_clause3015 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3025 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3030 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_action_key_in_accumulate_init_clause3041 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3045 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3050 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_reverse_key_in_accumulate_init_clause3062 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_COMMA_in_accumulate_init_clause3071 = new BitSet(new long[]{0x0000000000000000L,0x0000000000840000L});
+    public static final BitSet FOLLOW_result_key_in_accumulate_init_clause3087 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_in_accumulate_init_clause3093 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk3151 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_accumulate_paren_chunk_data3175 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_accumulate_paren_chunk_data3187 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_accumulate_paren_chunk_data_in_accumulate_paren_chunk_data3203 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_accumulate_paren_chunk_data3214 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_id_clause3230 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_accumulate_id_clause3236 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_COLLECT_in_collect_statement3258 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_collect_statement3267 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_pattern_source_in_collect_statement3274 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_collect_statement3279 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_entry_point_key_in_entrypoint_statement3306 = new BitSet(new long[]{0x0000000000000000L,0x0000000000240000L});
+    public static final BitSet FOLLOW_entrypoint_id_in_entrypoint_statement3314 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entrypoint_id3340 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_entrypoint_id3357 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_source3377 = new BitSet(new long[]{0x0000000000000002L,0x0000000000480000L});
+    public static final BitSet FOLLOW_paren_chunk_in_from_source3392 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_expression_chain_in_from_source3399 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOT_in_expression_chain3432 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain3439 = new BitSet(new long[]{0x0000000000000002L,0x0000400000480000L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_chain3455 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_square_chunk_in_expression_chain3469 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_expression_chain_in_expression_chain3480 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_binding_in_lhs_pattern3513 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_lhs_pattern3526 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_fact_binding3546 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding3552 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact_binding3559 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_fact_binding_expression_in_fact_binding3567 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact_binding3575 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3616 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
+    public static final BitSet FOLLOW_or_key_in_fact_binding_expression3628 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_binding_expression3634 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_fact_in_fact_binding_expression3639 = new BitSet(new long[]{0x0000000000000002L,0x0000000080040000L});
+    public static final BitSet FOLLOW_pattern_type_in_fact3679 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_fact3684 = new BitSet(new long[]{0x0000000000000000L,0x0000000001440000L});
+    public static final BitSet FOLLOW_constraints_in_fact3695 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_fact3701 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_constraint_in_constraints3735 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+    public static final BitSet FOLLOW_COMMA_in_constraints3739 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_constraint_in_constraints3746 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+    public static final BitSet FOLLOW_or_constr_in_constraint3760 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3771 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_constr3775 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_and_constr_in_or_constr3782 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3797 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_constr3801 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_unary_constr_in_and_constr3808 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_eval_key_in_unary_constr3841 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_unary_constr3844 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_field_constraint_in_unary_constr3849 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_unary_constr3855 = new BitSet(new long[]{0x0000000000000000L,0x0000000000440000L});
+    public static final BitSet FOLLOW_or_constr_in_unary_constr3865 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr3870 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_label_in_field_constraint3890 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3892 = new BitSet(new long[]{0x0000000000000002L,0x00000FE000440000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3899 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ARROW_in_field_constraint3905 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_paren_chunk_in_field_constraint3909 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint3963 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_field_constraint3965 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_label3990 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_COLON_in_label3997 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4018 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective4024 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
+    public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective4032 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4053 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective4059 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
+    public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective4066 = new BitSet(new long[]{0x0000000000000002L,0x0000000100000000L});
+    public static final BitSet FOLLOW_compound_operator_in_constraint_expression4094 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_simple_operator_in_constraint_expression4099 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression4104 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000440000L});
+    public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression4113 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression4118 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator4153 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator4161 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator4169 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator4177 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator4185 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator4193 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_not_key_in_simple_operator4201 = new BitSet(new long[]{0x0000000000000000L,0x00000FC000040000L});
+    public static final BitSet FOLLOW_operator_key_in_simple_operator4208 = new BitSet(new long[]{0x0000000000000000L,0x0000700060640000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator4211 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_expression_value_in_simple_operator4223 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4245 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator4250 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator4252 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator4263 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4271 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator4275 = new BitSet(new long[]{0x0000000000000000L,0x0000300060640000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator4280 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator4288 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_operator_key4319 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_neg_operator_key4364 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value4401 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value4406 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value4412 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_STRING_in_literal_constraint4431 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_INT_in_literal_constraint4438 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_FLOAT_in_literal_constraint4445 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_BOOL_in_literal_constraint4452 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_NULL_in_literal_constraint4459 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4474 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type4480 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type4484 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type4499 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type4527 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
+    public static final BitSet FOLLOW_DOT_in_data_type4533 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_data_type4537 = new BitSet(new long[]{0x0000000000000002L,0x0000400000080000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type4542 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition4571 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition4578 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4592 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path4596 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path4600 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element4624 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element4630 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk4659 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data4678 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_not_end_key_in_rhs_chunk_data4687 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_end_key_in_rhs_chunk_data4693 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data4698 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk4717 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data4740 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data4752 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data4768 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data4779 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk4800 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data4824 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data4836 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data4852 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data4863 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk4884 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data4907 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data4919 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data4934 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x3FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data4945 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4969 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4973 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4977 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key4981 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key4985 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5017 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key5021 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key5025 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5057 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key5061 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key5065 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5097 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key5101 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key5105 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5137 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key5141 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key5145 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5177 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key5181 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key5185 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5217 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key5221 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key5225 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5257 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key5261 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key5265 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5297 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key5301 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key5305 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key5334 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key5361 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key5388 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key5415 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key5442 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key5469 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key5496 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key5523 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_extend_key5550 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key5577 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key5604 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key5631 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key5658 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key5685 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key5712 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key5739 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key5766 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key5793 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key5820 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key5847 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key5874 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key5901 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key5928 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key5955 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_end_key5982 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_init_key6029 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred1_DRL2065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_or_key_in_synpred1_DRL2067 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_or_key_in_synpred2_DRL2134 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_synpred2_DRL2136 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred3_DRL2193 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_and_key_in_synpred3_DRL2195 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred4_DRL2263 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_synpred4_DRL2265 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_SEMICOLON_in_synpred5_DRL2388 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred6_DRL2425 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_or_key_in_synpred6_DRL2428 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred6_DRL2430 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred7_DRL2553 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_or_key_in_synpred7_DRL2556 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_and_key_in_synpred7_DRL2558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_synpred8_DRL3386 = new BitSet(new long[]{0x0000000000000002L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -1,4 +1,4 @@
-// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-01-15 19:47:15
+// $ANTLR 3.1.1 src/main/resources/org/drools/lang/DescrBuilderTree.g 2009-01-25 11:44:47
 
 	package org.drools.lang;
 
@@ -36,14 +36,13 @@
 
 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_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", "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_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "AT", "COLON", "EQUALS", "WHEN", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "FROM", "OVER", "ACCUMULATE", "INIT", "COLLECT", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "GRAVE_ACCENT", "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_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", "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_EXISTS", "VK_FORALL", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_OPERATOR", "VK_END", "VK_INIT", "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", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "GRAVE_ACCENT", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
-    public static final int COMMA=86;
+    public static final int COMMA=87;
     public static final int VT_PATTERN_TYPE=39;
     public static final int VT_ACCUMULATE_ID_CLAUSE=28;
     public static final int VK_DIALECT=54;
     public static final int VK_FUNCTION=65;
-    public static final int END=83;
     public static final int HexDigit=119;
     public static final int VK_ATTRIBUTES=57;
     public static final int VT_EXPRESSION_CHAIN=30;
@@ -52,7 +51,7 @@
     public static final int VK_QUERY=63;
     public static final int THEN=112;
     public static final int VK_AUTO_FOCUS=49;
-    public static final int DOT=81;
+    public static final int DOT=83;
     public static final int VK_IMPORT=60;
     public static final int VT_SLOT=15;
     public static final int VT_PACKAGE_ID=40;
@@ -61,24 +60,24 @@
     public static final int VT_DATA_TYPE=38;
     public static final int VT_FACT=6;
     public static final int LEFT_CURLY=113;
-    public static final int AT=88;
-    public static final int LEFT_PAREN=85;
-    public static final int DOUBLE_AMPER=95;
+    public static final int AT=89;
+    public static final int LEFT_PAREN=86;
+    public static final int DOUBLE_AMPER=96;
     public static final int VT_QUERY_ID=9;
     public static final int VT_ACCESSOR_PATH=36;
     public static final int VT_LABEL=8;
-    public static final int WHEN=91;
+    public static final int WHEN=92;
     public static final int VT_ENTRYPOINT_ID=13;
     public static final int VK_SALIENCE=55;
     public static final int VT_FIELD=35;
     public static final int WS=117;
-    public static final int OVER=97;
-    public static final int STRING=84;
+    public static final int OVER=98;
+    public static final int STRING=85;
     public static final int VK_AND=72;
     public static final int VT_ACCESSOR_ELEMENT=37;
+    public static final int VK_REVERSE=76;
     public static final int VK_GLOBAL=66;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=27;
-    public static final int VK_REVERSE=76;
     public static final int VT_BEHAVIOR=21;
     public static final int GRAVE_ACCENT=122;
     public static final int VK_DURATION=53;
@@ -89,17 +88,17 @@
     public static final int COLLECT=100;
     public static final int VK_ENABLED=56;
     public static final int VK_RESULT=77;
-    public static final int EQUALS=90;
+    public static final int EQUALS=91;
     public static final int UnicodeEscape=120;
     public static final int VK_PACKAGE=61;
     public static final int VT_RULE_ID=12;
     public static final int EQUAL=102;
     public static final int VK_NO_LOOP=48;
-    public static final int SEMICOLON=79;
+    public static final int SEMICOLON=81;
     public static final int VK_TEMPLATE=62;
     public static final int VT_AND_IMPLICIT=22;
     public static final int NULL=109;
-    public static final int COLON=89;
+    public static final int COLON=90;
     public static final int MULTI_LINE_COMMENT=125;
     public static final int VT_RULE_ATTRIBUTES=16;
     public static final int RIGHT_SQUARE=111;
@@ -109,33 +108,33 @@
     public static final int VK_DATE_EXPIRES=46;
     public static final int ARROW=101;
     public static final int FLOAT=108;
-    public static final int INIT=99;
     public static final int VK_EXTEND=59;
     public static final int VT_SLOT_ID=14;
     public static final int VT_CURLY_CHUNK=18;
     public static final int VT_OR_PREFIX=24;
-    public static final int DOUBLE_PIPE=94;
+    public static final int DOUBLE_PIPE=95;
+    public static final int VK_END=79;
     public static final int LESS=105;
     public static final int VT_TYPE_DECLARE_ID=11;
     public static final int VT_PATTERN=31;
     public static final int VK_DATE_EFFECTIVE=45;
     public static final int EscapeSequence=118;
     public static final int VK_EXISTS=73;
-    public static final int INT=93;
+    public static final int INT=94;
     public static final int VT_BIND_FIELD=34;
     public static final int VK_RULE=58;
     public static final int VK_EVAL=67;
     public static final int GREATER=103;
     public static final int VT_FACT_BINDING=32;
-    public static final int ID=80;
-    public static final int FROM=96;
+    public static final int ID=82;
+    public static final int FROM=97;
     public static final int NOT_EQUAL=107;
     public static final int RIGHT_CURLY=114;
     public static final int VK_OPERATOR=78;
     public static final int VK_ENTRY_POINT=68;
     public static final int VT_PARAM_LIST=44;
     public static final int VT_AND_INFIX=25;
-    public static final int BOOL=92;
+    public static final int BOOL=93;
     public static final int VT_FROM_SOURCE=29;
     public static final int VK_LOCK_ON_ACTIVE=47;
     public static final int VT_FUNCTION_IMPORT=5;
@@ -143,21 +142,22 @@
     public static final int VT_RHS_CHUNK=17;
     public static final int GREATER_EQUAL=104;
     public static final int VT_OR_INFIX=26;
-    public static final int DOT_STAR=82;
+    public static final int DOT_STAR=84;
     public static final int VK_OR=71;
     public static final int VT_GLOBAL_ID=42;
     public static final int LESS_EQUAL=106;
-    public static final int ACCUMULATE=98;
+    public static final int ACCUMULATE=99;
     public static final int VK_RULEFLOW_GROUP=52;
     public static final int VT_FUNCTION_ID=43;
     public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
     public static final int VT_IMPORT_ID=41;
     public static final int EOL=116;
+    public static final int VK_INIT=80;
     public static final int VK_ACTIVATION_GROUP=50;
     public static final int OctalEscape=121;
     public static final int VK_ACTION=75;
-    public static final int RIGHT_PAREN=87;
+    public static final int RIGHT_PAREN=88;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=64;
     public static final int C_STYLE_SINGLE_LINE_COMMENT=124;
@@ -885,7 +885,7 @@
     };
 
     // $ANTLR start "template"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:113:1: template returns [FactTemplateDescr factTemplateDescr] : ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END ) ;
     public final DescrBuilderTree.template_return template() throws RecognitionException {
         DescrBuilderTree.template_return retval = new DescrBuilderTree.template_return();
         retval.start = input.LT(1);
@@ -900,8 +900,8 @@
         	List slotList = new LinkedList<FieldTemplateDescr>();
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= END )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:3: ( ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:116:5: ^(start= VK_TEMPLATE id= VT_TEMPLATE_ID (ts= template_slot )+ end= VK_END )
             {
             start=(DroolsTree)match(input,VK_TEMPLATE,FOLLOW_VK_TEMPLATE_in_template381); 
 
@@ -942,7 +942,7 @@
                 cnt8++;
             } while (true);
 
-            end=(DroolsTree)match(input,END,FOLLOW_END_in_template402); 
+            end=(DroolsTree)match(input,VK_END,FOLLOW_VK_END_in_template402); 
 
             match(input, Token.UP, null); 
             	retval.factTemplateDescr = factory.createFactTemplate(start, id, slotList, end);	
@@ -1005,7 +1005,7 @@
     };
 
     // $ANTLR start "query"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:126:1: query returns [QueryDescr queryDescr] : ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END ) ;
     public final DescrBuilderTree.query_return query() throws RecognitionException {
         DescrBuilderTree.query_return retval = new DescrBuilderTree.query_return();
         retval.start = input.LT(1);
@@ -1019,8 +1019,8 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= END )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:2: ( ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:127:4: ^(start= VK_QUERY id= VT_QUERY_ID (params= parameters )? lb= lhs_block end= VK_END )
             {
             start=(DroolsTree)match(input,VK_QUERY,FOLLOW_VK_QUERY_in_query452); 
 
@@ -1053,7 +1053,7 @@
 
             state._fsp--;
 
-            end=(DroolsTree)match(input,END,FOLLOW_END_in_query469); 
+            end=(DroolsTree)match(input,VK_END,FOLLOW_VK_END_in_query469); 
 
             match(input, Token.UP, null); 
             	retval.queryDescr = factory.createQuery(start, id, params, lb, end);	
@@ -1524,7 +1524,7 @@
 
 
     // $ANTLR start "type_declaration"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:168:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:168:1: type_declaration returns [TypeDeclarationDescr declaration] : ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END ) ;
     public final TypeDeclarationDescr type_declaration() throws RecognitionException {
         TypeDeclarationDescr declaration = null;
 
@@ -1537,8 +1537,8 @@
         	List<Map> declMetadaList = new LinkedList<Map>();
         		List<TypeFieldDescr> declFieldList = new LinkedList<TypeFieldDescr>(); 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* END )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:2: ( ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:171:4: ^( VK_DECLARE id= VT_TYPE_DECLARE_ID (dm= decl_metadata )* (df= decl_field )* VK_END )
             {
             match(input,VK_DECLARE,FOLLOW_VK_DECLARE_in_type_declaration706); 
 
@@ -1604,7 +1604,7 @@
                 }
             } while (true);
 
-            match(input,END,FOLLOW_END_in_type_declaration738); 
+            match(input,VK_END,FOLLOW_VK_END_in_type_declaration738); 
 
             match(input, Token.UP, null); 
             	declaration = factory.createTypeDeclr(id, declMetadaList, declFieldList);	
@@ -2827,7 +2827,7 @@
     };
 
     // $ANTLR start "accumulate_init_clause"
-    // src/main/resources/org/drools/lang/DescrBuilderTree.g:265:1: accumulate_init_clause[PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] : ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) ;
+    // src/main/resources/org/drools/lang/DescrBuilderTree.g:265: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);
@@ -2840,13 +2840,13 @@
 
 
         try {
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266:2: ( ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) ) )
-            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266:4: ^( VT_ACCUMULATE_INIT_CLAUSE ^(start= INIT pc1= VT_PAREN_CHUNK ) ^( VK_ACTION pc2= VT_PAREN_CHUNK ) (rev= accumulate_init_reverse_clause )? ^( VK_RESULT pc3= VT_PAREN_CHUNK ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266: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 ) ) )
+            // src/main/resources/org/drools/lang/DescrBuilderTree.g:266: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_clause1406); 
 
             match(input, Token.DOWN, null); 
-            start=(DroolsTree)match(input,INIT,FOLLOW_INIT_in_accumulate_init_clause1415); 
+            start=(DroolsTree)match(input,VK_INIT,FOLLOW_VK_INIT_in_accumulate_init_clause1415); 
 
             match(input, Token.DOWN, null); 
             pc1=(DroolsTree)match(input,VT_PAREN_CHUNK,FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1419); 
@@ -4372,7 +4372,7 @@
     public static final BitSet FOLLOW_VK_PACKAGE_in_package_statement71 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_package_id_in_package_statement75 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_PACKAGE_ID_in_package_id102 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_package_id106 = new BitSet(new long[]{0x0000000000000008L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_package_id106 = new BitSet(new long[]{0x0000000000000008L,0x0000000000040000L});
     public static final BitSet FOLLOW_rule_attribute_in_statement124 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_function_import_statement_in_statement134 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_import_statement_in_statement144 = new BitSet(new long[]{0x0000000000000002L});
@@ -4388,7 +4388,7 @@
     public static final BitSet FOLLOW_VK_FUNCTION_in_function_import_statement254 = new BitSet(new long[]{0x0000020000000000L});
     public static final BitSet FOLLOW_import_name_in_function_import_statement258 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_IMPORT_ID_in_import_name277 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_import_name281 = new BitSet(new long[]{0x0000000000000008L,0x0000000000050000L});
+    public static final BitSet FOLLOW_ID_in_import_name281 = new BitSet(new long[]{0x0000000000000008L,0x0000000000140000L});
     public static final BitSet FOLLOW_DOT_STAR_in_import_name286 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_GLOBAL_in_global309 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_global313 = new BitSet(new long[]{0x0000040000000000L});
@@ -4400,22 +4400,22 @@
     public static final BitSet FOLLOW_VT_CURLY_CHUNK_in_function356 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_TEMPLATE_in_template381 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_TEMPLATE_ID_in_template385 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_template_slot_in_template394 = new BitSet(new long[]{0x0000000000008000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_END_in_template402 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_template_slot_in_template394 = new BitSet(new long[]{0x0000000000008000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_VK_END_in_template402 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_SLOT_in_template_slot422 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_data_type_in_template_slot426 = new BitSet(new long[]{0x0000000000004000L});
     public static final BitSet FOLLOW_VT_SLOT_ID_in_template_slot430 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_QUERY_in_query452 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_QUERY_ID_in_query456 = new BitSet(new long[]{0x0000100000400000L});
     public static final BitSet FOLLOW_parameters_in_query460 = new BitSet(new long[]{0x0000100000400000L});
-    public static final BitSet FOLLOW_lhs_block_in_query465 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
-    public static final BitSet FOLLOW_END_in_query469 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_lhs_block_in_query465 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_VK_END_in_query469 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_RULE_in_rule496 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_RULE_ID_in_rule500 = new BitSet(new long[]{0x0800000000030000L,0x0000000009000000L});
+    public static final BitSet FOLLOW_VT_RULE_ID_in_rule500 = new BitSet(new long[]{0x0800000000030000L,0x0000000012000000L});
     public static final BitSet FOLLOW_VK_EXTEND_in_rule505 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_RULE_ID_in_rule509 = new BitSet(new long[]{0x0000000000000008L});
-    public static final BitSet FOLLOW_decl_metadata_in_rule519 = new BitSet(new long[]{0x0000000000030000L,0x0000000009000000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule530 = new BitSet(new long[]{0x0000000000020000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_rule519 = new BitSet(new long[]{0x0000000000030000L,0x0000000012000000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule530 = new BitSet(new long[]{0x0000000000020000L,0x0000000010000000L});
     public static final BitSet FOLLOW_when_part_in_rule539 = new BitSet(new long[]{0x0000000000020000L});
     public static final BitSet FOLLOW_VT_RHS_CHUNK_in_rule544 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_WHEN_in_when_part563 = new BitSet(new long[]{0x0000100000400000L});
@@ -4424,24 +4424,24 @@
     public static final BitSet FOLLOW_VK_ATTRIBUTES_in_rule_attributes591 = new BitSet(new long[]{0x01FFE00000000000L});
     public static final BitSet FOLLOW_rule_attribute_in_rule_attributes597 = new BitSet(new long[]{0x01FFE00000000008L});
     public static final BitSet FOLLOW_VT_PARAM_LIST_in_parameters621 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_param_definition_in_parameters626 = new BitSet(new long[]{0x0000004000000008L,0x0000000000010000L});
-    public static final BitSet FOLLOW_data_type_in_param_definition648 = new BitSet(new long[]{0x0000004000000008L,0x0000000000010000L});
+    public static final BitSet FOLLOW_param_definition_in_parameters626 = new BitSet(new long[]{0x0000004000000008L,0x0000000000040000L});
+    public static final BitSet FOLLOW_data_type_in_param_definition648 = new BitSet(new long[]{0x0000004000000008L,0x0000000000040000L});
     public static final BitSet FOLLOW_argument_in_param_definition653 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ID_in_argument673 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
     public static final BitSet FOLLOW_LEFT_SQUARE_in_argument676 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
     public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument680 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
     public static final BitSet FOLLOW_VK_DECLARE_in_type_declaration706 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
-    public static final BitSet FOLLOW_decl_metadata_in_type_declaration719 = new BitSet(new long[]{0x0000000000000000L,0x0000000001090000L});
-    public static final BitSet FOLLOW_decl_field_in_type_declaration732 = new BitSet(new long[]{0x0000000000000000L,0x0000000000090000L});
-    public static final BitSet FOLLOW_END_in_type_declaration738 = new BitSet(new long[]{0x0000000000000008L});
+    public static final BitSet FOLLOW_VT_TYPE_DECLARE_ID_in_type_declaration710 = new BitSet(new long[]{0x0000000000000000L,0x0000000002048000L});
+    public static final BitSet FOLLOW_decl_metadata_in_type_declaration719 = new BitSet(new long[]{0x0000000000000000L,0x0000000002048000L});
+    public static final BitSet FOLLOW_decl_field_in_type_declaration732 = new BitSet(new long[]{0x0000000000000000L,0x0000000000048000L});
+    public static final BitSet FOLLOW_VK_END_in_type_declaration738 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_AT_in_decl_metadata763 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_ID_in_decl_metadata767 = new BitSet(new long[]{0x0000000000100000L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_metadata771 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_decl_field798 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_decl_field_initialization_in_decl_field802 = new BitSet(new long[]{0x0000004000000000L});
-    public static final BitSet FOLLOW_data_type_in_decl_field807 = new BitSet(new long[]{0x0000000000000008L,0x0000000001000000L});
-    public static final BitSet FOLLOW_decl_metadata_in_decl_field812 = new BitSet(new long[]{0x0000000000000008L,0x0000000001000000L});
+    public static final BitSet FOLLOW_data_type_in_decl_field807 = new BitSet(new long[]{0x0000000000000008L,0x0000000002000000L});
+    public static final BitSet FOLLOW_decl_metadata_in_decl_field812 = new BitSet(new long[]{0x0000000000000008L,0x0000000002000000L});
     public static final BitSet FOLLOW_EQUALS_in_decl_field_initialization839 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_decl_field_initialization843 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute866 = new BitSet(new long[]{0x0000000000000004L});
@@ -4472,16 +4472,16 @@
     public static final BitSet FOLLOW_VK_DIALECT_in_rule_attribute1044 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_STRING_in_rule_attribute1048 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_IMPLICIT_in_lhs_block1073 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs_block1078 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
+    public static final BitSet FOLLOW_lhs_in_lhs_block1078 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
     public static final BitSet FOLLOW_VT_OR_PREFIX_in_lhs1104 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1109 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
+    public static final BitSet FOLLOW_lhs_in_lhs1109 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
     public static final BitSet FOLLOW_VT_OR_INFIX_in_lhs1125 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1129 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
+    public static final BitSet FOLLOW_lhs_in_lhs1129 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
     public static final BitSet FOLLOW_lhs_in_lhs1133 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_AND_PREFIX_in_lhs1145 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1150 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
+    public static final BitSet FOLLOW_lhs_in_lhs1150 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
     public static final BitSet FOLLOW_VT_AND_INFIX_in_lhs1166 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1170 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
+    public static final BitSet FOLLOW_lhs_in_lhs1170 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
     public static final BitSet FOLLOW_lhs_in_lhs1174 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EXISTS_in_lhs1186 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_lhs_in_lhs1190 = new BitSet(new long[]{0x0000000000000008L});
@@ -4490,9 +4490,9 @@
     public static final BitSet FOLLOW_VK_EVAL_in_lhs1218 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_lhs1222 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_FORALL_in_lhs1234 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_in_lhs1239 = new BitSet(new long[]{0x0000000087800008L,0x0000000100000628L});
+    public static final BitSet FOLLOW_lhs_in_lhs1239 = new BitSet(new long[]{0x0000000087800008L,0x0000000200000628L});
     public static final BitSet FOLLOW_FROM_in_lhs1253 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_lhs_pattern_in_lhs1257 = new BitSet(new long[]{0x0000000020000000L,0x0000001400000010L});
+    public static final BitSet FOLLOW_lhs_pattern_in_lhs1257 = new BitSet(new long[]{0x0000000020000000L,0x0000001800000010L});
     public static final BitSet FOLLOW_from_elements_in_lhs1261 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_lhs_pattern_in_lhs1272 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ACCUMULATE_in_from_elements1293 = new BitSet(new long[]{0x0000000000000004L});
@@ -4506,7 +4506,7 @@
     public static final BitSet FOLLOW_accumulate_init_clause_in_accumulate_parts1372 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_accumulate_id_clause_in_accumulate_parts1383 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_ACCUMULATE_INIT_CLAUSE_in_accumulate_init_clause1406 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_INIT_in_accumulate_init_clause1415 = new BitSet(new long[]{0x0000000000000004L});
+    public static final BitSet FOLLOW_VK_INIT_in_accumulate_init_clause1415 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1419 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_ACTION_in_accumulate_init_clause1427 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_accumulate_init_clause1431 = new BitSet(new long[]{0x0000000000000008L});
@@ -4533,23 +4533,23 @@
     public static final BitSet FOLLOW_OVER_in_over_clause1639 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_over_element_in_over_clause1644 = new BitSet(new long[]{0x0000000000200008L});
     public static final BitSet FOLLOW_VT_BEHAVIOR_in_over_element1665 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_over_element1667 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_ID_in_over_element1667 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
     public static final BitSet FOLLOW_ID_in_over_element1671 = new BitSet(new long[]{0x0000000000100000L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_over_element1675 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_in_fact_expression1698 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression1702 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1707 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression1702 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1707 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression1721 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1725 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1725 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1729 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression1741 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1745 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1745 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1749 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1760 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_field_element_in_fact_expression1764 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_field_element_in_fact_expression1764 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1768 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1779 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1783 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1783 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1787 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EVAL_in_fact_expression1798 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1802 = new BitSet(new long[]{0x0000000000000008L});
@@ -4566,17 +4566,17 @@
     public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression1895 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1899 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_OPERATOR_in_fact_expression1911 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1915 = new BitSet(new long[]{0x0000001F00180040L,0x00003FC0F0104048L});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1920 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1915 = new BitSet(new long[]{0x0000001F00180040L,0x00003FC1E0204048L});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1920 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1925 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_IN_in_fact_expression1936 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1940 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1946 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1940 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1946 = new BitSet(new long[]{0x0000001F00100048L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression1961 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1965 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1965 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1969 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression1979 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1983 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC0F0104048L});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1983 = new BitSet(new long[]{0x0000001F00100040L,0x00003FC1E0204048L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1987 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1998 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_accessor_element_in_fact_expression2003 = new BitSet(new long[]{0x0000002000000008L});
@@ -4592,11 +4592,11 @@
     public static final BitSet FOLLOW_ID_in_accessor_element2123 = new BitSet(new long[]{0x0000000000080008L});
     public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element2127 = new BitSet(new long[]{0x0000000000080008L});
     public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type2148 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type2152 = new BitSet(new long[]{0x0000000000000008L,0x0000400000010000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type2152 = new BitSet(new long[]{0x0000000000000008L,0x0000400000040000L});
     public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type2156 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
     public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type2160 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
     public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2182 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type2186 = new BitSet(new long[]{0x0000000000000008L,0x0000400000010000L});
+    public static final BitSet FOLLOW_ID_in_data_type2186 = new BitSet(new long[]{0x0000000000000008L,0x0000400000040000L});
     public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2190 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
     public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2194 = new BitSet(new long[]{0x0000000000000008L,0x0000400000000000L});
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsParserExceptionFactory.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -292,8 +292,6 @@
 			return "null";
 		case DRLLexer.THEN:
 			return "then";
-		case DRLLexer.END:
-			return "end";
 		case DRLLexer.GRAVE_ACCENT:
 			return "`";
 		case DRLLexer.SEMICOLON:

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsSoftKeywords.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -1,8 +1,5 @@
 package org.drools.lang;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import org.drools.RuntimeDroolsException;
 import org.drools.base.evaluators.Operator;
 
@@ -58,6 +55,8 @@
 	public static final String ACTION = "action";
 	public static final String REVERSE = "reverse";
 	public static final String RESULT = "result";
+    public static final String END = "end";
+    public static final String INIT = "init";
 	
 	public static boolean isOperator( final String operator, final boolean negated ) {
 	    try {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DroolsTreeAdaptor.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -30,7 +30,7 @@
 			tree.setStartCharOffset(((CommonToken) token).getStartIndex());
 			tree.setEndCharOffset(((CommonToken) token).getStopIndex());
 
-			if (token.getType() == DRLLexer.END
+			if (token.getType() == DRLLexer.VK_END
 					|| token.getType() == DRLLexer.VK_EVAL
 					|| token.getType() == DRLLexer.THEN
 					|| token.getType() == DRLLexer.WHEN
@@ -56,7 +56,7 @@
 					|| token.getType() == DRLLexer.VK_GLOBAL
 					|| token.getType() == DRLLexer.VK_IMPORT
 					|| token.getType() == DRLLexer.VK_IN
-					|| token.getType() == DRLLexer.INIT
+					|| token.getType() == DRLLexer.VK_INIT
 					|| token.getType() == DRLLexer.VK_LOCK_ON_ACTIVE
 					|| token.getType() == DRLLexer.VK_NO_LOOP
 					|| token.getType() == DRLLexer.VK_NOT

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2009-01-25 17:14:10 UTC (rev 24908)
@@ -1,1892 +1,1900 @@
-grammar DRL;
-
-options {
-	output=AST;
-}
-
-tokens {
-	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_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;
-
-	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_EXISTS;
-	VK_FORALL;
-	VK_ACTION;
-	VK_REVERSE;
-	VK_RESULT;
-	VK_OPERATOR;
-}
-
- at parser::header {
-	package org.drools.lang;
-	
-	import java.util.List;
-	import java.util.LinkedList;
-	import org.drools.compiler.DroolsParserException;
-}
-
- at lexer::header {
-	package org.drools.lang;
-
-	import org.drools.compiler.DroolsParserException;
-}
-
-
- at lexer::members {
-	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
-	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
-
-	/** The standard method called to automatically emit a token at the
-	 *  outermost lexical rule.  The token object should point into the
-	 *  char buffer start..stop.  If there is a text override in 'text',
-	 *  use that to set the token's text.  Override this method to emit
-	 *  custom Token objects.
-	 */
-	public Token emit() {
-		Token t = new DroolsToken(input, state.type, state.channel, state.tokenStartCharIndex, getCharIndex()-1);
-		t.setLine(state.tokenStartLine);
-		t.setText(state.text);
-		t.setCharPositionInLine(state.tokenStartCharPositionInLine);
-		emit(t);
-		return t;
-	}
-
-	public void reportError(RecognitionException ex) {
-		errors.add(errorMessageFactory.createDroolsException(ex));
-	}
-
-	/** return the raw DroolsParserException errors */
-	public List<DroolsParserException> getErrors() {
-		return errors;
-	}
-
-	/** Overrided this method to not output mesages */
-	public void emitErrorMessage(String msg) {
-	}
-}
-
- at parser::members {
-	private Stack<Map<DroolsParaphraseTypes, String>> paraphrases = new Stack<Map<DroolsParaphraseTypes, String>>();
-	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
-	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(tokenNames, paraphrases);
-	private String source = "unknown";
-	private boolean lookaheadTest = false;
-	private LinkedList<DroolsSentence> editorInterface = null;
-	private boolean isEditorInterfaceEnabled = false;
-
-	public LinkedList<DroolsSentence> getEditorInterface(){
-		return editorInterface;
-	}
-
-	public void enableEditorInterface(){
-		isEditorInterfaceEnabled = true;
-	}
-
-	public void disableEditorInterface(){
-		isEditorInterfaceEnabled = false;
-	}
-
-	private void beginSentence(DroolsSentenceType sentenceType){
-		if (isEditorInterfaceEnabled) {
-			if (null == editorInterface) {
-				editorInterface = new LinkedList<DroolsSentence>();
-			}
-			DroolsSentence sentence = new DroolsSentence();
-			sentence.setType(sentenceType);
-			editorInterface.add(sentence);
-		}
-	}
-
-	private DroolsSentence getActiveSentence(){
-		return editorInterface.getLast();
-	}
-
-	private void emit(List tokens, DroolsEditorType editorType){
-		if (isEditorInterfaceEnabled && tokens != null) {		
-			for (Object activeObject : tokens){
-				emit((Token) activeObject, editorType);
-			}
-		}
-	}
-
-	private void emit(Token token, DroolsEditorType editorType){
-		if (isEditorInterfaceEnabled && token != null) {
-			((DroolsToken)token).setEditorType(editorType);
-			getActiveSentence().addContent((DroolsToken) token);
-		}
-	}
-
-	private void emit(boolean forceEmit, int activeContext){
-		if (isEditorInterfaceEnabled) {
-				getActiveSentence().addContent(activeContext);
-		}
-	}
-	
-	private void emit(int activeContext){
-		if (isEditorInterfaceEnabled) {
-			emit(false, activeContext);
-		}
-	}
-
-	private DroolsToken getLastTokenOnList(LinkedList list){
-		DroolsToken lastToken = null;
-		for (Object object : list) {
-			if (object instanceof DroolsToken) {
-				lastToken = (DroolsToken) object;
-			}
-		}
-		return lastToken;
-	}
-
-	private int getLastIntegerValue(LinkedList list) {
-		int lastIntergerValue = -1;
-		for (Object object : list) {
-			if (object instanceof Integer) {
-				lastIntergerValue = (Integer) object;
-			}
-		}
-		return lastIntergerValue;
-	}
-
-	private String retrieveLT(int LTNumber) {
-      		if (null == input)
-			return null;
-		if (null == input.LT(LTNumber))
-			return null;
-		if (null == input.LT(LTNumber).getText())
-			return null;
-	
-		return input.LT(LTNumber).getText();
-	}
-
-	private boolean validateLT(int LTNumber, String text) {
-		String text2Validate = retrieveLT( LTNumber );
-		return text2Validate == null ? false : text2Validate.equalsIgnoreCase(text);
-	}
-	
-	private boolean isPluggableEvaluator( int offset, boolean negated ) {
-		String text2Validate = retrieveLT( offset );
-	        return text2Validate == null ? false : DroolsSoftKeywords.isOperator( text2Validate, negated );
-	}
-	
-	private boolean isPluggableEvaluator( boolean negated ) {
-	        return isPluggableEvaluator( 1, negated );
-	}
-	
-	private boolean validateIdentifierKey(String text) {
-		return validateLT(1, text);
-	}
-	
-	void checkTrailingSemicolon(String text, Token token) {
-		if (text.trim().endsWith(";")) {
-			errors.add(errorMessageFactory
-					.createTrailingSemicolonException(((DroolsToken) token)
-							.getLine(), ((DroolsToken) token)
-							.getCharPositionInLine(), ((DroolsToken) token)
-							.getStopIndex()));
-		}
-	}
-	
-	private boolean validateNotWithBinding(){
-		if (input.LA(1) == ID && input.LA(2) == ID && input.LA(3) == COLON){
-			return true;
-		}
-		return false;
-	}
-
-	private boolean validateRestr() {
-		int lookahead = 2;
-		int countParen = 1;
-
-		while (true) {
-			if (input.LA(lookahead) == COMMA) {
-				break;
-			} else if (input.LA(lookahead) == LEFT_PAREN) {
-				countParen++;
-			} else if (input.LA(lookahead) == RIGHT_PAREN) {
-				countParen--;
-			} else if (input.LA(lookahead) == EOF) {
-				break;
-			}
-			if (countParen == 0){
-				break;
-			}
-			lookahead++;
-		}
-		
-		boolean returnValue = false;
-		int activeIndex = input.index();
-		lookaheadTest = true;
-		try {
-			input.seek(input.LT(2).getTokenIndex());
-			constraint_expression();
-			returnValue = true;
-		} catch (RecognitionException e) {
-		} finally{
-			input.seek(activeIndex);
-		}
-		lookaheadTest = false;
-
-		return returnValue;
-	}
-	
-	private String safeSubstring(String text, int start, int end) {
-		return text.substring(Math.min(start, text.length()), Math.min(Math
-				.max(start, end), text.length()));
-	}
-	
-	public void reportError(RecognitionException ex) {
-		// if we've already reported an error and have not matched a token
-		// yet successfully, don't report any errors.
-		if (state.errorRecovery) {
-			return;
-		}
-		state.errorRecovery = true;
-	
-		errors.add(errorMessageFactory.createDroolsException(ex));
-	}
-	
-	/** return the raw DroolsParserException errors */
-	public List<DroolsParserException> getErrors() {
-		return errors;
-	}
-	
-	/** Return a list of pretty strings summarising the errors */
-	public List<String> getErrorMessages() {
-		List<String> messages = new ArrayList<String>(errors.size());
-	
-		for (DroolsParserException activeException : errors) {
-			messages.add(activeException.getMessage());
-		}
-	
-		return messages;
-	}
-	
-	/** return true if any parser errors were accumulated */
-	public boolean hasErrors() {
-		return !errors.isEmpty();
-	}
-
-	/**
-	 * Method that adds a paraphrase type into paraphrases stack.
-	 * 
-	 * @param type
-	 *            paraphrase type
-	 */
-	private void pushParaphrases(DroolsParaphraseTypes type) {
-		Map<DroolsParaphraseTypes, String> activeMap = new HashMap<DroolsParaphraseTypes, String>();
-		activeMap.put(type, "");
-		paraphrases.push(activeMap);
-	}
-
-	/**
-	 * Method that sets paraphrase value for a type into paraphrases stack.
-	 * 
-	 * @param type
-	 *            paraphrase type
-	 * @param value
-	 *            paraphrase value
-	 */
-	private void setParaphrasesValue(DroolsParaphraseTypes type, String value) {
-		paraphrases.peek().put(type, value);
-	}
-
-	/**
-	 * Helper method that creates a string from a token list.
-	 * 
-	 * @param tokenList
-	 *            token list
-	 * @return string
-	 */
-	private String buildStringFromTokens(List<Token> tokenList) {
-		StringBuilder sb = new StringBuilder();
-		if (null != tokenList) {
-			for (Token activeToken : tokenList) {
-				if (null != activeToken) {
-					sb.append(activeToken.getText());
-				}
-			}
-		}
-		return sb.toString();
-	}
-	
-	/** Overrided this method to not output mesages */
-	public void emitErrorMessage(String msg) {
-	}
-}
-
-compilation_unit
-	:	package_statement?
-		statement*
-		EOF
-		-> ^(VT_COMPILATION_UNIT package_statement? statement*) 
-	;
-	catch [ RecognitionException e ] {
-		reportError( e );
-	}
-	catch [ RewriteEmptyStreamException e ] {
-	}
-finally {
-	if (isEditorInterfaceEnabled && retval.tree == null) {
-		retval.tree = root_0;
-		root_0 = (Object) adaptor.nil();
-		Object root_1 = (Object) adaptor.nil();
-		root_1 = (Object) adaptor.becomeRoot(adaptor.create(
-				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
-		if (stream_package_statement.hasNext()) {
-			adaptor.addChild(root_1, stream_package_statement.nextTree());
-		}
-		while (stream_statement.hasNext()) {
-			adaptor.addChild(root_1, stream_statement.nextTree());
-		}
-		adaptor.addChild(root_0, root_1);
-		retval.stop = input.LT(-1);
-		retval.tree = (Object) adaptor.rulePostProcessing(root_0);
-		adaptor.setTokenBoundaries(retval.tree, retval.start,
-				retval.stop);
-	}
-	if (isEditorInterfaceEnabled && hasErrors()) {
-		Tree rootNode = (Tree) adaptor.becomeRoot(adaptor.create(
-				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), adaptor.nil());
-		for (int i = 0; i < ((Tree)retval.tree).getChildCount(); i++) {
-			Tree childNode = (Tree) ((Tree)retval.tree).getChild(i);
-			if (!(childNode instanceof CommonErrorNode)) {
-				rootNode.addChild(childNode);
-			}
-		}
-		retval.tree = rootNode; 
-	}
-}
-
-package_statement
- at init  { pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); }
- at after { paraphrases.pop(); }
-	:	package_key
-		package_id SEMICOLON?
-	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
-		-> ^(package_key package_id)
-	;
-
-package_id
-	:	id+=ID ( id+=DOT id+=ID )*
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.PACKAGE, buildStringFromTokens($id));	}
-		-> ^(VT_PACKAGE_ID ID+)
-	;
-
-statement
-options{
-k = 2;
-}	:	rule_attribute
-	|{(validateLT(1, "import") && validateLT(2, "function") )}?=> function_import_statement 
-	|	import_statement 
-	|	global 
-	|	function
-	|	{(validateLT(1, DroolsSoftKeywords.TEMPLATE))}?=> template
-	|	{(validateLT(1, DroolsSoftKeywords.DECLARE))}?=> type_declaration
-	|	rule
-	|	query
-	;
-
-import_statement
- at init  { pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  }
- at after { paraphrases.pop(); }
-	:	import_key import_name[DroolsParaphraseTypes.IMPORT] SEMICOLON?
-	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
-		-> ^(import_key import_name)
-	;
-
-function_import_statement
- at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); }
- at after { paraphrases.pop(); }
-	:	imp=import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] SEMICOLON?
-	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}		
-		-> ^(VT_FUNCTION_IMPORT[$imp.start] function_key import_name)
-	;
-
-import_name [DroolsParaphraseTypes importType]
-	:	id+=ID ( id+=DOT id+=ID )* id+=DOT_STAR?
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue($importType, buildStringFromTokens($id));	}
-		-> ^(VT_IMPORT_ID ID+ DOT_STAR?)
-	;
-
-global
- at init  { pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); }
- at after { paraphrases.pop(); }
-	:	global_key data_type global_id SEMICOLON?
-	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
-		-> ^(global_key data_type global_id)
-	;
-
-global_id
-	:	id=ID
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.GLOBAL, $id.text);	}
-		-> VT_GLOBAL_ID[$id]
-	;
-
-function
- at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  }
- at after { paraphrases.pop(); }
-	:	function_key data_type? function_id parameters curly_chunk
-		-> ^(function_key data_type? function_id parameters curly_chunk)
-	;
-
-function_id
-	:	id=ID
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.FUNCTION, $id.text);	}
-		-> VT_FUNCTION_ID[$id]
-	;
-
-query
- at init  { pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); }
- at after { paraphrases.pop(); }
-	:	query_key query_id 
-	{	emit(Location.LOCATION_RULE_HEADER);	}
-		parameters? 
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
-		normal_lhs_block 
-		END SEMICOLON?
-	{	emit($END, DroolsEditorType.KEYWORD);
-		emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
-		-> ^(query_key query_id parameters? normal_lhs_block END)
-	;
-
-query_id
-	: 	id=ID
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
-	| 	id=STRING
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
-	;
-
-parameters
-	:	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
-			( param_definition (COMMA {	emit($COMMA, DroolsEditorType.SYMBOL);	} param_definition)* )?
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-		-> ^(VT_PARAM_LIST param_definition* RIGHT_PAREN)
-	;
-
-param_definition
-	:	data_type? argument
-	;
-
-argument
-	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
-		dimension_definition*
-	;
-
-type_declaration
- at init  { pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); }
- at after { paraphrases.pop(); }
-	:	declare_key  type_declare_id
-		decl_metadata*
-		decl_field*
-		END
-	{	emit($END, DroolsEditorType.KEYWORD);	}
-		-> ^(declare_key type_declare_id decl_metadata* decl_field* END)
-	;
-
-type_declare_id
-	: 	id=ID
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.TYPE_DECLARE, $id.text);	} -> VT_TYPE_DECLARE_ID[$id]
-	;
-
-decl_metadata
-	:	AT 
-	{	emit($AT, DroolsEditorType.SYMBOL);	}
-		ID
-	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
-		paren_chunk
-		-> ^(AT ID paren_chunk)
-	;
-
-decl_field
-	:	ID	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
-		decl_field_initialization? 
-		COLON	{	emit($COLON, DroolsEditorType.SYMBOL);	}
-		data_type
-		decl_metadata*
-		-> ^(ID decl_field_initialization? data_type decl_metadata*)
-	;
-
-decl_field_initialization
-	:	EQUALS	{	emit($EQUALS, DroolsEditorType.SYMBOL);	}
-		paren_chunk
-	-> ^(EQUALS paren_chunk)
-	;
-
-template
- at init  { pushParaphrases(DroolsParaphraseTypes.TEMPLATE); }
- at after { paraphrases.pop(); }
-	:	
-	{	beginSentence(DroolsSentenceType.TEMPLATE);	}
-		template_key template_id 
-		semi1=SEMICOLON?
-	{	emit($semi1, DroolsEditorType.SYMBOL);	}
-		template_slot+
-		END semi2=SEMICOLON?
-	{	emit($END, DroolsEditorType.KEYWORD);
-		emit($semi2, DroolsEditorType.SYMBOL);	}
-		-> ^(template_key template_id template_slot+ END)
-	;
-
-template_id
-	: 	id=ID
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
-	| 	id=STRING
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
-	;
-
-template_slot
-	:	 data_type slot_id SEMICOLON?
-	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
-		-> ^(VT_SLOT data_type slot_id)
-	;
-
-slot_id
-	:	id=ID
-	{	emit($id, DroolsEditorType.IDENTIFIER);	}
-		-> VT_SLOT_ID[$id]
-	;
-
-rule
- at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); }
- at after { paraphrases.pop(); isFailed = false; }
-	:
-	{	beginSentence(DroolsSentenceType.RULE);	}
-		rule_key rule_id 
-	{	emit(Location.LOCATION_RULE_HEADER);	}
-		(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)
-	;
-finally {
-	if (isEditorInterfaceEnabled && isFailed) {
-		if (input.LA(6) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
-			input.LA(5) == MISC && input.LA(6) == ID && 
-			validateLT(1, DroolsSoftKeywords.LOCK) && validateLT(3, DroolsSoftKeywords.ON) &&
-			validateLT(5, DroolsSoftKeywords.ACTIVE)){
-			emit(input.LT(1), DroolsEditorType.KEYWORD);
-			emit(input.LT(2), DroolsEditorType.KEYWORD);
-			emit(input.LT(3), DroolsEditorType.KEYWORD);
-			emit(input.LT(4), DroolsEditorType.KEYWORD);
-			emit(input.LT(5), DroolsEditorType.KEYWORD);
-			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
-			input.consume();
-			input.consume();
-			input.consume();
-			input.consume();
-			input.consume();
-		} else if (input.LA(4) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
-			(	(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
-				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EXPIRES)) ||
-				(validateLT(1, DroolsSoftKeywords.NO) && validateLT(3, DroolsSoftKeywords.LOOP)) ||
-				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EFFECTIVE)) ||
-				(validateLT(1, DroolsSoftKeywords.AUTO) && validateLT(3, DroolsSoftKeywords.FOCUS)) ||
-				(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
-				(validateLT(1, DroolsSoftKeywords.RULEFLOW) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
-				(validateLT(1, DroolsSoftKeywords.AGENDA) && validateLT(3, DroolsSoftKeywords.GROUP))	)){
-			emit(input.LT(1), DroolsEditorType.KEYWORD);
-			emit(input.LT(2), DroolsEditorType.KEYWORD);
-			emit(input.LT(3), DroolsEditorType.KEYWORD);
-			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
-			input.consume();
-			input.consume();
-			input.consume();
-		} else if (input.LA(2) == EOF && input.LA(1) == ID && 
-				(validateLT(1, DroolsSoftKeywords.DIALECT) || validateLT(1, DroolsSoftKeywords.ENABLED) ||
-				 validateLT(1, DroolsSoftKeywords.SALIENCE) || validateLT(1, DroolsSoftKeywords.DURATION))){
-			emit(input.LT(1), DroolsEditorType.KEYWORD);
-			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
-			input.consume();
-		}
-	}
-}
-
-when_part
-	: 	WHEN {	emit($WHEN, DroolsEditorType.KEYWORD);	}
-		COLON? {	emit($COLON, DroolsEditorType.SYMBOL);	}
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
-		normal_lhs_block
-	->	WHEN normal_lhs_block
-	;
-
-rule_id
-	: 	id=ID
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
-	| 	id=STRING
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
-	;
-
-rule_attributes
-	:	( attributes_key COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} )? 
-		rule_attribute ( COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} attr=rule_attribute )*
-		-> ^(VT_RULE_ATTRIBUTES attributes_key? rule_attribute+)
-	;
-
-rule_attribute
- at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); }
- at after { paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); }
-	:	salience 
-	|	no_loop
-	|	agenda_group  
-	|	duration  
-	|	activation_group 
-	|	auto_focus 
-	|	date_effective 
-	|	date_expires 
-	|	enabled 
-	|	ruleflow_group 
-	|	lock_on_active
-	|	dialect 
-	;
-finally {
-	if (isEditorInterfaceEnabled && isFailed) {
-		if (input.LA(2) == EOF && input.LA(1) == ID){
-			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
-			input.consume();
-		}
-	}
-}
-date_effective
-	:	date_effective_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
-	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
-	;
-
-date_expires
-	:	date_expires_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
-	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
-	;
-	
-enabled
-	:	enabled_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
-	    ( BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
-	    | paren_chunk 
-	    )
-	;	
-
-salience
-	:	salience_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	}
-		( INT 	{	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
-		| paren_chunk
-		)
-	;
-
-no_loop
-	:	no_loop_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
-	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
-	;
-
-auto_focus
-	:	auto_focus_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
-	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
-	;	
-	
-activation_group
-	:	activation_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
-	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
-	;
-
-ruleflow_group
-	:	ruleflow_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
-	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
-	;
-
-agenda_group
-	:	agenda_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
-	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
-	;
-
-duration
-	:	duration_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
-	    ( INT {	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
-	    | paren_chunk
-	    )
-	;	
-	
-dialect
-	:	dialect_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
-	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
-	;			
-	
-lock_on_active
-	:	lock_on_active_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
-	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
-	;
-
-normal_lhs_block
-	:	lhs*
-	->	^(VT_AND_IMPLICIT lhs*)
-	;
-
-lhs	:	lhs_or
-	;
-
-lhs_or
- at init{
-	Token orToken = null;
-}	:	(LEFT_PAREN or_key)=> 
-		LEFT_PAREN  {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
-			or=or_key
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
-			lhs_and+ 
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} // PREFIX 
-		-> ^(VT_OR_PREFIX[$or.start] lhs_and+ RIGHT_PAREN)
-	|	(lhs_and -> lhs_and) 
-		( (or_key|DOUBLE_PIPE)=> (value=or_key {orToken = $value.start;} |pipe=DOUBLE_PIPE {orToken = $pipe; emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);}) 
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
-		lhs_and 
-		-> ^(VT_OR_INFIX[orToken] $lhs_or lhs_and))*
-	;
-
-lhs_and
- at init{
-	Token andToken = null;
-}	:	(LEFT_PAREN and_key)=> 
-		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
-			and=and_key
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
-			lhs_unary+ 
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}  // PREFIX
-		-> ^(VT_AND_PREFIX[$and.start] lhs_unary+ RIGHT_PAREN)
-	|	(lhs_unary -> lhs_unary) 
-		( (and_key|DOUBLE_AMPER)=> (value=and_key {andToken = $value.start;} |amper=DOUBLE_AMPER {andToken = $amper; emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);}) 
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
-		lhs_unary 
-		-> ^(VT_AND_INFIX[andToken] $lhs_and lhs_unary) )*
-	;
-
-lhs_unary
-	:	(	lhs_exist
-		|{validateNotWithBinding()}?=>	lhs_not_binding
-		|	lhs_not
-		|	lhs_eval
-		|	lhs_forall
-		|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	}  
-				lhs_or 
-			RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-		|	pattern_source
-		)
-		((SEMICOLON)=> SEMICOLON! {	emit($SEMICOLON, DroolsEditorType.SYMBOL);	})?
-	;
-
-lhs_exist
-	:	exists_key
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	}
-	        ( (LEFT_PAREN (or_key|and_key))=> lhs_or //prevent "((" 
-		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
-			lhs_or 
-		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-	        | lhs_pattern
-	        )
-	        -> ^(exists_key lhs_or? lhs_pattern? RIGHT_PAREN?)
-	;
-
-lhs_not_binding
-	:	not_key fact_binding
-	-> ^(not_key ^(VT_PATTERN fact_binding))
-	;
-
-lhs_not	:	not_key
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	}
-		( (LEFT_PAREN (or_key|and_key))=> {	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} lhs_or //prevent "((" 
-		|	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} 
-				lhs_or 
-			RIGHT_PAREN  {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-		| 	lhs_pattern )
-	        -> ^(not_key lhs_or? lhs_pattern? RIGHT_PAREN?)
-	;
-
-lhs_eval
-	:	ev=eval_key
-	{	emit(Location.LOCATION_LHS_INSIDE_EVAL);	}
-		pc=paren_chunk
-	{	if (((DroolsTree) $pc.tree).getText() != null){
-			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	            		
-		}
-	}
-	{	String body = safeSubstring( $pc.text, 1, $pc.text.length()-1 );
-		checkTrailingSemicolon( body, $ev.start );	}
-		-> ^(eval_key paren_chunk)
-	;
-
-lhs_forall
-	:	forall_key 
-		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
-			lhs_pattern+ 
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-		-> ^(forall_key lhs_pattern+ RIGHT_PAREN)
-	;
-
-pattern_source
- at init { boolean isFailed = true;	}
- at after { isFailed = false;	}
-	:	lhs_pattern
-		over_clause?
-		(
-			FROM^
-		{	emit($FROM, DroolsEditorType.KEYWORD);
-			emit(Location.LOCATION_LHS_FROM);	}
-		        (  accumulate_statement
-		          | collect_statement 
-		          | entrypoint_statement
-		          | from_source
-		        )
-		)?
-	;
-finally {
-	if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ACCUMULATE) {
-			emit(input.LT(1), DroolsEditorType.KEYWORD);
-			emit(input.LT(2), DroolsEditorType.SYMBOL);
-			input.consume();
-			emit(true, Location.LOCATION_LHS_FROM_ACCUMULATE);
-	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == COLLECT) {
-			emit(input.LT(1), DroolsEditorType.KEYWORD);
-			emit(input.LT(2), DroolsEditorType.SYMBOL);
-			input.consume();
-			emit(true, Location.LOCATION_LHS_FROM_COLLECT);
-	}
-}
-
-over_clause
-	:	OVER^ {	emit($OVER, DroolsEditorType.KEYWORD);	} over_elements 
-			(COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} over_elements)*
-	;
-
-over_elements
-	:	id1=ID {	emit($id1, DroolsEditorType.IDENTIFIER);	} 
-		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
-		id2=ID {	emit($id2, DroolsEditorType.IDENTIFIER);	} 
-		paren_chunk
-	-> ^(VT_BEHAVIOR $id1 $id2 paren_chunk)
-	;
-
-accumulate_statement
-	:	ACCUMULATE {	emit($ACCUMULATE, DroolsEditorType.KEYWORD);	}
-	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	}
-		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
-			lhs_or 
-		COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} 
-		(	accumulate_init_clause
-		|	accumulate_id_clause
-		)
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
-		-> ^(ACCUMULATE lhs_or accumulate_init_clause? accumulate_id_clause? RIGHT_PAREN)
-	;
-
-
-accumulate_init_clause
- at init  { boolean isFailed = true;	}
- at after { isFailed = false;	}
-	:	INIT {	emit($INIT, DroolsEditorType.KEYWORD);	}
-	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	}
-		pc1=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] cm1=COMMA? {	emit($cm1, DroolsEditorType.SYMBOL);	} 
-	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	}
-		action_key pc2=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] cm2=COMMA? {	emit($cm2, DroolsEditorType.SYMBOL);	} 
-	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	}
-	(	reverse_key pc3=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] cm3=COMMA? {	emit($cm3, DroolsEditorType.SYMBOL);	} )?
-
-	{	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&
-            			(pc2 != null && ((DroolsTree) pc2.tree).getText() != null) &&
-            			(pc3 != null && ((DroolsTree) pc3.tree).getText() != null)) {
-			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);
-		}	
-	}
-		res1=result_key {	emit($res1.start, DroolsEditorType.KEYWORD);	} pc4=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE]
-	-> ^(VT_ACCUMULATE_INIT_CLAUSE ^(INIT $pc1) ^(action_key $pc2) ^(reverse_key $pc3)? ^(result_key $pc4))
-	;
-finally { 
-	if (isEditorInterfaceEnabled && isFailed && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.RESULT)) {
-		emit(input.LT(1), DroolsEditorType.KEYWORD);
-		input.consume();
-		if (input.LA(1) == LEFT_PAREN){
-			input.consume();
-			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
-		}
-	}
-}
-
-accumulate_paren_chunk[int locationType]
- at init{
-	String text = "";
-}	:	pc=accumulate_paren_chunk_data[false,$locationType] {text = $pc.text;} 
-	-> VT_PAREN_CHUNK[$pc.start,text]
-	;
-
-accumulate_paren_chunk_data[boolean isRecursive, int locationType]
-	:	lp1=LEFT_PAREN
-		{	if (!isRecursive) {
-				emit($lp1, DroolsEditorType.SYMBOL);
-				emit($locationType);
-			} else {
-				emit($lp1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}
-			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | accumulate_paren_chunk_data[true,-1] )* 
-		rp1=RIGHT_PAREN
-		{	if (!isRecursive) {
-				emit($rp1, DroolsEditorType.SYMBOL);
-			} else {
-				emit($rp1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}	
-	;
-
-accumulate_id_clause
-	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
-		paren_chunk
-	-> ^(VT_ACCUMULATE_ID_CLAUSE ID paren_chunk)
-	;
-
-collect_statement
-	:	COLLECT {	emit($COLLECT, DroolsEditorType.KEYWORD);	}
-	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
-		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
-			pattern_source 
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
-	-> ^(COLLECT pattern_source RIGHT_PAREN)
-	;
-
-entrypoint_statement
-	:	entry_point_key 
-	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
-		entrypoint_id
-	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
-	-> ^(entry_point_key entrypoint_id)
-	;
-
-entrypoint_id
-	: 	value=ID {	emit($value, DroolsEditorType.IDENTIFIER);	}
-		-> VT_ENTRYPOINT_ID[$value]
-	| 	value=STRING {	emit($value, DroolsEditorType.IDENTIFIER);	}
-		-> VT_ENTRYPOINT_ID[$value]
-	;
-
-from_source
-	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
-		( (LEFT_PAREN)=> args=paren_chunk )?
-		expression_chain?
-	{	if ( input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS) {
-			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
-		} else if ( input.LA(1) != EOF ) {
-			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
-		}	}
-	->	^(VT_FROM_SOURCE ID paren_chunk? expression_chain?)
-	;
-	
-expression_chain
-	:
-	 DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} 
-	 ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
-	  (
-	    {input.LA(1) == LEFT_PAREN}? paren_chunk
-	    |
-	    square_chunk
-	  )?
-	  expression_chain?
-	  -> ^(VT_EXPRESSION_CHAIN[$DOT] ID square_chunk? paren_chunk? expression_chain?)
-	;
-
-lhs_pattern
-	:	fact_binding -> ^(VT_PATTERN fact_binding)
-	|	fact -> ^(VT_PATTERN fact)
-	;
-
-fact_binding
- 	:	label
-		( fact
- 		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
- 			fact_binding_expression 
- 		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
- 		)
- 	-> ^(VT_FACT_BINDING label fact? fact_binding_expression? RIGHT_PAREN?)
-	;
-
-fact_binding_expression
- at init{
-	Token orToken = null;
-}	:	(fact -> fact) ( (value=or_key {orToken = $value.start;}|pipe=DOUBLE_PIPE {orToken = $pipe;}) fact 
-		-> ^(VT_FACT_OR[orToken] $fact_binding_expression fact) )*
-	;
-
-fact
- at init  { boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); }
- at after { paraphrases.pop();	}
-	:	pattern_type 
-		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
-	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	}
-			constraints? 
-		RIGHT_PAREN {	isFailedOnConstraints = false;	}
-	{	if ($RIGHT_PAREN.text.equals(")") ){ //WORKAROUND FOR ANTLR BUG!
-			emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);
-			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
-		}	}
-	->	^(VT_FACT pattern_type constraints? RIGHT_PAREN)
-	;
-finally {
-	if (isEditorInterfaceEnabled && isFailedOnConstraints && input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS){
-		if (!(getActiveSentence().getContent().getLast() instanceof Integer) && input.LA(-1) != COLON) {
-			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-		}
-	}
-}
-
-constraints
-	:	constraint ( COMMA! 
-	{	emit($COMMA, DroolsEditorType.SYMBOL);
-		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	} constraint )*
-	;
-
-constraint
-	:	or_constr
-	;
-
-or_constr
-	:	and_constr ( DOUBLE_PIPE^ 
-	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	} and_constr )* 
-	;
-
-and_constr
-	:	unary_constr ( DOUBLE_AMPER^ 
-	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);;	} unary_constr )*
-	;
-
-unary_constr
-options { k=2; }
- at init { boolean isFailed = true;	}
- at after { isFailed = false;	}
-	:	eval_key^ paren_chunk
-	|	field_constraint
-	| 	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}  
-			or_constr 
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-	;
-finally { 
-	if (isEditorInterfaceEnabled && isFailed && input.LA(2) == EOF && input.LA(1) == ID) {
-		emit(input.LT(1), DroolsEditorType.IDENTIFIER);
-		input.consume();
-		if (input.get(input.index() - 1).getType() == WS)
-			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-	}
-}
-
-field_constraint
- at init{
-	boolean isArrow = false;
-}	:	label accessor_path 
-		( or_restr_connective | arw=ARROW {	emit($ARROW, DroolsEditorType.SYMBOL);	} paren_chunk {isArrow = true;})?
-		-> {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)
-	;
-
-label
-	:	value=ID {	emit($ID, DroolsEditorType.IDENTIFIER_VARIABLE);	} 
-		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
-		-> VT_LABEL[$value]
-	;
-
-or_restr_connective
-	:	and_restr_connective ({(validateRestr())}?=> DOUBLE_PIPE^ 
-	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	}  and_restr_connective )* 
-	;
-catch [ RecognitionException re ] {
-	if (!lookaheadTest){
-        reportError(re);
-        recover(input,re);
-    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
-	} else {
-		throw re;
-	}
-}
-
-and_restr_connective
-	:	constraint_expression ({(validateRestr())}?=> DOUBLE_AMPER^ 
-	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);	} constraint_expression )*
-	;
-catch [ RecognitionException re ] {
-	if (!lookaheadTest){
-        reportError(re);
-        recover(input,re);
-    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
-	} else {
-		throw re;
-	}
-}
-
-constraint_expression
-options{
-k=3;
-}	:	compound_operator
-	|	simple_operator
-	|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
-			or_restr_connective 
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} 
-	;
-catch [ RecognitionException re ] {
-	if (!lookaheadTest){
-        reportError(re);
-        recover(input,re);
-    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
-	} else {
-		throw re;
-	}
-}
-finally {
-	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == ID) {
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-		emit(input.LT(1), DroolsEditorType.KEYWORD);
-		input.consume();
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
-	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID && 
-				input.LA(2) == ID && validateLT(1, DroolsSoftKeywords.NOT)) {
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-		emit(input.LT(1), DroolsEditorType.KEYWORD);
-		emit(input.LT(2), DroolsEditorType.KEYWORD);
-		input.consume();
-		input.consume();
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
-	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF  && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.IN)) {
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-		emit(input.LT(1), DroolsEditorType.KEYWORD);
-		emit(input.LT(2), DroolsEditorType.SYMBOL);
-		input.consume();
-		input.consume();
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
-	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID) {
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-		emit(input.LT(1), DroolsEditorType.KEYWORD);
-		emit(input.LT(2), DroolsEditorType.IDENTIFIER);
-		input.consume();
-		input.consume();
-		if (input.get(input.index() - 1).getType() == WS){
-			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_END);
-		}
-	}
-}
-
-simple_operator
- at init {if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);}
-	:	
-	(
-		EQUAL^ {	emit($EQUAL, DroolsEditorType.SYMBOL);	}
-	|	GREATER^ {	emit($GREATER, DroolsEditorType.SYMBOL);	}
-	|	GREATER_EQUAL^ {	emit($GREATER_EQUAL, DroolsEditorType.SYMBOL);	}
-	|	LESS^ {	emit($LESS, DroolsEditorType.SYMBOL);	}
-	|	LESS_EQUAL^ {	emit($LESS_EQUAL, DroolsEditorType.SYMBOL);	}
-	|	NOT_EQUAL^ {	emit($NOT_EQUAL, DroolsEditorType.SYMBOL);	}
-	|	not_key?
-		(	operator_key^ square_chunk?	)
-	)
-	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	}
-	expression_value
-	;
-
-//Simple Syntax Sugar
-compound_operator 
- at init { if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); }
-	:	
-	( in_key^ | not_key in_key^ ) 
-	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	}
-		LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
-			expression_value ( COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} expression_value )* 
-		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
-	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
-	;
-finally { 
-	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == DOUBLE_PIPE) {
-		emit(input.LT(1), DroolsEditorType.SYMBOL);
-		input.consume();
-		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-	}	}
-
-operator_key
-	:      {(isPluggableEvaluator(false))}? => id=ID
-	       { emit($id, DroolsEditorType.IDENTIFIER); }
-	       -> VK_OPERATOR[$id]
-	;
-
-neg_operator_key
-	:      {(isPluggableEvaluator(true))}? => id=ID 
-	       { emit($id, DroolsEditorType.IDENTIFIER); } 
-	       -> VK_OPERATOR[$id]
-	;
-
-expression_value
-	:	(accessor_path
-	|	literal_constraint 
-	|	paren_chunk)
-	{	if (isEditorInterfaceEnabled && !(input.LA(1) == EOF && input.get(input.index() - 1).getType() != WS))
-			emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
-	;
-finally { 
-	if (isEditorInterfaceEnabled && input.LA(2) == EOF) {
-		if (input.LA(1) == DOUBLE_PIPE) {
-			emit(input.LT(1), DroolsEditorType.SYMBOL);
-			input.consume();
-			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
-		}
-	}
-}
-
-literal_constraint
-	:	STRING {	emit($STRING, DroolsEditorType.STRING_CONST);	}
-	|	INT {	emit($INT, DroolsEditorType.NUMERIC_CONST);	}
-	|	FLOAT {	emit($FLOAT, DroolsEditorType.NUMERIC_CONST);	}
-	|	BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST);	}
-	|	NULL {	emit($NULL, DroolsEditorType.NULL_CONST);	}
-	;
-
-pattern_type
-	:	id+=ID ( id+=DOT id+=ID )* 
-	{	emit($id, DroolsEditorType.IDENTIFIER);
-		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens($id));	} 
-	    dimension_definition*
-		-> ^(VT_PATTERN_TYPE ID+ dimension_definition*)
-	;
-
-data_type
-	:	id+=ID ( id+=DOT id+=ID )* dimension_definition*
-	{	emit($id, DroolsEditorType.IDENTIFIER);	}
-		-> ^(VT_DATA_TYPE ID+ dimension_definition*)
-	;
-
-dimension_definition
-	:	LEFT_SQUARE {	emit($LEFT_SQUARE, DroolsEditorType.SYMBOL);	} 
-		RIGHT_SQUARE {	emit($RIGHT_SQUARE, DroolsEditorType.SYMBOL);	} 
-	;
-
-accessor_path
-	:	accessor_element ( DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} accessor_element )*
-	-> ^(VT_ACCESSOR_PATH accessor_element+)
-	;
-
-accessor_element
-	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
-		square_chunk*
-	-> ^(VT_ACCESSOR_ELEMENT ID square_chunk*)
-	;
-
-rhs_chunk
- at init{
-	String text = "";
-}	:	rc=rhs_chunk_data {text = $rc.text;}
-	-> VT_RHS_CHUNK[$rc.start,text]
-	;
-
-rhs_chunk_data
-	:	THEN 
-	{	if ($THEN.text.equalsIgnoreCase("then")){
-			emit($THEN, DroolsEditorType.KEYWORD);
-			emit(Location.LOCATION_RHS);
-		}	}
-			( any=~END { emit($any, DroolsEditorType.CODE_CHUNK); } )* 
-		end1=END {	emit($end1, DroolsEditorType.KEYWORD);	}
-		SEMICOLON? {	emit($SEMICOLON, DroolsEditorType.KEYWORD);	}
-	;
-
-curly_chunk
- at init{
-	String text = "";
-}	:	cc=curly_chunk_data[false] {text = $cc.text;}
-	-> VT_CURLY_CHUNK[$cc.start,text]
-	;
-
-curly_chunk_data[boolean isRecursive]
-	:	lc1=LEFT_CURLY
-		{	if (!isRecursive) {
-				emit($lc1, DroolsEditorType.SYMBOL);
-			} else {
-				emit($lc1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}
-			(any=~ ( LEFT_CURLY | RIGHT_CURLY ) { emit($any, DroolsEditorType.CODE_CHUNK); } | curly_chunk_data[true] )* 
-		rc1=RIGHT_CURLY
-		{	if (!isRecursive) {
-				emit($rc1, DroolsEditorType.SYMBOL);
-			} else {
-				emit($rc1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}	
-	;
-
-paren_chunk
- at init{
-	String text = "";
-}	:	pc=paren_chunk_data[false] {text = $pc.text;} 
-	-> VT_PAREN_CHUNK[$pc.start,text]
-	;
-
-paren_chunk_data[boolean isRecursive]
-	:	lp1=LEFT_PAREN
-		{	if (!isRecursive) {
-				emit($lp1, DroolsEditorType.SYMBOL);
-			} else {
-				emit($lp1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}
-			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | paren_chunk_data[true] )* 
-		rp1=RIGHT_PAREN
-		{	if (!isRecursive) {
-				emit($rp1, DroolsEditorType.SYMBOL);
-			} else {
-				emit($rp1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}	
-	;
-
-square_chunk
- at init{
-	String text = "";
-}	:	sc=square_chunk_data[false] {text = $sc.text;}
-	-> VT_SQUARE_CHUNK[$sc.start,text]
-	;
-
-square_chunk_data[boolean isRecursive]
-	:	ls1=LEFT_SQUARE
-		{	if (!isRecursive) {
-				emit($ls1, DroolsEditorType.SYMBOL);
-			} else {
-				emit($ls1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}
-			(any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) { emit($any, DroolsEditorType.CODE_CHUNK); }| square_chunk_data[true] )* 
-		rs1=RIGHT_SQUARE
-		{	if (!isRecursive) {
-				emit($rs1, DroolsEditorType.SYMBOL);
-			} else {
-				emit($rs1, DroolsEditorType.CODE_CHUNK);
-			}	
-		}
-	;
-
-lock_on_active_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))}?=>  id1=ID mis1=MISC id2=ID mis2=MISC id3=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);
-		emit($mis2, DroolsEditorType.KEYWORD);
-		emit($id3, DroolsEditorType.KEYWORD);	}
-		->	VK_LOCK_ON_ACTIVE[$start, text]
-	;
-
-date_effective_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_DATE_EFFECTIVE[$start, text]
-	;
-
-date_expires_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_DATE_EXPIRES[$start, text]
-	;
-
-no_loop_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_NO_LOOP[$start, text]
-	;
-
-auto_focus_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_AUTO_FOCUS[$start, text]
-	;
-
-activation_group_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_ACTIVATION_GROUP[$start, text]
-	;
-
-agenda_group_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_AGENDA_GROUP[$start, text]
-	;
-
-ruleflow_group_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_RULEFLOW_GROUP[$start, text]
-	;
-
-entry_point_key
- at init{
-	String text = "";
-}	:	{(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
-	{	emit($id1, DroolsEditorType.KEYWORD);
-		emit($mis1, DroolsEditorType.KEYWORD);
-		emit($id2, DroolsEditorType.KEYWORD);	}
-		->	VK_ENTRY_POINT[$start, text]
-	;
-
-duration_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.DURATION))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_DURATION[$id]
-	;
-
-package_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_PACKAGE[$id]
-	;
-
-import_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.IMPORT))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_IMPORT[$id]
-	;
-
-dialect_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.DIALECT))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_DIALECT[$id]
-	;
-
-salience_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_SALIENCE[$id]
-	;
-
-enabled_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.ENABLED))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_ENABLED[$id]
-	;
-
-attributes_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_ATTRIBUTES[$id]
-	;
-
-rule_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.RULE))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_RULE[$id]
-	;
-
-extend_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.EXTEND))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_EXTEND[$id]
-	;
-
-template_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_TEMPLATE[$id]
-	;
-
-query_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.QUERY))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_QUERY[$id]
-	;
-
-declare_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.DECLARE))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_DECLARE[$id]
-	;
-
-function_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_FUNCTION[$id]
-	;
-
-global_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_GLOBAL[$id]
-	;
-
-eval_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.EVAL))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_EVAL[$id]
-	;
-
-not_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.NOT))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_NOT[$id]
-	;
-
-in_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.IN))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_IN[$id]
-	;
-
-or_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.OR))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_OR[$id]
-	;
-
-and_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.AND))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_AND[$id]
-	;
-
-exists_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.EXISTS))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_EXISTS[$id]
-	;
-
-forall_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.FORALL))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_FORALL[$id]
-	;
-
-action_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTION))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_ACTION[$id]
-	;
-
-reverse_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.REVERSE))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_REVERSE[$id]
-	;
-
-result_key
-	:	{(validateIdentifierKey(DroolsSoftKeywords.RESULT))}?=>  id=ID
-	{	emit($id, DroolsEditorType.KEYWORD);	}
-		->	VK_RESULT[$id]
-	;
-
-
-WS      :       (	' '
-                |	'\t'
-                |	'\f'
-                |	EOL
-                )+
-                { $channel=HIDDEN; }
-        ;
-
-fragment
-EOL 	:	     
-   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
-                |       '\r'    // Macintosh
-                |       '\n'    // Unix (the right way)
-                )
-        ;
-        
-INT	
-	:	('-')?('0'..'9')+
-		;
-
-FLOAT
-	:	('-')?('0'..'9')+ '.' ('0'..'9')+
-	;
-
-STRING
-    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
-     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
-    ;
-
-fragment
-HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
-
-fragment
-EscapeSequence
-    :   '\\' ('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
-    ;
-
-fragment
-OctalEscape
-    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7') ('0'..'7')
-    |   '\\' ('0'..'7')
-    ;
-
-fragment
-UnicodeEscape
-    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
-    ;
-
-BOOL
-	:	('true'|'false') 
-	;	
-
-ACCUMULATE
-	:	'accumulate'
-	;
-
-COLLECT
-	:	'collect'
-	;
-
-END	:	'end'
-	;
-
-FROM
-	:	'from'
-	;
-
-INIT
-	:	'init'
-	;
-
-NULL	
-	:	'null'
-	;
-
-OVER
-	:	'over'
-	;
-
-THEN
-	:	'then'
-	;
-
-WHEN
-	:	'when'
-	;
-
-GRAVE_ACCENT
-	:	'`'
-	;
-
-AT	:	'@'
-	;
-
-EQUALS
-	:	'='
-	;
-
-SEMICOLON
-	:	';'
-	;
-
-DOT_STAR
-	:	'.*'
-	;
-
-COLON
-	:	':'
-	;
-
-EQUAL
-	:	'=='
-	;
-
-NOT_EQUAL
-	:	'!='
-	;
-
-GREATER
-	:	'>'
-	;
-
-GREATER_EQUAL
-	:	'>='
-	;
-
-LESS
-	:	'<'
-	;
-
-LESS_EQUAL
-	:	'<='
-	;
-
-ARROW
-	:	'->'
-	;
-
-ID	
-	:	('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')+ '%'
-	{	state.text = $text.substring(1, $text.length() - 1);	}
-	;
-
-LEFT_PAREN
-        :	'('
-        ;
-
-RIGHT_PAREN
-        :	')'
-        ;
-        
-LEFT_SQUARE
-        :	'['
-        ;
-
-RIGHT_SQUARE
-        :	']'
-        ;        
-
-LEFT_CURLY
-        :	'{'
-        ;
-
-RIGHT_CURLY
-        :	'}'
-        ;
-        
-COMMA	:	','
-	;
-	
-DOT	:	'.'
-	;	
-	
-DOUBLE_AMPER
-	:	'&&'
-	;
-	
-DOUBLE_PIPE
-	:	'||'
-	;
-
-SH_STYLE_SINGLE_LINE_COMMENT	
-	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
-                { $channel=HIDDEN; setText("//"+getText().substring(1));}
-	;
-        
-        
-C_STYLE_SINGLE_LINE_COMMENT	
-	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
-                { $channel=HIDDEN; }
-	;
-
-MULTI_LINE_COMMENT
-	:	'/*' (options{greedy=false;} : .)* '*/'
-                { $channel=HIDDEN; }
-	;
-
-MISC 	:
-		'!' | '$' | '%' | '^' | '*' | '_' | '-' | '+'  | '?' | '/' | '\'' | '\\' | '|' | '&'
-	;
+grammar DRL;
+
+options {
+	output=AST;
+}
+
+tokens {
+	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_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;
+
+	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_EXISTS;
+	VK_FORALL;
+	VK_ACTION;
+	VK_REVERSE;
+	VK_RESULT;
+	VK_OPERATOR;
+	VK_END;
+	VK_INIT;
+}
+
+ at parser::header {
+	package org.drools.lang;
+	
+	import java.util.List;
+	import java.util.LinkedList;
+	import org.drools.compiler.DroolsParserException;
+}
+
+ at lexer::header {
+	package org.drools.lang;
+
+	import org.drools.compiler.DroolsParserException;
+}
+
+
+ at lexer::members {
+	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(null, null);
+
+	/** The standard method called to automatically emit a token at the
+	 *  outermost lexical rule.  The token object should point into the
+	 *  char buffer start..stop.  If there is a text override in 'text',
+	 *  use that to set the token's text.  Override this method to emit
+	 *  custom Token objects.
+	 */
+	public Token emit() {
+		Token t = new DroolsToken(input, state.type, state.channel, state.tokenStartCharIndex, getCharIndex()-1);
+		t.setLine(state.tokenStartLine);
+		t.setText(state.text);
+		t.setCharPositionInLine(state.tokenStartCharPositionInLine);
+		emit(t);
+		return t;
+	}
+
+	public void reportError(RecognitionException ex) {
+		errors.add(errorMessageFactory.createDroolsException(ex));
+	}
+
+	/** return the raw DroolsParserException errors */
+	public List<DroolsParserException> getErrors() {
+		return errors;
+	}
+
+	/** Overrided this method to not output mesages */
+	public void emitErrorMessage(String msg) {
+	}
+}
+
+ at parser::members {
+	private Stack<Map<DroolsParaphraseTypes, String>> paraphrases = new Stack<Map<DroolsParaphraseTypes, String>>();
+	private List<DroolsParserException> errors = new ArrayList<DroolsParserException>();
+	private DroolsParserExceptionFactory errorMessageFactory = new DroolsParserExceptionFactory(tokenNames, paraphrases);
+	private String source = "unknown";
+	private boolean lookaheadTest = false;
+	private LinkedList<DroolsSentence> editorInterface = null;
+	private boolean isEditorInterfaceEnabled = false;
+
+	public LinkedList<DroolsSentence> getEditorInterface(){
+		return editorInterface;
+	}
+
+	public void enableEditorInterface(){
+		isEditorInterfaceEnabled = true;
+	}
+
+	public void disableEditorInterface(){
+		isEditorInterfaceEnabled = false;
+	}
+
+	private void beginSentence(DroolsSentenceType sentenceType){
+		if (isEditorInterfaceEnabled) {
+			if (null == editorInterface) {
+				editorInterface = new LinkedList<DroolsSentence>();
+			}
+			DroolsSentence sentence = new DroolsSentence();
+			sentence.setType(sentenceType);
+			editorInterface.add(sentence);
+		}
+	}
+
+	private DroolsSentence getActiveSentence(){
+		return editorInterface.getLast();
+	}
+
+	private void emit(List tokens, DroolsEditorType editorType){
+		if (isEditorInterfaceEnabled && tokens != null) {		
+			for (Object activeObject : tokens){
+				emit((Token) activeObject, editorType);
+			}
+		}
+	}
+
+	private void emit(Token token, DroolsEditorType editorType){
+		if (isEditorInterfaceEnabled && token != null) {
+			((DroolsToken)token).setEditorType(editorType);
+			getActiveSentence().addContent((DroolsToken) token);
+		}
+	}
+
+	private void emit(boolean forceEmit, int activeContext){
+		if (isEditorInterfaceEnabled) {
+				getActiveSentence().addContent(activeContext);
+		}
+	}
+	
+	private void emit(int activeContext){
+		if (isEditorInterfaceEnabled) {
+			emit(false, activeContext);
+		}
+	}
+
+	private DroolsToken getLastTokenOnList(LinkedList list){
+		DroolsToken lastToken = null;
+		for (Object object : list) {
+			if (object instanceof DroolsToken) {
+				lastToken = (DroolsToken) object;
+			}
+		}
+		return lastToken;
+	}
+
+	private int getLastIntegerValue(LinkedList list) {
+		int lastIntergerValue = -1;
+		for (Object object : list) {
+			if (object instanceof Integer) {
+				lastIntergerValue = (Integer) object;
+			}
+		}
+		return lastIntergerValue;
+	}
+
+	private String retrieveLT(int LTNumber) {
+      		if (null == input)
+			return null;
+		if (null == input.LT(LTNumber))
+			return null;
+		if (null == input.LT(LTNumber).getText())
+			return null;
+	
+		return input.LT(LTNumber).getText();
+	}
+
+	private boolean validateLT(int LTNumber, String text) {
+		String text2Validate = retrieveLT( LTNumber );
+		return text2Validate == null ? false : text2Validate.equalsIgnoreCase(text);
+	}
+	
+	private boolean isPluggableEvaluator( int offset, boolean negated ) {
+		String text2Validate = retrieveLT( offset );
+	        return text2Validate == null ? false : DroolsSoftKeywords.isOperator( text2Validate, negated );
+	}
+	
+	private boolean isPluggableEvaluator( boolean negated ) {
+	        return isPluggableEvaluator( 1, negated );
+	}
+	
+	private boolean validateIdentifierKey(String text) {
+		return validateLT(1, text);
+	}
+	
+	void checkTrailingSemicolon(String text, Token token) {
+		if (text.trim().endsWith(";")) {
+			errors.add(errorMessageFactory
+					.createTrailingSemicolonException(((DroolsToken) token)
+							.getLine(), ((DroolsToken) token)
+							.getCharPositionInLine(), ((DroolsToken) token)
+							.getStopIndex()));
+		}
+	}
+	
+	private boolean validateNotWithBinding(){
+		if (input.LA(1) == ID && input.LA(2) == ID && input.LA(3) == COLON){
+			return true;
+		}
+		return false;
+	}
+
+	private boolean validateRestr() {
+		int lookahead = 2;
+		int countParen = 1;
+
+		while (true) {
+			if (input.LA(lookahead) == COMMA) {
+				break;
+			} else if (input.LA(lookahead) == LEFT_PAREN) {
+				countParen++;
+			} else if (input.LA(lookahead) == RIGHT_PAREN) {
+				countParen--;
+			} else if (input.LA(lookahead) == EOF) {
+				break;
+			}
+			if (countParen == 0){
+				break;
+			}
+			lookahead++;
+		}
+		
+		boolean returnValue = false;
+		int activeIndex = input.index();
+		lookaheadTest = true;
+		try {
+			input.seek(input.LT(2).getTokenIndex());
+			constraint_expression();
+			returnValue = true;
+		} catch (RecognitionException e) {
+		} finally{
+			input.seek(activeIndex);
+		}
+		lookaheadTest = false;
+
+		return returnValue;
+	}
+	
+	private String safeSubstring(String text, int start, int end) {
+		return text.substring(Math.min(start, text.length()), Math.min(Math
+				.max(start, end), text.length()));
+	}
+	
+	public void reportError(RecognitionException ex) {
+		// if we've already reported an error and have not matched a token
+		// yet successfully, don't report any errors.
+		if (state.errorRecovery) {
+			return;
+		}
+		state.errorRecovery = true;
+	
+		errors.add(errorMessageFactory.createDroolsException(ex));
+	}
+	
+	/** return the raw DroolsParserException errors */
+	public List<DroolsParserException> getErrors() {
+		return errors;
+	}
+	
+	/** Return a list of pretty strings summarising the errors */
+	public List<String> getErrorMessages() {
+		List<String> messages = new ArrayList<String>(errors.size());
+	
+		for (DroolsParserException activeException : errors) {
+			messages.add(activeException.getMessage());
+		}
+	
+		return messages;
+	}
+	
+	/** return true if any parser errors were accumulated */
+	public boolean hasErrors() {
+		return !errors.isEmpty();
+	}
+
+	/**
+	 * Method that adds a paraphrase type into paraphrases stack.
+	 * 
+	 * @param type
+	 *            paraphrase type
+	 */
+	private void pushParaphrases(DroolsParaphraseTypes type) {
+		Map<DroolsParaphraseTypes, String> activeMap = new HashMap<DroolsParaphraseTypes, String>();
+		activeMap.put(type, "");
+		paraphrases.push(activeMap);
+	}
+
+	/**
+	 * Method that sets paraphrase value for a type into paraphrases stack.
+	 * 
+	 * @param type
+	 *            paraphrase type
+	 * @param value
+	 *            paraphrase value
+	 */
+	private void setParaphrasesValue(DroolsParaphraseTypes type, String value) {
+		paraphrases.peek().put(type, value);
+	}
+
+	/**
+	 * Helper method that creates a string from a token list.
+	 * 
+	 * @param tokenList
+	 *            token list
+	 * @return string
+	 */
+	private String buildStringFromTokens(List<Token> tokenList) {
+		StringBuilder sb = new StringBuilder();
+		if (null != tokenList) {
+			for (Token activeToken : tokenList) {
+				if (null != activeToken) {
+					sb.append(activeToken.getText());
+				}
+			}
+		}
+		return sb.toString();
+	}
+	
+	/** Overrided this method to not output mesages */
+	public void emitErrorMessage(String msg) {
+	}
+}
+
+compilation_unit
+	:	package_statement?
+		statement*
+		EOF
+		-> ^(VT_COMPILATION_UNIT package_statement? statement*) 
+	;
+	catch [ RecognitionException e ] {
+		reportError( e );
+	}
+	catch [ RewriteEmptyStreamException e ] {
+	}
+finally {
+	if (isEditorInterfaceEnabled && retval.tree == null) {
+		retval.tree = root_0;
+		root_0 = (Object) adaptor.nil();
+		Object root_1 = (Object) adaptor.nil();
+		root_1 = (Object) adaptor.becomeRoot(adaptor.create(
+				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), root_1);
+		if (stream_package_statement.hasNext()) {
+			adaptor.addChild(root_1, stream_package_statement.nextTree());
+		}
+		while (stream_statement.hasNext()) {
+			adaptor.addChild(root_1, stream_statement.nextTree());
+		}
+		adaptor.addChild(root_0, root_1);
+		retval.stop = input.LT(-1);
+		retval.tree = (Object) adaptor.rulePostProcessing(root_0);
+		adaptor.setTokenBoundaries(retval.tree, retval.start,
+				retval.stop);
+	}
+	if (isEditorInterfaceEnabled && hasErrors()) {
+		Tree rootNode = (Tree) adaptor.becomeRoot(adaptor.create(
+				VT_COMPILATION_UNIT, "VT_COMPILATION_UNIT"), adaptor.nil());
+		for (int i = 0; i < ((Tree)retval.tree).getChildCount(); i++) {
+			Tree childNode = (Tree) ((Tree)retval.tree).getChild(i);
+			if (!(childNode instanceof CommonErrorNode)) {
+				rootNode.addChild(childNode);
+			}
+		}
+		retval.tree = rootNode; 
+	}
+}
+
+package_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.PACKAGE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.PACKAGE); }
+ at after { paraphrases.pop(); }
+	:	package_key
+		package_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(package_key package_id)
+	;
+
+package_id
+	:	id+=ID ( id+=DOT id+=ID )*
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.PACKAGE, buildStringFromTokens($id));	}
+		-> ^(VT_PACKAGE_ID ID+)
+	;
+
+statement
+options{
+k = 2;
+}	:	rule_attribute
+	|{(validateLT(1, "import") && validateLT(2, "function") )}?=> function_import_statement 
+	|	import_statement 
+	|	global 
+	|	function
+	|	{(validateLT(1, DroolsSoftKeywords.TEMPLATE))}?=> template
+	|	{(validateLT(1, DroolsSoftKeywords.DECLARE))}?=> type_declaration
+	|	rule
+	|	query
+	;
+
+import_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.IMPORT_STATEMENT);  }
+ at after { paraphrases.pop(); }
+	:	import_key import_name[DroolsParaphraseTypes.IMPORT] SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(import_key import_name)
+	;
+
+function_import_statement
+ at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION_IMPORT); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION_IMPORT_STATEMENT); }
+ at after { paraphrases.pop(); }
+	:	imp=import_key function_key import_name[DroolsParaphraseTypes.FUNCTION_IMPORT] SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}		
+		-> ^(VT_FUNCTION_IMPORT[$imp.start] function_key import_name)
+	;
+
+import_name [DroolsParaphraseTypes importType]
+	:	id+=ID ( id+=DOT id+=ID )* id+=DOT_STAR?
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue($importType, buildStringFromTokens($id));	}
+		-> ^(VT_IMPORT_ID ID+ DOT_STAR?)
+	;
+
+global
+ at init  { pushParaphrases(DroolsParaphraseTypes.GLOBAL);  if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.GLOBAL); }
+ at after { paraphrases.pop(); }
+	:	global_key data_type global_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(global_key data_type global_id)
+	;
+
+global_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.GLOBAL, $id.text);	}
+		-> VT_GLOBAL_ID[$id]
+	;
+
+function
+ at init  { pushParaphrases(DroolsParaphraseTypes.FUNCTION); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.FUNCTION);  }
+ at after { paraphrases.pop(); }
+	:	function_key data_type? function_id parameters curly_chunk
+		-> ^(function_key data_type? function_id parameters curly_chunk)
+	;
+
+function_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.FUNCTION, $id.text);	}
+		-> VT_FUNCTION_ID[$id]
+	;
+
+query
+ at init  { pushParaphrases(DroolsParaphraseTypes.QUERY); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.QUERY); }
+ at after { paraphrases.pop(); }
+	:	query_key query_id 
+	{	emit(Location.LOCATION_RULE_HEADER);	}
+		parameters? 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		normal_lhs_block 
+		end=end_key SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(query_key query_id parameters? normal_lhs_block end_key)
+	;
+
+query_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.QUERY, $id.text);	} -> VT_QUERY_ID[$id]
+	;
+
+parameters
+	:	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			( param_definition (COMMA {	emit($COMMA, DroolsEditorType.SYMBOL);	} param_definition)* )?
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		-> ^(VT_PARAM_LIST param_definition* RIGHT_PAREN)
+	;
+
+param_definition
+	:	data_type? argument
+	;
+
+argument
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		dimension_definition*
+	;
+
+type_declaration
+ at init  { pushParaphrases(DroolsParaphraseTypes.TYPE_DECLARE); if ( state.backtracking==0 ) beginSentence(DroolsSentenceType.TYPE_DECLARATION); }
+ at after { paraphrases.pop(); }
+	:	declare_key  type_declare_id
+		decl_metadata*
+		decl_field*
+		end_key
+		-> ^(declare_key type_declare_id decl_metadata* decl_field* end_key)
+	;
+
+type_declare_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TYPE_DECLARE, $id.text);	} -> VT_TYPE_DECLARE_ID[$id]
+	;
+
+decl_metadata
+	:	AT 
+	{	emit($AT, DroolsEditorType.SYMBOL);	}
+		ID
+	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		paren_chunk
+		-> ^(AT ID paren_chunk)
+	;
+
+decl_field
+	:	ID	{	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		decl_field_initialization? 
+		COLON	{	emit($COLON, DroolsEditorType.SYMBOL);	}
+		data_type
+		decl_metadata*
+		-> ^(ID decl_field_initialization? data_type decl_metadata*)
+	;
+
+decl_field_initialization
+	:	EQUALS	{	emit($EQUALS, DroolsEditorType.SYMBOL);	}
+		paren_chunk
+	-> ^(EQUALS paren_chunk)
+	;
+
+template
+ at init  { pushParaphrases(DroolsParaphraseTypes.TEMPLATE); }
+ at after { paraphrases.pop(); }
+	:	
+	{	beginSentence(DroolsSentenceType.TEMPLATE);	}
+		template_key template_id 
+		semi1=SEMICOLON?
+	{	emit($semi1, DroolsEditorType.SYMBOL);	}
+		template_slot+
+		end=end_key semi2=SEMICOLON?
+	{	emit($semi2, DroolsEditorType.SYMBOL);	}
+		-> ^(template_key template_id template_slot+ end_key)
+	;
+
+template_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.TEMPLATE, $id.text);	} -> VT_TEMPLATE_ID[$id]
+	;
+
+template_slot
+	:	 data_type slot_id SEMICOLON?
+	{	emit($SEMICOLON, DroolsEditorType.SYMBOL);	}
+		-> ^(VT_SLOT data_type slot_id)
+	;
+
+slot_id
+	:	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);	}
+		-> VT_SLOT_ID[$id]
+	;
+
+rule
+ at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE); }
+ at after { paraphrases.pop(); isFailed = false; }
+	:
+	{	beginSentence(DroolsSentenceType.RULE);	}
+		rule_key rule_id 
+	{	emit(Location.LOCATION_RULE_HEADER);	}
+		(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)
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailed) {
+		if (input.LA(6) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+			input.LA(5) == MISC && input.LA(6) == ID && 
+			validateLT(1, DroolsSoftKeywords.LOCK) && validateLT(3, DroolsSoftKeywords.ON) &&
+			validateLT(5, DroolsSoftKeywords.ACTIVE)){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.KEYWORD);
+			emit(input.LT(3), DroolsEditorType.KEYWORD);
+			emit(input.LT(4), DroolsEditorType.KEYWORD);
+			emit(input.LT(5), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+			input.consume();
+			input.consume();
+			input.consume();
+			input.consume();
+		} else if (input.LA(4) == EOF && input.LA(1) == ID && input.LA(2) == MISC && input.LA(3) == ID && 
+			(	(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EXPIRES)) ||
+				(validateLT(1, DroolsSoftKeywords.NO) && validateLT(3, DroolsSoftKeywords.LOOP)) ||
+				(validateLT(1, DroolsSoftKeywords.DATE) && validateLT(3, DroolsSoftKeywords.EFFECTIVE)) ||
+				(validateLT(1, DroolsSoftKeywords.AUTO) && validateLT(3, DroolsSoftKeywords.FOCUS)) ||
+				(validateLT(1, DroolsSoftKeywords.ACTIVATION) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.RULEFLOW) && validateLT(3, DroolsSoftKeywords.GROUP)) ||
+				(validateLT(1, DroolsSoftKeywords.AGENDA) && validateLT(3, DroolsSoftKeywords.GROUP))	)){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.KEYWORD);
+			emit(input.LT(3), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+			input.consume();
+			input.consume();
+		} else if (input.LA(2) == EOF && input.LA(1) == ID && 
+				(validateLT(1, DroolsSoftKeywords.DIALECT) || validateLT(1, DroolsSoftKeywords.ENABLED) ||
+				 validateLT(1, DroolsSoftKeywords.SALIENCE) || validateLT(1, DroolsSoftKeywords.DURATION))){
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RULE_HEADER_KEYWORD);
+			input.consume();
+		}
+	}
+}
+
+when_part
+	: 	WHEN {	emit($WHEN, DroolsEditorType.KEYWORD);	}
+		COLON? {	emit($COLON, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		normal_lhs_block
+	->	WHEN normal_lhs_block
+	;
+
+rule_id
+	: 	id=ID
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
+	| 	id=STRING
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.RULE, $id.text);	} -> VT_RULE_ID[$id]
+	;
+
+rule_attributes
+	:	( attributes_key COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} )? 
+		rule_attribute ( COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} attr=rule_attribute )*
+		-> ^(VT_RULE_ATTRIBUTES attributes_key? rule_attribute+)
+	;
+
+rule_attribute
+ at init  { boolean isFailed = true; pushParaphrases(DroolsParaphraseTypes.RULE_ATTRIBUTE); }
+ at after { paraphrases.pop(); isFailed = false; if (!(retval.tree instanceof CommonErrorNode)) emit(Location.LOCATION_RULE_HEADER); }
+	:	salience 
+	|	no_loop
+	|	agenda_group  
+	|	duration  
+	|	activation_group 
+	|	auto_focus 
+	|	date_effective 
+	|	date_expires 
+	|	enabled 
+	|	ruleflow_group 
+	|	lock_on_active
+	|	dialect 
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailed) {
+		if (input.LA(2) == EOF && input.LA(1) == ID){
+			emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+			input.consume();
+		}
+	}
+}
+date_effective
+	:	date_effective_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+date_expires
+	:	date_expires_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+	
+enabled
+	:	enabled_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
+	    ( BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	    | paren_chunk 
+	    )
+	;	
+
+salience
+	:	salience_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	}
+		( INT 	{	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
+		| paren_chunk
+		)
+	;
+
+no_loop
+	:	no_loop_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;
+
+auto_focus
+	:	auto_focus_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;	
+	
+activation_group
+	:	activation_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+ruleflow_group
+	:	ruleflow_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+agenda_group
+	:	agenda_group_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;
+
+duration
+	:	duration_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} 
+	    ( INT {	emit($INT, DroolsEditorType.NUMERIC_CONST );	}
+	    | paren_chunk
+	    )
+	;	
+	
+dialect
+	:	dialect_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} STRING
+	{	emit($STRING, DroolsEditorType.STRING_CONST );	}
+	;			
+	
+lock_on_active
+	:	lock_on_active_key^ {	emit(Location.LOCATION_RULE_HEADER_KEYWORD);	} BOOL?
+	{	emit($BOOL, DroolsEditorType.BOOLEAN_CONST );	}
+	;
+
+normal_lhs_block
+	:	lhs*
+	->	^(VT_AND_IMPLICIT lhs*)
+	;
+
+lhs	:	lhs_or
+	;
+
+lhs_or
+ at init{
+	Token orToken = null;
+}	:	(LEFT_PAREN or_key)=> 
+		LEFT_PAREN  {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			or=or_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+			lhs_and+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} // PREFIX 
+		-> ^(VT_OR_PREFIX[$or.start] lhs_and+ RIGHT_PAREN)
+	|	(lhs_and -> lhs_and) 
+		( (or_key|DOUBLE_PIPE)=> (value=or_key {orToken = $value.start;} |pipe=DOUBLE_PIPE {orToken = $pipe; emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);}) 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+		lhs_and 
+		-> ^(VT_OR_INFIX[orToken] $lhs_or lhs_and))*
+	;
+
+lhs_and
+ at init{
+	Token andToken = null;
+}	:	(LEFT_PAREN and_key)=> 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			and=and_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+			lhs_unary+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}  // PREFIX
+		-> ^(VT_AND_PREFIX[$and.start] lhs_unary+ RIGHT_PAREN)
+	|	(lhs_unary -> lhs_unary) 
+		( (and_key|DOUBLE_AMPER)=> (value=and_key {andToken = $value.start;} |amper=DOUBLE_AMPER {andToken = $amper; emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);}) 
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_AND_OR);	}
+		lhs_unary 
+		-> ^(VT_AND_INFIX[andToken] $lhs_and lhs_unary) )*
+	;
+
+lhs_unary
+	:	(	lhs_exist
+		|{validateNotWithBinding()}?=>	lhs_not_binding
+		|	lhs_not
+		|	lhs_eval
+		|	lhs_forall
+		|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	}  
+				lhs_or 
+			RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		|	pattern_source
+		)
+		((SEMICOLON)=> SEMICOLON! {	emit($SEMICOLON, DroolsEditorType.SYMBOL);	})?
+	;
+
+lhs_exist
+	:	exists_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_EXISTS);	}
+	        ( (LEFT_PAREN (or_key|and_key))=> lhs_or //prevent "((" 
+		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			lhs_or 
+		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	        | lhs_pattern
+	        )
+	        -> ^(exists_key lhs_or? lhs_pattern? RIGHT_PAREN?)
+	;
+
+lhs_not_binding
+	:	not_key fact_binding
+	-> ^(not_key ^(VT_PATTERN fact_binding))
+	;
+
+lhs_not	:	not_key
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION_NOT);	}
+		( (LEFT_PAREN (or_key|and_key))=> {	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} lhs_or //prevent "((" 
+		|	LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL); emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION );	} 
+				lhs_or 
+			RIGHT_PAREN  {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		| 	lhs_pattern )
+	        -> ^(not_key lhs_or? lhs_pattern? RIGHT_PAREN?)
+	;
+
+lhs_eval
+	:	ev=eval_key
+	{	emit(Location.LOCATION_LHS_INSIDE_EVAL);	}
+		pc=paren_chunk
+	{	if (((DroolsTree) $pc.tree).getText() != null){
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	            		
+		}
+	}
+	{	String body = safeSubstring( $pc.text, 1, $pc.text.length()-1 );
+		checkTrailingSemicolon( body, $ev.start );	}
+		-> ^(eval_key paren_chunk)
+	;
+
+lhs_forall
+	:	forall_key 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			lhs_pattern+ 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+		-> ^(forall_key lhs_pattern+ RIGHT_PAREN)
+	;
+
+pattern_source
+ at init { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	lhs_pattern
+		over_clause?
+		(
+			FROM^
+		{	emit($FROM, DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_LHS_FROM);	}
+		        (  accumulate_statement
+		          | collect_statement 
+		          | entrypoint_statement
+		          | from_source
+		        )
+		)?
+	;
+finally {
+	if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ACCUMULATE) {
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_FROM_ACCUMULATE);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == COLLECT) {
+			emit(input.LT(1), DroolsEditorType.KEYWORD);
+			emit(input.LT(2), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_FROM_COLLECT);
+	}
+}
+
+over_clause
+	:	OVER^ {	emit($OVER, DroolsEditorType.KEYWORD);	} over_elements 
+			(COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} over_elements)*
+	;
+
+over_elements
+	:	id1=ID {	emit($id1, DroolsEditorType.IDENTIFIER);	} 
+		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
+		id2=ID {	emit($id2, DroolsEditorType.IDENTIFIER);	} 
+		paren_chunk
+	-> ^(VT_BEHAVIOR $id1 $id2 paren_chunk)
+	;
+
+accumulate_statement
+	:	ACCUMULATE {	emit($ACCUMULATE, DroolsEditorType.KEYWORD);	}
+	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE);	}
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			lhs_or 
+		COMMA? {	emit($COMMA, DroolsEditorType.SYMBOL);	} 
+		(	accumulate_init_clause
+		|	accumulate_id_clause
+		)
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+		-> ^(ACCUMULATE lhs_or accumulate_init_clause? accumulate_id_clause? RIGHT_PAREN)
+	;
+
+
+accumulate_init_clause
+ at init  { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	init_key 
+	{	emit(Location.LOCATION_LHS_FROM_ACCUMULATE_INIT);	}
+		pc1=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_INIT_INSIDE] cm1=COMMA? {	emit($cm1, DroolsEditorType.SYMBOL);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION);	}
+		action_key pc2=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_ACTION_INSIDE] cm2=COMMA? {	emit($cm2, DroolsEditorType.SYMBOL);	} 
+	{	if (pc1 != null && ((DroolsTree) pc1.getTree()).getText() != null && pc2 != null && ((DroolsTree) pc2.getTree()).getText() != null ) emit(Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE);	}
+	(	reverse_key pc3=accumulate_paren_chunk[Location.LOCATION_LHS_FROM_ACCUMULATE_REVERSE_INSIDE] cm3=COMMA? {	emit($cm3, DroolsEditorType.SYMBOL);	} )?
+
+	{	if ((pc1 != null && ((DroolsTree) pc1.tree).getText() != null) &&
+            			(pc2 != null && ((DroolsTree) pc2.tree).getText() != null) &&
+            			(pc3 != null && ((DroolsTree) pc3.tree).getText() != null)) {
+			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT);
+		}	
+	}
+		res1=result_key {	emit($res1.start, DroolsEditorType.KEYWORD);	} 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))
+	;
+finally { 
+	if (isEditorInterfaceEnabled && isFailed && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.RESULT)) {
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		input.consume();
+		if (input.LA(1) == LEFT_PAREN){
+			input.consume();
+			emit(Location.LOCATION_LHS_FROM_ACCUMULATE_RESULT_INSIDE);
+		}
+	}
+}
+
+accumulate_paren_chunk[int locationType]
+ at init{
+	String text = "";
+}	:	pc=accumulate_paren_chunk_data[false,$locationType] {text = $pc.text;} 
+	-> VT_PAREN_CHUNK[$pc.start,text]
+	;
+
+accumulate_paren_chunk_data[boolean isRecursive, int locationType]
+	:	lp1=LEFT_PAREN
+		{	if (!isRecursive) {
+				emit($lp1, DroolsEditorType.SYMBOL);
+				emit($locationType);
+			} else {
+				emit($lp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | accumulate_paren_chunk_data[true,-1] )* 
+		rp1=RIGHT_PAREN
+		{	if (!isRecursive) {
+				emit($rp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+accumulate_id_clause
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		paren_chunk
+	-> ^(VT_ACCUMULATE_ID_CLAUSE ID paren_chunk)
+	;
+
+collect_statement
+	:	COLLECT {	emit($COLLECT, DroolsEditorType.KEYWORD);	}
+	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			pattern_source 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+	-> ^(COLLECT pattern_source RIGHT_PAREN)
+	;
+
+entrypoint_statement
+	:	entry_point_key 
+	{	emit(Location.LOCATION_LHS_FROM_COLLECT);	}
+		entrypoint_id
+	{	emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);	}
+	-> ^(entry_point_key entrypoint_id)
+	;
+
+entrypoint_id
+	: 	value=ID {	emit($value, DroolsEditorType.IDENTIFIER);	}
+		-> VT_ENTRYPOINT_ID[$value]
+	| 	value=STRING {	emit($value, DroolsEditorType.IDENTIFIER);	}
+		-> VT_ENTRYPOINT_ID[$value]
+	;
+
+from_source
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		( (LEFT_PAREN)=> args=paren_chunk )?
+		expression_chain?
+	{	if ( input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS) {
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		} else if ( input.LA(1) != EOF ) {
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		}	}
+	->	^(VT_FROM_SOURCE ID paren_chunk? expression_chain?)
+	;
+	
+expression_chain
+	:
+	 DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} 
+	 ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+	  (
+	    {input.LA(1) == LEFT_PAREN}? paren_chunk
+	    |
+	    square_chunk
+	  )?
+	  expression_chain?
+	  -> ^(VT_EXPRESSION_CHAIN[$DOT] ID square_chunk? paren_chunk? expression_chain?)
+	;
+
+lhs_pattern
+	:	fact_binding -> ^(VT_PATTERN fact_binding)
+	|	fact -> ^(VT_PATTERN fact)
+	;
+
+fact_binding
+ 	:	label
+		( fact
+ 		| LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+ 			fact_binding_expression 
+ 		  RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+ 		)
+ 	-> ^(VT_FACT_BINDING label fact? fact_binding_expression? RIGHT_PAREN?)
+	;
+
+fact_binding_expression
+ at init{
+	Token orToken = null;
+}	:	(fact -> fact) ( (value=or_key {orToken = $value.start;}|pipe=DOUBLE_PIPE {orToken = $pipe;}) fact 
+		-> ^(VT_FACT_OR[orToken] $fact_binding_expression fact) )*
+	;
+
+fact
+ at init  { boolean isFailedOnConstraints = true; pushParaphrases(DroolsParaphraseTypes.PATTERN); }
+ at after { paraphrases.pop();	}
+	:	pattern_type 
+		LEFT_PAREN {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	}
+			constraints? 
+		RIGHT_PAREN {	isFailedOnConstraints = false;	}
+	{	if ($RIGHT_PAREN.text.equals(")") ){ //WORKAROUND FOR ANTLR BUG!
+			emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);
+			emit(Location.LOCATION_LHS_BEGIN_OF_CONDITION);
+		}	}
+	->	^(VT_FACT pattern_type constraints? RIGHT_PAREN)
+	;
+finally {
+	if (isEditorInterfaceEnabled && isFailedOnConstraints && input.LA(1) == EOF && input.get(input.index() - 1).getType() == WS){
+		if (!(getActiveSentence().getContent().getLast() instanceof Integer) && input.LA(-1) != COLON) {
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		}
+	}
+}
+
+constraints
+	:	constraint ( COMMA! 
+	{	emit($COMMA, DroolsEditorType.SYMBOL);
+		emit(Location.LOCATION_LHS_INSIDE_CONDITION_START);	} constraint )*
+	;
+
+constraint
+	:	or_constr
+	;
+
+or_constr
+	:	and_constr ( DOUBLE_PIPE^ 
+	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	} and_constr )* 
+	;
+
+and_constr
+	:	unary_constr ( DOUBLE_AMPER^ 
+	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);;	} unary_constr )*
+	;
+
+unary_constr
+options { k=2; }
+ at init { boolean isFailed = true;	}
+ at after { isFailed = false;	}
+	:	eval_key^ paren_chunk
+	|	field_constraint
+	| 	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}  
+			or_constr 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && isFailed && input.LA(2) == EOF && input.LA(1) == ID) {
+		emit(input.LT(1), DroolsEditorType.IDENTIFIER);
+		input.consume();
+		if (input.get(input.index() - 1).getType() == WS)
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+	}
+}
+
+field_constraint
+ at init{
+	boolean isArrow = false;
+}	:	label accessor_path 
+		( or_restr_connective | arw=ARROW {	emit($ARROW, DroolsEditorType.SYMBOL);	} paren_chunk {isArrow = true;})?
+		-> {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)
+	;
+
+label
+	:	value=ID {	emit($ID, DroolsEditorType.IDENTIFIER_VARIABLE);	} 
+		COLON {	emit($COLON, DroolsEditorType.SYMBOL);	} 
+		-> VT_LABEL[$value]
+	;
+
+or_restr_connective
+	:	and_restr_connective ({(validateRestr())}?=> DOUBLE_PIPE^ 
+	{	emit($DOUBLE_PIPE, DroolsEditorType.SYMBOL);	}  and_restr_connective )* 
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+and_restr_connective
+	:	constraint_expression ({(validateRestr())}?=> DOUBLE_AMPER^ 
+	{	emit($DOUBLE_AMPER, DroolsEditorType.SYMBOL);	} constraint_expression )*
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+
+constraint_expression
+options{
+k=3;
+}	:	compound_operator
+	|	simple_operator
+	|	LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	} 
+			or_restr_connective 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	} 
+	;
+catch [ RecognitionException re ] {
+	if (!lookaheadTest){
+        reportError(re);
+        recover(input,re);
+    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+	} else {
+		throw re;
+	}
+}
+finally {
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == ID) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID && 
+				input.LA(2) == ID && validateLT(1, DroolsSoftKeywords.NOT)) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.KEYWORD);
+		input.consume();
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF  && input.LA(1) == ID && validateLT(1, DroolsSoftKeywords.IN)) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.SYMBOL);
+		input.consume();
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);
+	} else if (isEditorInterfaceEnabled && input.LA(3) == EOF && input.LA(1) == ID) {
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		emit(input.LT(1), DroolsEditorType.KEYWORD);
+		emit(input.LT(2), DroolsEditorType.IDENTIFIER);
+		input.consume();
+		input.consume();
+		if (input.get(input.index() - 1).getType() == WS){
+			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_END);
+		}
+	}
+}
+
+simple_operator
+ at init {if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);}
+	:	
+	(
+		EQUAL^ {	emit($EQUAL, DroolsEditorType.SYMBOL);	}
+	|	GREATER^ {	emit($GREATER, DroolsEditorType.SYMBOL);	}
+	|	GREATER_EQUAL^ {	emit($GREATER_EQUAL, DroolsEditorType.SYMBOL);	}
+	|	LESS^ {	emit($LESS, DroolsEditorType.SYMBOL);	}
+	|	LESS_EQUAL^ {	emit($LESS_EQUAL, DroolsEditorType.SYMBOL);	}
+	|	NOT_EQUAL^ {	emit($NOT_EQUAL, DroolsEditorType.SYMBOL);	}
+	|	not_key?
+		(	operator_key^ square_chunk?	)
+	)
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	}
+	expression_value
+	;
+
+//Simple Syntax Sugar
+compound_operator 
+ at init { if ( state.backtracking==0 ) emit(Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR); }
+	:	
+	( in_key^ | not_key in_key^ ) 
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_ARGUMENT);	}
+		LEFT_PAREN! {	emit($LEFT_PAREN, DroolsEditorType.SYMBOL);	}
+			expression_value ( COMMA! {	emit($COMMA, DroolsEditorType.SYMBOL);	} expression_value )* 
+		RIGHT_PAREN {	emit($RIGHT_PAREN, DroolsEditorType.SYMBOL);	}
+	{	emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF && input.LA(1) == DOUBLE_PIPE) {
+		emit(input.LT(1), DroolsEditorType.SYMBOL);
+		input.consume();
+		emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+	}	}
+
+operator_key
+	:      {(isPluggableEvaluator(false))}? => id=ID
+	       { emit($id, DroolsEditorType.IDENTIFIER); }
+	       -> VK_OPERATOR[$id]
+	;
+
+neg_operator_key
+	:      {(isPluggableEvaluator(true))}? => id=ID 
+	       { emit($id, DroolsEditorType.IDENTIFIER); } 
+	       -> VK_OPERATOR[$id]
+	;
+
+expression_value
+	:	(accessor_path
+	|	literal_constraint 
+	|	paren_chunk)
+	{	if (isEditorInterfaceEnabled && !(input.LA(1) == EOF && input.get(input.index() - 1).getType() != WS))
+			emit(Location.LOCATION_LHS_INSIDE_CONDITION_END);	}
+	;
+finally { 
+	if (isEditorInterfaceEnabled && input.LA(2) == EOF) {
+		if (input.LA(1) == DOUBLE_PIPE) {
+			emit(input.LT(1), DroolsEditorType.SYMBOL);
+			input.consume();
+			emit(true, Location.LOCATION_LHS_INSIDE_CONDITION_OPERATOR);
+		}
+	}
+}
+
+literal_constraint
+	:	STRING {	emit($STRING, DroolsEditorType.STRING_CONST);	}
+	|	INT {	emit($INT, DroolsEditorType.NUMERIC_CONST);	}
+	|	FLOAT {	emit($FLOAT, DroolsEditorType.NUMERIC_CONST);	}
+	|	BOOL {	emit($BOOL, DroolsEditorType.BOOLEAN_CONST);	}
+	|	NULL {	emit($NULL, DroolsEditorType.NULL_CONST);	}
+	;
+
+pattern_type
+	:	id+=ID ( id+=DOT id+=ID )* 
+	{	emit($id, DroolsEditorType.IDENTIFIER);
+		setParaphrasesValue(DroolsParaphraseTypes.PATTERN, buildStringFromTokens($id));	} 
+	    dimension_definition*
+		-> ^(VT_PATTERN_TYPE ID+ dimension_definition*)
+	;
+
+data_type
+	:	id+=ID ( id+=DOT id+=ID )* dimension_definition*
+	{	emit($id, DroolsEditorType.IDENTIFIER);	}
+		-> ^(VT_DATA_TYPE ID+ dimension_definition*)
+	;
+
+dimension_definition
+	:	LEFT_SQUARE {	emit($LEFT_SQUARE, DroolsEditorType.SYMBOL);	} 
+		RIGHT_SQUARE {	emit($RIGHT_SQUARE, DroolsEditorType.SYMBOL);	} 
+	;
+
+accessor_path
+	:	accessor_element ( DOT {	emit($DOT, DroolsEditorType.IDENTIFIER);	} accessor_element )*
+	-> ^(VT_ACCESSOR_PATH accessor_element+)
+	;
+
+accessor_element
+	:	ID {	emit($ID, DroolsEditorType.IDENTIFIER);	}
+		square_chunk*
+	-> ^(VT_ACCESSOR_ELEMENT ID square_chunk*)
+	;
+
+rhs_chunk
+ at init{
+	String text = "";
+}	:	rc=rhs_chunk_data {text = $rc.text;}
+	-> VT_RHS_CHUNK[$rc.start,text]
+	;
+
+rhs_chunk_data
+	:	THEN 
+	{	if ($THEN.text.equalsIgnoreCase("then")){
+			emit($THEN, DroolsEditorType.KEYWORD);
+			emit(Location.LOCATION_RHS);
+		}	}
+			not_end_key* 
+		end_key 
+		SEMICOLON? {	emit($SEMICOLON, DroolsEditorType.KEYWORD);	}
+	;
+
+curly_chunk
+ at init{
+	String text = "";
+}	:	cc=curly_chunk_data[false] {text = $cc.text;}
+	-> VT_CURLY_CHUNK[$cc.start,text]
+	;
+
+curly_chunk_data[boolean isRecursive]
+	:	lc1=LEFT_CURLY
+		{	if (!isRecursive) {
+				emit($lc1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($lc1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_CURLY | RIGHT_CURLY ) { emit($any, DroolsEditorType.CODE_CHUNK); } | curly_chunk_data[true] )* 
+		rc1=RIGHT_CURLY
+		{	if (!isRecursive) {
+				emit($rc1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rc1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+paren_chunk
+ at init{
+	String text = "";
+}	:	pc=paren_chunk_data[false] {text = $pc.text;} 
+	-> VT_PAREN_CHUNK[$pc.start,text]
+	;
+
+paren_chunk_data[boolean isRecursive]
+	:	lp1=LEFT_PAREN
+		{	if (!isRecursive) {
+				emit($lp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($lp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_PAREN | RIGHT_PAREN ) { emit($any, DroolsEditorType.CODE_CHUNK); } | paren_chunk_data[true] )* 
+		rp1=RIGHT_PAREN
+		{	if (!isRecursive) {
+				emit($rp1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rp1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}	
+	;
+
+square_chunk
+ at init{
+	String text = "";
+}	:	sc=square_chunk_data[false] {text = $sc.text;}
+	-> VT_SQUARE_CHUNK[$sc.start,text]
+	;
+
+square_chunk_data[boolean isRecursive]
+	:	ls1=LEFT_SQUARE
+		{	if (!isRecursive) {
+				emit($ls1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($ls1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+			(any=~ ( LEFT_SQUARE | RIGHT_SQUARE ) { emit($any, DroolsEditorType.CODE_CHUNK); }| square_chunk_data[true] )* 
+		rs1=RIGHT_SQUARE
+		{	if (!isRecursive) {
+				emit($rs1, DroolsEditorType.SYMBOL);
+			} else {
+				emit($rs1, DroolsEditorType.CODE_CHUNK);
+			}	
+		}
+	;
+
+lock_on_active_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))}?=>  id1=ID mis1=MISC id2=ID mis2=MISC id3=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);
+		emit($mis2, DroolsEditorType.KEYWORD);
+		emit($id3, DroolsEditorType.KEYWORD);	}
+		->	VK_LOCK_ON_ACTIVE[$start, text]
+	;
+
+date_effective_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_DATE_EFFECTIVE[$start, text]
+	;
+
+date_expires_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_DATE_EXPIRES[$start, text]
+	;
+
+no_loop_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_NO_LOOP[$start, text]
+	;
+
+auto_focus_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_AUTO_FOCUS[$start, text]
+	;
+
+activation_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_ACTIVATION_GROUP[$start, text]
+	;
+
+agenda_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_AGENDA_GROUP[$start, text]
+	;
+
+ruleflow_group_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_RULEFLOW_GROUP[$start, text]
+	;
+
+entry_point_key
+ at init{
+	String text = "";
+}	:	{(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))}?=>  id1=ID mis1=MISC id2=ID {text = $text;}
+	{	emit($id1, DroolsEditorType.KEYWORD);
+		emit($mis1, DroolsEditorType.KEYWORD);
+		emit($id2, DroolsEditorType.KEYWORD);	}
+		->	VK_ENTRY_POINT[$start, text]
+	;
+
+duration_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DURATION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DURATION[$id]
+	;
+
+package_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_PACKAGE[$id]
+	;
+
+import_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.IMPORT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_IMPORT[$id]
+	;
+
+dialect_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DIALECT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DIALECT[$id]
+	;
+
+salience_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_SALIENCE[$id]
+	;
+
+enabled_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ENABLED))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ENABLED[$id]
+	;
+
+attributes_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ATTRIBUTES[$id]
+	;
+
+rule_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.RULE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_RULE[$id]
+	;
+
+extend_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EXTEND))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EXTEND[$id]
+	;
+
+template_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_TEMPLATE[$id]
+	;
+
+query_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.QUERY))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_QUERY[$id]
+	;
+
+declare_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.DECLARE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_DECLARE[$id]
+	;
+
+function_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_FUNCTION[$id]
+	;
+
+global_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_GLOBAL[$id]
+	;
+
+eval_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EVAL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EVAL[$id]
+	;
+
+not_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.NOT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_NOT[$id]
+	;
+
+in_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.IN))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_IN[$id]
+	;
+
+or_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.OR))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_OR[$id]
+	;
+
+and_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.AND))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_AND[$id]
+	;
+
+exists_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.EXISTS))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_EXISTS[$id]
+	;
+
+forall_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.FORALL))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_FORALL[$id]
+	;
+
+action_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.ACTION))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_ACTION[$id]
+	;
+
+reverse_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.REVERSE))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_REVERSE[$id]
+	;
+
+result_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.RESULT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_RESULT[$id]
+	;
+
+end_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.END))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_END[$id]
+	;
+
+not_end_key
+	:	{!(validateIdentifierKey(DroolsSoftKeywords.END))}?=>  any=.
+	{	emit($any, DroolsEditorType.CODE_CHUNK);	}
+	;
+
+init_key
+	:	{(validateIdentifierKey(DroolsSoftKeywords.INIT))}?=>  id=ID
+	{	emit($id, DroolsEditorType.KEYWORD);	}
+		->	VK_INIT[$id]
+	;
+
+WS      :       (	' '
+                |	'\t'
+                |	'\f'
+                |	EOL
+                )+
+                { $channel=HIDDEN; }
+        ;
+
+fragment
+EOL 	:	     
+   		(       ( '\r\n' )=> '\r\n'  // Evil DOS
+                |       '\r'    // Macintosh
+                |       '\n'    // Unix (the right way)
+                )
+        ;
+        
+INT	
+	:	('-')?('0'..'9')+
+		;
+
+FLOAT
+	:	('-')?('0'..'9')+ '.' ('0'..'9')+
+	;
+
+STRING
+    :  ('"' ( EscapeSequence | ~('\\'|'"') )* '"')
+     | ('\'' ( EscapeSequence | ~('\\'|'\'') )* '\'')
+    ;
+
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
+
+fragment
+EscapeSequence
+    :   '\\' ('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
+    ;
+
+fragment
+OctalEscape
+    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7') ('0'..'7')
+    |   '\\' ('0'..'7')
+    ;
+
+fragment
+UnicodeEscape
+    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+    ;
+
+BOOL
+	:	('true'|'false') 
+	;	
+
+ACCUMULATE
+	:	'accumulate'
+	;
+
+COLLECT
+	:	'collect'
+	;
+
+FROM
+	:	'from'
+	;
+
+NULL	
+	:	'null'
+	;
+
+OVER
+	:	'over'
+	;
+
+THEN
+	:	'then'
+	;
+
+WHEN
+	:	'when'
+	;
+
+GRAVE_ACCENT
+	:	'`'
+	;
+
+AT	:	'@'
+	;
+
+EQUALS
+	:	'='
+	;
+
+SEMICOLON
+	:	';'
+	;
+
+DOT_STAR
+	:	'.*'
+	;
+
+COLON
+	:	':'
+	;
+
+EQUAL
+	:	'=='
+	;
+
+NOT_EQUAL
+	:	'!='
+	;
+
+GREATER
+	:	'>'
+	;
+
+GREATER_EQUAL
+	:	'>='
+	;
+
+LESS
+	:	'<'
+	;
+
+LESS_EQUAL
+	:	'<='
+	;
+
+ARROW
+	:	'->'
+	;
+
+ID	
+	:	('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')+ '%'
+	{	state.text = $text.substring(1, $text.length() - 1);	}
+	;
+
+LEFT_PAREN
+        :	'('
+        ;
+
+RIGHT_PAREN
+        :	')'
+        ;
+        
+LEFT_SQUARE
+        :	'['
+        ;
+
+RIGHT_SQUARE
+        :	']'
+        ;        
+
+LEFT_CURLY
+        :	'{'
+        ;
+
+RIGHT_CURLY
+        :	'}'
+        ;
+        
+COMMA	:	','
+	;
+	
+DOT	:	'.'
+	;	
+	
+DOUBLE_AMPER
+	:	'&&'
+	;
+	
+DOUBLE_PIPE
+	:	'||'
+	;
+
+SH_STYLE_SINGLE_LINE_COMMENT	
+	:	'#' ( options{greedy=false;} : .)* EOL /* ('\r')? '\n'  */
+                { $channel=HIDDEN; setText("//"+getText().substring(1));}
+	;
+        
+        
+C_STYLE_SINGLE_LINE_COMMENT	
+	:	'//' ( options{greedy=false;} : .)* EOL // ('\r')? '\n' 
+                { $channel=HIDDEN; }
+	;
+
+MULTI_LINE_COMMENT
+	:	'/*' (options{greedy=false;} : .)* '*/'
+                { $channel=HIDDEN; }
+	;
+
+MISC 	:
+		'!' | '$' | '%' | '^' | '*' | '_' | '-' | '+'  | '?' | '/' | '\'' | '\\' | '|' | '&'
+	;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g	2009-01-25 17:14:10 UTC (rev 24908)
@@ -114,7 +114,7 @@
 @init{
 	List slotList = new LinkedList<FieldTemplateDescr>();
 }	:	^(start=VK_TEMPLATE id=VT_TEMPLATE_ID
-			( ts=template_slot {slotList.add($ts.fieldTemplateDescr);})+ end=END)
+			( ts=template_slot {slotList.add($ts.fieldTemplateDescr);})+ end=VK_END)
 	{	$factTemplateDescr = factory.createFactTemplate($start, $id, slotList, $end);	}
 	;
 
@@ -124,7 +124,7 @@
 	;
 
 query returns [QueryDescr queryDescr]
-	:	^(start=VK_QUERY id=VT_QUERY_ID params=parameters? lb=lhs_block end=END)
+	:	^(start=VK_QUERY id=VT_QUERY_ID params=parameters? lb=lhs_block end=VK_END)
 	{	$queryDescr = factory.createQuery($start, $id, $params.paramList, $lb.andDescr, $end);	}
 	;
 
@@ -170,7 +170,7 @@
 		List<TypeFieldDescr> declFieldList = new LinkedList<TypeFieldDescr>(); }
 	:	^(VK_DECLARE id=VT_TYPE_DECLARE_ID 
 			(dm=decl_metadata {declMetadaList.add($dm.attData);	})* 
-			(df=decl_field {declFieldList.add($df.fieldDescr);	})* END)
+			(df=decl_field {declFieldList.add($df.fieldDescr);	})* VK_END)
 	{	$declaration = factory.createTypeDeclr($id, declMetadaList, declFieldList);	}
 	;
 
@@ -264,7 +264,7 @@
 
 accumulate_init_clause [PatternSourceDescr accumulateParam] returns [AccumulateDescr accumulateDescr] 
 	:	^(VT_ACCUMULATE_INIT_CLAUSE 
-			^(start=INIT pc1=VT_PAREN_CHUNK) 
+			^(start=VK_INIT pc1=VT_PAREN_CHUNK) 
 			^(VK_ACTION pc2=VT_PAREN_CHUNK) 
 			rev=accumulate_init_reverse_clause?
 			^(VK_RESULT pc3=VT_PAREN_CHUNK))

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/DRLIncompleteCodeTest.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -18,6 +18,7 @@
 		String input = "package a.b.c import a.b.c.* query MyQuery rule MyRule when Class ( property memberOf collexction ";
 		DrlParser parser = new DrlParser();
 		PackageDescr descr = parser.parse(true, input);
+		System.out.println(parser.getErrors());
 
 		assertNotNull(descr);
 		assertEquals("a.b.c", descr.getNamespace());

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/RuleParserTest.java	2009-01-25 17:14:10 UTC (rev 24908)
@@ -246,9 +246,7 @@
         assertNotNull( rule.getConsequence() );
     }
 
-    // FIXME Keywords END and THEN should not be used as identifiers: try to
-    // enable it
-    public void FIXME_testKeywordCollisions() throws Exception {
+    public void testKeywordCollisions() throws Exception {
         parseResource( "compilation_unit",
                        "compilation_unit",
                        "eol_funny_business.drl" );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl	2009-01-25 12:32:06 UTC (rev 24907)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/lang/eol_funny_business.drl	2009-01-25 17:14:10 UTC (rev 24908)
@@ -1,4 +1,4 @@
-package test.dialect.rule.when.end.package.mine;
+package test.dialect.rule.end.package.mine;
 
 global java.lang.String rule;
 




More information about the jboss-svn-commits mailing list