[jboss-svn-commits] JBL Code SVN: r20342 - in labs/jbossrules/branches/parser-rewrite/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
Thu Jun 5 13:09:23 EDT 2008


Author: porcelli
Date: 2008-06-05 13:09:22 -0400 (Thu, 05 Jun 2008)
New Revision: 20342

Modified:
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DRL.g
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java
   labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl
Log:
Added escape for pluggable operators (grave accent).

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-06-05 16:54:38 UTC (rev 20341)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLLexer.java	2008-06-05 17:09:22 UTC (rev 20342)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-05-19 18:02:42
+// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-06-05 13:52:36
 
 	package org.drools.lang;
 
@@ -16,25 +16,25 @@
     public static final int VK_DIALECT=52;
     public static final int VK_FUNCTION=63;
     public static final int END=89;
-    public static final int HexDigit=117;
+    public static final int HexDigit=118;
     public static final int VK_ATTRIBUTES=55;
     public static final int VT_EXPRESSION_CHAIN=28;
     public static final int VK_ACCUMULATE=79;
-    public static final int MISC=113;
+    public static final int MISC=114;
     public static final int VT_AND_PREFIX=21;
     public static final int VK_QUERY=61;
-    public static final int THEN=110;
+    public static final int THEN=111;
     public static final int VK_AUTO_FOCUS=47;
     public static final int DOT=87;
     public static final int VK_IMPORT=58;
     public static final int VT_SLOT=14;
     public static final int VT_PACKAGE_ID=38;
-    public static final int LEFT_SQUARE=108;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=120;
+    public static final int LEFT_SQUARE=109;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=121;
     public static final int VT_DATA_TYPE=36;
     public static final int VK_MATCHES=67;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=111;
+    public static final int LEFT_CURLY=112;
     public static final int LEFT_PAREN=91;
     public static final int DOUBLE_AMPER=98;
     public static final int VT_QUERY_ID=9;
@@ -44,13 +44,14 @@
     public static final int VK_SOUNDSLIKE=69;
     public static final int VK_SALIENCE=53;
     public static final int VT_FIELD=33;
-    public static final int WS=115;
+    public static final int WS=116;
     public static final int STRING=90;
     public static final int VK_AND=75;
     public static final int VT_ACCESSOR_ELEMENT=35;
     public static final int VK_GLOBAL=64;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=25;
     public static final int VK_REVERSE=82;
+    public static final int GRAVE_ACCENT=106;
     public static final int VK_DURATION=51;
     public static final int VT_SQUARE_CHUNK=18;
     public static final int VK_FORALL=77;
@@ -58,7 +59,7 @@
     public static final int VT_PAREN_CHUNK=19;
     public static final int VK_ENABLED=54;
     public static final int VK_RESULT=83;
-    public static final int UnicodeEscape=118;
+    public static final int UnicodeEscape=119;
     public static final int VK_PACKAGE=59;
     public static final int VT_RULE_ID=11;
     public static final int EQUAL=100;
@@ -66,17 +67,17 @@
     public static final int SEMICOLON=85;
     public static final int VK_TEMPLATE=60;
     public static final int VT_AND_IMPLICIT=20;
-    public static final int NULL=107;
+    public static final int NULL=108;
     public static final int COLON=94;
-    public static final int MULTI_LINE_COMMENT=122;
+    public static final int MULTI_LINE_COMMENT=123;
     public static final int VT_RULE_ATTRIBUTES=15;
-    public static final int RIGHT_SQUARE=109;
+    public static final int RIGHT_SQUARE=110;
     public static final int VK_AGENDA_GROUP=49;
     public static final int VT_FACT_OR=31;
     public static final int VK_NOT=72;
     public static final int VK_DATE_EXPIRES=44;
     public static final int ARROW=99;
-    public static final int FLOAT=106;
+    public static final int FLOAT=107;
     public static final int VT_SLOT_ID=13;
     public static final int VT_CURLY_CHUNK=17;
     public static final int VT_OR_PREFIX=22;
@@ -84,7 +85,7 @@
     public static final int LESS=103;
     public static final int VT_PATTERN=29;
     public static final int VK_DATE_EFFECTIVE=43;
-    public static final int EscapeSequence=116;
+    public static final int EscapeSequence=117;
     public static final int VK_EXISTS=76;
     public static final int INT=96;
     public static final int VT_BIND_FIELD=32;
@@ -95,11 +96,11 @@
     public static final int VT_FACT_BINDING=30;
     public static final int ID=86;
     public static final int NOT_EQUAL=105;
-    public static final int RIGHT_CURLY=112;
+    public static final int RIGHT_CURLY=113;
     public static final int VK_ENTRY_POINT=71;
     public static final int VT_AND_INFIX=23;
+    public static final int VT_PARAM_LIST=42;
     public static final int BOOL=95;
-    public static final int VT_PARAM_LIST=42;
     public static final int VT_FROM_SOURCE=27;
     public static final int VK_CONTAINS=66;
     public static final int VK_LOCK_ON_ACTIVE=45;
@@ -119,18 +120,18 @@
     public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
     public static final int VT_IMPORT_ID=39;
-    public static final int EOL=114;
+    public static final int EOL=115;
     public static final int VK_INIT=80;
     public static final int VK_ACTIVATION_GROUP=48;
-    public static final int Tokens=123;
-    public static final int OctalEscape=119;
+    public static final int Tokens=124;
+    public static final int OctalEscape=120;
     public static final int VK_ACTION=81;
     public static final int VK_FROM=78;
     public static final int VK_EXCLUDES=68;
     public static final int RIGHT_PAREN=93;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=62;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=121;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=122;
 
     	/** The standard method called to automatically emit a token at the
     	 *  outermost lexical rule.  The token object should point into the
@@ -150,7 +151,7 @@
     public DRLLexer() {;} 
     public DRLLexer(CharStream input) {
         super(input);
-        ruleMemo = new HashMap[40+1];
+        ruleMemo = new HashMap[41+1];
      }
     public String getGrammarFileName() { return "/Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g"; }
 
@@ -158,10 +159,10 @@
     public final void mWS() throws RecognitionException {
         try {
             int _type = WS;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:9: ( ( ' ' | '\\t' | '\\f' | EOL )+ )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:17: ( ' ' | '\\t' | '\\f' | EOL )+
             {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:17: ( ' ' | '\\t' | '\\f' | EOL )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:17: ( ' ' | '\\t' | '\\f' | EOL )+
             int cnt1=0;
             loop1:
             do {
@@ -193,28 +194,28 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:989:19: ' '
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:19: ' '
             	    {
             	    match(' '); if (failed) return ;
 
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:990:19: '\\t'
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:19: '\\t'
             	    {
             	    match('\t'); if (failed) return ;
 
             	    }
             	    break;
             	case 3 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:991:19: '\\f'
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:19: '\\f'
             	    {
             	    match('\f'); if (failed) return ;
 
             	    }
             	    break;
             	case 4 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:992:19: EOL
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:993:19: EOL
             	    {
             	    mEOL(); if (failed) return ;
 
@@ -247,10 +248,10 @@
     // $ANTLR start EOL
     public final void mEOL() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:998:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:6: ( ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )
             int alt2=3;
             int LA2_0 = input.LA(1);
 
@@ -269,13 +270,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("999:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
+                    new NoViableAltException("1000:6: ( ( '\\r\\n' )=> '\\r\\n' | '\\r' | '\\n' )", 2, 0, input);
 
                 throw nvae;
             }
             switch (alt2) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:14: ( '\\r\\n' )=> '\\r\\n'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:14: ( '\\r\\n' )=> '\\r\\n'
                     {
                     match("\r\n"); if (failed) return ;
 
@@ -283,14 +284,14 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:25: '\\r'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1001:25: '\\r'
                     {
                     match('\r'); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1001:25: '\\n'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1002:25: '\\n'
                     {
                     match('\n'); if (failed) return ;
 
@@ -312,10 +313,10 @@
     public final void mINT() throws RecognitionException {
         try {
             int _type = INT;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:2: ( ( '-' )? ( '0' .. '9' )+ )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:4: ( '-' )? ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:2: ( ( '-' )? ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:4: ( '-' )? ( '0' .. '9' )+
             {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:4: ( '-' )?
             int alt3=2;
             int LA3_0 = input.LA(1);
 
@@ -324,7 +325,7 @@
             }
             switch (alt3) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:5: '-'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -333,7 +334,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:10: ( '0' .. '9' )+
             int cnt4=0;
             loop4:
             do {
@@ -347,7 +348,7 @@
 
                 switch (alt4) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1006:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1007:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -378,10 +379,10 @@
     public final void mFLOAT() throws RecognitionException {
         try {
             int _type = FLOAT;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:2: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:4: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
             {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:4: ( '-' )?
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:4: ( '-' )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -390,7 +391,7 @@
             }
             switch (alt5) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:5: '-'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:5: '-'
                     {
                     match('-'); if (failed) return ;
 
@@ -399,7 +400,7 @@
 
             }
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:10: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:10: ( '0' .. '9' )+
             int cnt6=0;
             loop6:
             do {
@@ -413,7 +414,7 @@
 
                 switch (alt6) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:11: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:11: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -431,7 +432,7 @@
             } while (true);
 
             match('.'); if (failed) return ;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:26: ( '0' .. '9' )+
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:26: ( '0' .. '9' )+
             int cnt7=0;
             loop7:
             do {
@@ -445,7 +446,7 @@
 
                 switch (alt7) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1010:27: '0' .. '9'
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1011:27: '0' .. '9'
             	    {
             	    matchRange('0','9'); if (failed) return ;
 
@@ -476,7 +477,7 @@
     public final void mSTRING() throws RecognitionException {
         try {
             int _type = STRING;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:5: ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) )
             int alt10=2;
             int LA10_0 = input.LA(1);
 
@@ -489,19 +490,19 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1013:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
+                    new NoViableAltException("1014:1: STRING : ( ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' ) | ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' ) );", 10, 0, input);
 
                 throw nvae;
             }
             switch (alt10) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
                     {
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:8: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:9: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
                     {
                     match('\"'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:13: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
                     loop8:
                     do {
                         int alt8=3;
@@ -517,14 +518,14 @@
 
                         switch (alt8) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:15: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:15: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1014:32: ~ ( '\\\\' | '\"' )
+                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:32: ~ ( '\\\\' | '\"' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -554,13 +555,13 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
                     {
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:8: ( '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\'' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:9: '\\'' ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )* '\\''
                     {
                     match('\''); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:14: ( EscapeSequence | ~ ( '\\\\' | '\\'' ) )*
                     loop9:
                     do {
                         int alt9=3;
@@ -576,14 +577,14 @@
 
                         switch (alt9) {
                     	case 1 :
-                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:16: EscapeSequence
+                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:16: EscapeSequence
                     	    {
                     	    mEscapeSequence(); if (failed) return ;
 
                     	    }
                     	    break;
                     	case 2 :
-                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1015:33: ~ ( '\\\\' | '\\'' )
+                    	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1016:33: ~ ( '\\\\' | '\\'' )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                     	        input.consume();
@@ -624,8 +625,8 @@
     // $ANTLR start HexDigit
     public final void mHexDigit() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1019:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1020: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();
@@ -650,7 +651,7 @@
     // $ANTLR start EscapeSequence
     public final void mEscapeSequence() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023: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 )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024: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);
 
@@ -722,7 +723,7 @@
                 default:
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1021:1: 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 );", 11, 1, input);
+                        new NoViableAltException("1022:1: 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 );", 11, 1, input);
 
                     throw nvae;
                 }
@@ -731,13 +732,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1021:1: 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 );", 11, 0, input);
+                    new NoViableAltException("1022:1: 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 );", 11, 0, input);
 
                 throw nvae;
             }
             switch (alt11) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1023: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' | '*' | '[' | ']' | '(' | ')' | '$' | '^' | '{' | '}' | '?' | '+' | '-' | '&' | '|' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1024: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 (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)<='}') ) {
@@ -755,14 +756,14 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1027:9: UnicodeEscape
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:9: UnicodeEscape
                     {
                     mUnicodeEscape(); if (failed) return ;
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1028:9: OctalEscape
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1029:9: OctalEscape
                     {
                     mOctalEscape(); if (failed) return ;
 
@@ -779,7 +780,7 @@
     // $ANTLR start OctalEscape
     public final void mOctalEscape() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
             int alt12=3;
             int LA12_0 = input.LA(1);
 
@@ -813,7 +814,7 @@
                 else {
                     if (backtracking>0) {failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("1031:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
+                        new NoViableAltException("1032:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 1, input);
 
                     throw nvae;
                 }
@@ -821,31 +822,31 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1031:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
+                    new NoViableAltException("1032:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 12, 0, input);
 
                 throw nvae;
             }
             switch (alt12) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:14: ( '0' .. '3' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:15: '0' .. '3'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:14: ( '0' .. '3' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:15: '0' .. '3'
                     {
                     matchRange('0','3'); if (failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:25: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:36: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1033:37: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:36: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:37: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -855,18 +856,18 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:14: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:15: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
                     }
 
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:25: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1034:26: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:25: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:26: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -876,11 +877,11 @@
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:9: '\\\\' ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:9: '\\\\' ( '0' .. '7' )
                     {
                     match('\\'); if (failed) return ;
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:14: ( '0' .. '7' )
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1035:15: '0' .. '7'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:14: ( '0' .. '7' )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1036:15: '0' .. '7'
                     {
                     matchRange('0','7'); if (failed) return ;
 
@@ -900,8 +901,8 @@
     // $ANTLR start UnicodeEscape
     public final void mUnicodeEscape() throws RecognitionException {
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1040:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1040:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1041:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
             {
             match('\\'); if (failed) return ;
             match('u'); if (failed) return ;
@@ -922,10 +923,10 @@
     public final void mBOOL() throws RecognitionException {
         try {
             int _type = BOOL;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:2: ( ( 'true' | 'false' ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:4: ( 'true' | 'false' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:2: ( ( 'true' | 'false' ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:4: ( 'true' | 'false' )
             {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:4: ( 'true' | 'false' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:4: ( 'true' | 'false' )
             int alt13=2;
             int LA13_0 = input.LA(1);
 
@@ -938,13 +939,13 @@
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("1044:4: ( 'true' | 'false' )", 13, 0, input);
+                    new NoViableAltException("1045:4: ( 'true' | 'false' )", 13, 0, input);
 
                 throw nvae;
             }
             switch (alt13) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:5: 'true'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:5: 'true'
                     {
                     match("true"); if (failed) return ;
 
@@ -952,7 +953,7 @@
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1044:12: 'false'
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1045:12: 'false'
                     {
                     match("false"); if (failed) return ;
 
@@ -976,8 +977,8 @@
     public final void mNULL() throws RecognitionException {
         try {
             int _type = NULL;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:6: ( 'null' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1047:8: 'null'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1048:6: ( 'null' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1048:8: 'null'
             {
             match("null"); if (failed) return ;
 
@@ -995,8 +996,8 @@
     public final void mTHEN() throws RecognitionException {
         try {
             int _type = THEN;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:2: ( 'then' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1051:4: 'then'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1052:2: ( 'then' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1052:4: 'then'
             {
             match("then"); if (failed) return ;
 
@@ -1014,8 +1015,8 @@
     public final void mEND() throws RecognitionException {
         try {
             int _type = END;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1054:5: ( 'end' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1054:7: 'end'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1055:5: ( 'end' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1055:7: 'end'
             {
             match("end"); if (failed) return ;
 
@@ -1029,12 +1030,30 @@
     }
     // $ANTLR end END
 
+    // $ANTLR start GRAVE_ACCENT
+    public final void mGRAVE_ACCENT() throws RecognitionException {
+        try {
+            int _type = GRAVE_ACCENT;
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1059:2: ( '`' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1059:4: '`'
+            {
+            match('`'); if (failed) return ;
+
+            }
+
+            this.type = _type;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end GRAVE_ACCENT
+
     // $ANTLR start SEMICOLON
     public final void mSEMICOLON() throws RecognitionException {
         try {
             int _type = SEMICOLON;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1058:2: ( ';' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1058:4: ';'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:2: ( ';' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1063:4: ';'
             {
             match(';'); if (failed) return ;
 
@@ -1051,8 +1070,8 @@
     public final void mDOT_STAR() throws RecognitionException {
         try {
             int _type = DOT_STAR;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1062:2: ( '.*' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1062:4: '.*'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:2: ( '.*' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1067:4: '.*'
             {
             match(".*"); if (failed) return ;
 
@@ -1070,8 +1089,8 @@
     public final void mCOLON() throws RecognitionException {
         try {
             int _type = COLON;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:2: ( ':' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1066:4: ':'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:2: ( ':' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:4: ':'
             {
             match(':'); if (failed) return ;
 
@@ -1088,8 +1107,8 @@
     public final void mEQUAL() throws RecognitionException {
         try {
             int _type = EQUAL;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:2: ( '==' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1071:4: '=='
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1076:2: ( '==' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1076:4: '=='
             {
             match("=="); if (failed) return ;
 
@@ -1107,8 +1126,8 @@
     public final void mNOT_EQUAL() throws RecognitionException {
         try {
             int _type = NOT_EQUAL;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:2: ( '!=' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1075:4: '!='
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:2: ( '!=' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1080:4: '!='
             {
             match("!="); if (failed) return ;
 
@@ -1126,8 +1145,8 @@
     public final void mGREATER() throws RecognitionException {
         try {
             int _type = GREATER;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:2: ( '>' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1079:4: '>'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:2: ( '>' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1084:4: '>'
             {
             match('>'); if (failed) return ;
 
@@ -1144,8 +1163,8 @@
     public final void mGREATER_EQUAL() throws RecognitionException {
         try {
             int _type = GREATER_EQUAL;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1083:2: ( '>=' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1083:4: '>='
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:2: ( '>=' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1088:4: '>='
             {
             match(">="); if (failed) return ;
 
@@ -1163,8 +1182,8 @@
     public final void mLESS() throws RecognitionException {
         try {
             int _type = LESS;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:2: ( '<' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1087:4: '<'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:2: ( '<' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1092:4: '<'
             {
             match('<'); if (failed) return ;
 
@@ -1181,8 +1200,8 @@
     public final void mLESS_EQUAL() throws RecognitionException {
         try {
             int _type = LESS_EQUAL;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:2: ( '<=' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1091:4: '<='
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:2: ( '<=' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1096:4: '<='
             {
             match("<="); if (failed) return ;
 
@@ -1200,8 +1219,8 @@
     public final void mARROW() throws RecognitionException {
         try {
             int _type = ARROW;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1095:2: ( '->' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1095:4: '->'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:2: ( '->' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1100:4: '->'
             {
             match("->"); if (failed) return ;
 
@@ -1219,8 +1238,8 @@
     public final void mID() throws RecognitionException {
         try {
             int _type = ID;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1099:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1099:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1104:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '$' | '\\u00c0' .. '\\u00ff' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )* )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1104: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();
@@ -1233,7 +1252,7 @@
                 recover(mse);    throw mse;
             }
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1099:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1104:50: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '\\u00c0' .. '\\u00ff' )*
             loop14:
             do {
                 int alt14=2;
@@ -1282,8 +1301,8 @@
     public final void mLEFT_PAREN() throws RecognitionException {
         try {
             int _type = LEFT_PAREN;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:9: ( '(' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1103:11: '('
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1108:9: ( '(' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1108:11: '('
             {
             match('('); if (failed) return ;
 
@@ -1300,8 +1319,8 @@
     public final void mRIGHT_PAREN() throws RecognitionException {
         try {
             int _type = RIGHT_PAREN;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:9: ( ')' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1107:11: ')'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:9: ( ')' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1112:11: ')'
             {
             match(')'); if (failed) return ;
 
@@ -1318,8 +1337,8 @@
     public final void mLEFT_SQUARE() throws RecognitionException {
         try {
             int _type = LEFT_SQUARE;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1111:9: ( '[' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1111:11: '['
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:9: ( '[' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1116:11: '['
             {
             match('['); if (failed) return ;
 
@@ -1336,8 +1355,8 @@
     public final void mRIGHT_SQUARE() throws RecognitionException {
         try {
             int _type = RIGHT_SQUARE;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1115:9: ( ']' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1115:11: ']'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1120:9: ( ']' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1120:11: ']'
             {
             match(']'); if (failed) return ;
 
@@ -1354,8 +1373,8 @@
     public final void mLEFT_CURLY() throws RecognitionException {
         try {
             int _type = LEFT_CURLY;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1119:9: ( '{' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1119:11: '{'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:9: ( '{' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1124:11: '{'
             {
             match('{'); if (failed) return ;
 
@@ -1372,8 +1391,8 @@
     public final void mRIGHT_CURLY() throws RecognitionException {
         try {
             int _type = RIGHT_CURLY;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:9: ( '}' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1123:11: '}'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:9: ( '}' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1128:11: '}'
             {
             match('}'); if (failed) return ;
 
@@ -1390,8 +1409,8 @@
     public final void mCOMMA() throws RecognitionException {
         try {
             int _type = COMMA;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:7: ( ',' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1126:9: ','
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1131:7: ( ',' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1131:9: ','
             {
             match(','); if (failed) return ;
 
@@ -1408,8 +1427,8 @@
     public final void mDOT() throws RecognitionException {
         try {
             int _type = DOT;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:5: ( '.' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1129:7: '.'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1134:5: ( '.' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1134:7: '.'
             {
             match('.'); if (failed) return ;
 
@@ -1426,8 +1445,8 @@
     public final void mDOUBLE_AMPER() throws RecognitionException {
         try {
             int _type = DOUBLE_AMPER;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:2: ( '&&' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1133:4: '&&'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1138:2: ( '&&' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1138:4: '&&'
             {
             match("&&"); if (failed) return ;
 
@@ -1445,8 +1464,8 @@
     public final void mDOUBLE_PIPE() throws RecognitionException {
         try {
             int _type = DOUBLE_PIPE;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:2: ( '||' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1137:4: '||'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:2: ( '||' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1142:4: '||'
             {
             match("||"); if (failed) return ;
 
@@ -1464,11 +1483,11 @@
     public final void mSH_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = SH_STYLE_SINGLE_LINE_COMMENT;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:2: ( '#' ( options {greedy=false; } : . )* EOL )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:4: '#' ( options {greedy=false; } : . )* EOL
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1146:2: ( '#' ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1146:4: '#' ( options {greedy=false; } : . )* EOL
             {
             match('#'); if (failed) return ;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:8: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1146:8: ( options {greedy=false; } : . )*
             loop15:
             do {
                 int alt15=2;
@@ -1487,7 +1506,7 @@
 
                 switch (alt15) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1141:35: .
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1146:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1517,12 +1536,12 @@
     public final void mC_STYLE_SINGLE_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = C_STYLE_SINGLE_LINE_COMMENT;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1147:2: ( '//' ( options {greedy=false; } : . )* EOL )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1147:4: '//' ( options {greedy=false; } : . )* EOL
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:2: ( '//' ( options {greedy=false; } : . )* EOL )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:4: '//' ( options {greedy=false; } : . )* EOL
             {
             match("//"); if (failed) return ;
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1147:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:9: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -1541,7 +1560,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1147:36: .
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:36: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1571,12 +1590,12 @@
     public final void mMULTI_LINE_COMMENT() throws RecognitionException {
         try {
             int _type = MULTI_LINE_COMMENT;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:4: '/*' ( options {greedy=false; } : . )* '*/'
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:2: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:4: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); if (failed) return ;
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:9: ( options {greedy=false; } : . )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:9: ( options {greedy=false; } : . )*
             loop17:
             do {
                 int alt17=2;
@@ -1601,7 +1620,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1152:35: .
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1157:35: .
             	    {
             	    matchAny(); if (failed) return ;
 
@@ -1632,7 +1651,7 @@
     public final void mMISC() throws RecognitionException {
         try {
             int _type = MISC;
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1156:7: ( '!' | '@' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '=' | '/' | '\\'' | '\\\\' | '|' | '&' )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1161:7: ( '!' | '@' | '$' | '%' | '^' | '*' | '_' | '-' | '+' | '?' | '=' | '/' | '\\'' | '\\\\' | '|' | '&' )
             // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             if ( input.LA(1)=='!'||(input.LA(1)>='$' && input.LA(1)<='\'')||(input.LA(1)>='*' && input.LA(1)<='+')||input.LA(1)=='-'||input.LA(1)=='/'||input.LA(1)=='='||(input.LA(1)>='?' && input.LA(1)<='@')||input.LA(1)=='\\'||(input.LA(1)>='^' && input.LA(1)<='_')||input.LA(1)=='|' ) {
@@ -1657,8 +1676,8 @@
     // $ANTLR end MISC
 
     public void mTokens() throws RecognitionException {
-        // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | NULL | THEN | END | 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 alt18=33;
+        // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:8: ( WS | INT | FLOAT | STRING | BOOL | NULL | THEN | END | GRAVE_ACCENT | 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 alt18=34;
         alt18 = dfa18.predict(input);
         switch (alt18) {
             case 1 :
@@ -1718,176 +1737,183 @@
                 }
                 break;
             case 9 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:49: SEMICOLON
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:49: GRAVE_ACCENT
                 {
-                mSEMICOLON(); if (failed) return ;
+                mGRAVE_ACCENT(); if (failed) return ;
 
                 }
                 break;
             case 10 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:59: DOT_STAR
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:62: SEMICOLON
                 {
-                mDOT_STAR(); if (failed) return ;
+                mSEMICOLON(); if (failed) return ;
 
                 }
                 break;
             case 11 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:68: COLON
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:72: DOT_STAR
                 {
-                mCOLON(); if (failed) return ;
+                mDOT_STAR(); if (failed) return ;
 
                 }
                 break;
             case 12 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:74: EQUAL
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:81: COLON
                 {
-                mEQUAL(); if (failed) return ;
+                mCOLON(); if (failed) return ;
 
                 }
                 break;
             case 13 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:80: NOT_EQUAL
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:87: EQUAL
                 {
-                mNOT_EQUAL(); if (failed) return ;
+                mEQUAL(); if (failed) return ;
 
                 }
                 break;
             case 14 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:90: GREATER
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:93: NOT_EQUAL
                 {
-                mGREATER(); if (failed) return ;
+                mNOT_EQUAL(); if (failed) return ;
 
                 }
                 break;
             case 15 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:98: GREATER_EQUAL
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:103: GREATER
                 {
-                mGREATER_EQUAL(); if (failed) return ;
+                mGREATER(); if (failed) return ;
 
                 }
                 break;
             case 16 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:112: LESS
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:111: GREATER_EQUAL
                 {
-                mLESS(); if (failed) return ;
+                mGREATER_EQUAL(); if (failed) return ;
 
                 }
                 break;
             case 17 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:117: LESS_EQUAL
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:125: LESS
                 {
-                mLESS_EQUAL(); if (failed) return ;
+                mLESS(); if (failed) return ;
 
                 }
                 break;
             case 18 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:128: ARROW
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:130: LESS_EQUAL
                 {
-                mARROW(); if (failed) return ;
+                mLESS_EQUAL(); if (failed) return ;
 
                 }
                 break;
             case 19 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:134: ID
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:141: ARROW
                 {
-                mID(); if (failed) return ;
+                mARROW(); if (failed) return ;
 
                 }
                 break;
             case 20 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:137: LEFT_PAREN
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:147: ID
                 {
-                mLEFT_PAREN(); if (failed) return ;
+                mID(); if (failed) return ;
 
                 }
                 break;
             case 21 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:148: RIGHT_PAREN
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:150: LEFT_PAREN
                 {
-                mRIGHT_PAREN(); if (failed) return ;
+                mLEFT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 22 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:160: LEFT_SQUARE
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:161: RIGHT_PAREN
                 {
-                mLEFT_SQUARE(); if (failed) return ;
+                mRIGHT_PAREN(); if (failed) return ;
 
                 }
                 break;
             case 23 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:172: RIGHT_SQUARE
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:173: LEFT_SQUARE
                 {
-                mRIGHT_SQUARE(); if (failed) return ;
+                mLEFT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 24 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:185: LEFT_CURLY
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:185: RIGHT_SQUARE
                 {
-                mLEFT_CURLY(); if (failed) return ;
+                mRIGHT_SQUARE(); if (failed) return ;
 
                 }
                 break;
             case 25 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:196: RIGHT_CURLY
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:198: LEFT_CURLY
                 {
-                mRIGHT_CURLY(); if (failed) return ;
+                mLEFT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 26 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:208: COMMA
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:209: RIGHT_CURLY
                 {
-                mCOMMA(); if (failed) return ;
+                mRIGHT_CURLY(); if (failed) return ;
 
                 }
                 break;
             case 27 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:214: DOT
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:221: COMMA
                 {
-                mDOT(); if (failed) return ;
+                mCOMMA(); if (failed) return ;
 
                 }
                 break;
             case 28 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:218: DOUBLE_AMPER
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:227: DOT
                 {
-                mDOUBLE_AMPER(); if (failed) return ;
+                mDOT(); if (failed) return ;
 
                 }
                 break;
             case 29 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:231: DOUBLE_PIPE
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:231: DOUBLE_AMPER
                 {
-                mDOUBLE_PIPE(); if (failed) return ;
+                mDOUBLE_AMPER(); if (failed) return ;
 
                 }
                 break;
             case 30 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:243: SH_STYLE_SINGLE_LINE_COMMENT
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:244: DOUBLE_PIPE
                 {
-                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mDOUBLE_PIPE(); if (failed) return ;
 
                 }
                 break;
             case 31 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:272: C_STYLE_SINGLE_LINE_COMMENT
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:256: SH_STYLE_SINGLE_LINE_COMMENT
                 {
-                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
+                mSH_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 32 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:300: MULTI_LINE_COMMENT
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:285: C_STYLE_SINGLE_LINE_COMMENT
                 {
-                mMULTI_LINE_COMMENT(); if (failed) return ;
+                mC_STYLE_SINGLE_LINE_COMMENT(); if (failed) return ;
 
                 }
                 break;
             case 33 :
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:319: MISC
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:313: MULTI_LINE_COMMENT
                 {
+                mMULTI_LINE_COMMENT(); if (failed) return ;
+
+                }
+                break;
+            case 34 :
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1:332: MISC
+                {
                 mMISC(); if (failed) return ;
 
                 }
@@ -1899,8 +1925,8 @@
 
     // $ANTLR start synpred1
     public final void synpred1_fragment() throws RecognitionException {   
-        // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:14: ( '\\r\\n' )
-        // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:999:16: '\\r\\n'
+        // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:14: ( '\\r\\n' )
+        // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:1000:16: '\\r\\n'
         {
         match("\r\n"); if (failed) return ;
 
@@ -1927,49 +1953,50 @@
 
     protected DFA18 dfa18 = new DFA18(this);
     static final String DFA18_eotS =
-        "\2\uffff\1\36\1\41\1\uffff\1\36\4\35\1\uffff\1\50\1\uffff\2\36\1"+
-        "\54\1\56\10\uffff\2\36\1\uffff\1\36\5\uffff\5\35\14\uffff\4\35\1"+
-        "\74\1\75\1\76\1\35\1\100\3\uffff\1\76\1\uffff";
+        "\2\uffff\1\37\1\41\1\uffff\1\37\4\36\2\uffff\1\51\1\uffff\2\37\1"+
+        "\55\1\57\10\uffff\2\37\1\uffff\1\37\5\uffff\5\36\14\uffff\4\36\1"+
+        "\75\1\76\1\77\1\36\1\101\3\uffff\1\77\1\uffff";
     static final String DFA18_eofS =
-        "\101\uffff";
+        "\102\uffff";
     static final String DFA18_minS =
-        "\1\11\1\uffff\1\60\1\56\1\uffff\1\0\1\150\1\141\1\165\1\156\1\uffff"+
+        "\1\11\1\uffff\1\60\1\56\1\uffff\1\0\1\150\1\141\1\165\1\156\2\uffff"+
         "\1\52\1\uffff\4\75\10\uffff\1\46\1\174\1\uffff\1\52\5\uffff\1\145"+
         "\1\165\2\154\1\144\14\uffff\1\156\1\145\1\163\1\154\3\60\1\145\1"+
         "\60\3\uffff\1\60\1\uffff";
     static final String DFA18_maxS =
         "\1\u00ff\1\uffff\1\76\1\71\1\uffff\1\ufffe\1\162\1\141\1\165\1\156"+
-        "\1\uffff\1\52\1\uffff\4\75\10\uffff\1\46\1\174\1\uffff\1\57\5\uffff"+
+        "\2\uffff\1\52\1\uffff\4\75\10\uffff\1\46\1\174\1\uffff\1\57\5\uffff"+
         "\1\145\1\165\2\154\1\144\14\uffff\1\156\1\145\1\163\1\154\3\u00ff"+
         "\1\145\1\u00ff\3\uffff\1\u00ff\1\uffff";
     static final String DFA18_acceptS =
-        "\1\uffff\1\1\2\uffff\1\4\5\uffff\1\11\1\uffff\1\13\4\uffff\1\23"+
-        "\1\24\1\25\1\26\1\27\1\30\1\31\1\32\2\uffff\1\36\1\uffff\1\23\1"+
-        "\41\1\22\1\3\1\2\5\uffff\1\12\1\33\1\14\1\15\1\17\1\16\1\21\1\20"+
-        "\1\34\1\35\1\37\1\40\11\uffff\1\10\1\7\1\5\1\uffff\1\6";
+        "\1\uffff\1\1\2\uffff\1\4\5\uffff\1\11\1\12\1\uffff\1\14\4\uffff"+
+        "\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\2\uffff\1\37\1\uffff\1"+
+        "\24\1\42\1\23\1\2\1\3\5\uffff\1\13\1\34\1\15\1\16\1\20\1\17\1\22"+
+        "\1\21\1\35\1\36\1\40\1\41\11\uffff\1\10\1\7\1\5\1\uffff\1\6";
     static final String DFA18_specialS =
-        "\101\uffff}>";
+        "\102\uffff}>";
     static final String[] DFA18_transitionS = {
-            "\2\1\1\uffff\2\1\22\uffff\1\1\1\16\1\4\1\33\1\21\1\36\1\31\1"+
-            "\5\1\22\1\23\2\36\1\30\1\2\1\13\1\34\12\3\1\14\1\12\1\20\1\15"+
-            "\1\17\2\36\32\35\1\24\1\36\1\25\1\36\1\21\1\uffff\4\35\1\11"+
-            "\1\7\7\35\1\10\5\35\1\6\6\35\1\26\1\32\1\27\102\uffff\100\35",
+            "\2\1\1\uffff\2\1\22\uffff\1\1\1\17\1\4\1\34\1\22\1\37\1\32\1"+
+            "\5\1\23\1\24\2\37\1\31\1\2\1\14\1\35\12\3\1\15\1\13\1\21\1\16"+
+            "\1\20\2\37\32\36\1\25\1\37\1\26\1\37\1\22\1\12\4\36\1\11\1\7"+
+            "\7\36\1\10\5\36\1\6\6\36\1\27\1\33\1\30\102\uffff\100\36",
             "",
-            "\12\3\4\uffff\1\37",
-            "\1\40\1\uffff\12\3",
+            "\12\3\4\uffff\1\40",
+            "\1\42\1\uffff\12\3",
             "",
             "\uffff\4",
-            "\1\42\11\uffff\1\43",
-            "\1\44",
+            "\1\43\11\uffff\1\44",
             "\1\45",
             "\1\46",
-            "",
             "\1\47",
             "",
-            "\1\51",
+            "",
+            "\1\50",
+            "",
             "\1\52",
             "\1\53",
-            "\1\55",
+            "\1\54",
+            "\1\56",
             "",
             "",
             "",
@@ -1978,20 +2005,20 @@
             "",
             "",
             "",
-            "\1\57",
             "\1\60",
+            "\1\61",
             "",
-            "\1\62\4\uffff\1\61",
+            "\1\63\4\uffff\1\62",
             "",
             "",
             "",
             "",
             "",
-            "\1\63",
             "\1\64",
             "\1\65",
             "\1\66",
             "\1\67",
+            "\1\70",
             "",
             "",
             "",
@@ -2004,24 +2031,24 @@
             "",
             "",
             "",
-            "\1\70",
             "\1\71",
             "\1\72",
             "\1\73",
-            "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100"+
-            "\35",
-            "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100"+
-            "\35",
-            "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100"+
-            "\35",
-            "\1\77",
-            "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100"+
-            "\35",
+            "\1\74",
+            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100"+
+            "\36",
+            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100"+
+            "\36",
+            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100"+
+            "\36",
+            "\1\100",
+            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100"+
+            "\36",
             "",
             "",
             "",
-            "\12\35\7\uffff\32\35\4\uffff\1\35\1\uffff\32\35\105\uffff\100"+
-            "\35",
+            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36\105\uffff\100"+
+            "\36",
             ""
     };
 
@@ -2055,7 +2082,7 @@
             this.transition = DFA18_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( WS | INT | FLOAT | STRING | BOOL | NULL | THEN | END | 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 | NULL | THEN | END | GRAVE_ACCENT | 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 );";
         }
     }
  

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLParser.java
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-06-05 16:54:38 UTC (rev 20341)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DRLParser.java	2008-06-05 17:09:22 UTC (rev 20342)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-06-04 16:12:42
+// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g 2008-06-05 13:52:35
 
 	package org.drools.lang;
 	
@@ -16,7 +16,7 @@
 
 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_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_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_WHEN", "VK_RULE",!
  "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_FROM", "VK_ACCUMULATE", "VK_INIT", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_COLLECT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "COLON", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "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", "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_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_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_WHEN", "VK_RULE",!
  "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_FROM", "VK_ACCUMULATE", "VK_INIT", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_COLLECT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "COLON", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "GRAVE_ACCENT", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
     public static final int COMMA=92;
     public static final int VT_PATTERN_TYPE=37;
@@ -24,32 +24,32 @@
     public static final int VK_DIALECT=52;
     public static final int VK_FUNCTION=63;
     public static final int END=89;
-    public static final int HexDigit=117;
+    public static final int HexDigit=118;
     public static final int VK_ATTRIBUTES=55;
     public static final int VT_EXPRESSION_CHAIN=28;
     public static final int VK_ACCUMULATE=79;
-    public static final int MISC=113;
+    public static final int MISC=114;
     public static final int VT_AND_PREFIX=21;
     public static final int VK_QUERY=61;
-    public static final int THEN=110;
+    public static final int THEN=111;
     public static final int VK_AUTO_FOCUS=47;
     public static final int DOT=87;
     public static final int VK_IMPORT=58;
     public static final int VT_SLOT=14;
     public static final int VT_PACKAGE_ID=38;
-    public static final int LEFT_SQUARE=108;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=120;
+    public static final int LEFT_SQUARE=109;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=121;
     public static final int VT_DATA_TYPE=36;
     public static final int VT_FACT=6;
     public static final int VK_MATCHES=67;
-    public static final int LEFT_CURLY=111;
+    public static final int LEFT_CURLY=112;
     public static final int DOUBLE_AMPER=98;
     public static final int LEFT_PAREN=91;
     public static final int VT_QUERY_ID=9;
     public static final int VT_ACCESSOR_PATH=34;
     public static final int VT_LABEL=8;
     public static final int VT_ENTRYPOINT_ID=12;
-    public static final int WS=115;
+    public static final int WS=116;
     public static final int VT_FIELD=33;
     public static final int VK_SALIENCE=53;
     public static final int VK_SOUNDSLIKE=69;
@@ -59,6 +59,7 @@
     public static final int VT_ACCUMULATE_INIT_CLAUSE=25;
     public static final int VK_GLOBAL=64;
     public static final int VK_REVERSE=82;
+    public static final int GRAVE_ACCENT=106;
     public static final int VK_DURATION=51;
     public static final int VT_SQUARE_CHUNK=18;
     public static final int VK_FORALL=77;
@@ -66,7 +67,7 @@
     public static final int VT_PAREN_CHUNK=19;
     public static final int VK_ENABLED=54;
     public static final int VK_RESULT=83;
-    public static final int UnicodeEscape=118;
+    public static final int UnicodeEscape=119;
     public static final int VK_PACKAGE=59;
     public static final int VT_RULE_ID=11;
     public static final int EQUAL=100;
@@ -74,17 +75,17 @@
     public static final int SEMICOLON=85;
     public static final int VK_TEMPLATE=60;
     public static final int VT_AND_IMPLICIT=20;
-    public static final int NULL=107;
+    public static final int NULL=108;
     public static final int COLON=94;
-    public static final int MULTI_LINE_COMMENT=122;
+    public static final int MULTI_LINE_COMMENT=123;
     public static final int VT_RULE_ATTRIBUTES=15;
-    public static final int RIGHT_SQUARE=109;
+    public static final int RIGHT_SQUARE=110;
     public static final int VK_AGENDA_GROUP=49;
     public static final int VT_FACT_OR=31;
     public static final int VK_NOT=72;
     public static final int VK_DATE_EXPIRES=44;
     public static final int ARROW=99;
-    public static final int FLOAT=106;
+    public static final int FLOAT=107;
     public static final int VT_SLOT_ID=13;
     public static final int VT_CURLY_CHUNK=17;
     public static final int VT_OR_PREFIX=22;
@@ -92,7 +93,7 @@
     public static final int LESS=103;
     public static final int VT_PATTERN=29;
     public static final int VK_DATE_EFFECTIVE=43;
-    public static final int EscapeSequence=116;
+    public static final int EscapeSequence=117;
     public static final int VK_EXISTS=76;
     public static final int INT=96;
     public static final int VT_BIND_FIELD=32;
@@ -103,7 +104,7 @@
     public static final int VT_FACT_BINDING=30;
     public static final int ID=86;
     public static final int NOT_EQUAL=105;
-    public static final int RIGHT_CURLY=112;
+    public static final int RIGHT_CURLY=113;
     public static final int BOOL=95;
     public static final int VT_PARAM_LIST=42;
     public static final int VT_AND_INFIX=23;
@@ -126,17 +127,17 @@
     public static final int VT_FUNCTION_ID=41;
     public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
-    public static final int EOL=114;
+    public static final int EOL=115;
     public static final int VT_IMPORT_ID=39;
     public static final int VK_ACTIVATION_GROUP=48;
     public static final int VK_INIT=80;
-    public static final int OctalEscape=119;
+    public static final int OctalEscape=120;
     public static final int VK_ACTION=81;
     public static final int VK_EXCLUDES=68;
     public static final int VK_FROM=78;
     public static final int RIGHT_PAREN=93;
     public static final int VT_TEMPLATE_ID=10;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=121;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=122;
     public static final int VK_DECLARE=62;
 
         public DRLParser(TokenStream input) {
@@ -179,7 +180,7 @@
         		this.errors.add( new GeneralParseException( "Trailing semi-colon not allowed", offset(line) ) );
         	}
         }
-        
+
         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() ) );
         }
@@ -329,11 +330,11 @@
             int alt1=2;
             int LA1_0 = input.LA(1);
 
-            if ( (LA1_0==ID) && ((((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(valid!
 ateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords!
 .TEMPLATE))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && valida
teLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {
+            if ( (LA1_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, "import") && validateLT(2, "function") )&&(valida!
 teIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords!
 .TEMPLATE))||((validateLT(1, "import") && validateLT(2, "function") )&
&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {
                 int LA1_1 = input.LA(2);
 
-                if ( (LA1_1==ID) && ((((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, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(!
 DroolsSoftKeywords.IMPORT))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))))) {
-                    int LA1_5 = input.LA(3);
+                if ( (LA1_1==ID) && ((((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(D!
 roolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {
+                    int LA1_6 = input.LA(3);
 
                     if ( ((validateIdentifierKey(DroolsSoftKeywords.PACKAGE))) ) {
                         alt1=1;
@@ -361,7 +362,7 @@
                 int alt2=2;
                 int LA2_0 = input.LA(1);
 
-                if ( (LA2_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(v!
 alidateIdentifierKey(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.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
+                if ( (LA2_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(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))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {
                     alt2=1;
                 }
 
@@ -3184,7 +3185,7 @@
             int alt31=12;
             int LA31_0 = input.LA(1);
 
-            if ( (LA31_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(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.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(Drools!
 SoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
+            if ( (LA31_0==ID) && (((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.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(Drools!
 SoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {
                 int LA31_1 = input.LA(2);
 
                 if ( (LA31_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))))) {
@@ -3244,11 +3245,8 @@
                         throw nvae;
                     }
                 }
-                else if ( (LA31_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {
-                    alt31=12;
-                }
                 else if ( (LA31_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {
-                    int LA31_4 = input.LA(3);
+                    int LA31_3 = input.LA(3);
 
                     if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {
                         alt31=1;
@@ -3259,7 +3257,7 @@
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("406:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 31, 4, input);
+                            new NoViableAltException("406:1: rule_attribute : ( salience | no_loop | agenda_group | duration | activation_group | auto_focus | date_effective | date_expires | enabled | ruleflow_group | lock_on_active | dialect );", 31, 3, input);
 
                         throw nvae;
                     }
@@ -3267,6 +3265,9 @@
                 else if ( (LA31_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {
                     alt31=1;
                 }
+                else if ( (LA31_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {
+                    alt31=12;
+                }
                 else if ( (LA31_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {
                     alt31=9;
                 }
@@ -4432,7 +4433,7 @@
                         alt40=2;
                         }
                         break;
-                    case LEFT_PAREN:
+                    case ID:
                         {
                         int LA40_4 = input.LA(4);
 
@@ -4451,7 +4452,7 @@
                         }
                         }
                         break;
-                    case ID:
+                    case LEFT_PAREN:
                         {
                         int LA40_5 = input.LA(4);
 
@@ -4961,6 +4962,7 @@
                         case LESS:
                         case LESS_EQUAL:
                         case NOT_EQUAL:
+                        case GRAVE_ACCENT:
                         case FLOAT:
                         case NULL:
                         case LEFT_SQUARE:
@@ -6070,7 +6072,7 @@
             if ( (LA51_0==ID) ) {
                 int LA51_1 = input.LA(2);
 
-                if ( (LA51_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.OR))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))))) {
+                if ( (LA51_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
                     int LA51_3 = input.LA(3);
 
                     if ( (LA51_3==SEMICOLON||LA51_3==END||(LA51_3>=COMMA && LA51_3<=RIGHT_PAREN)||(LA51_3>=DOUBLE_PIPE && LA51_3<=DOUBLE_AMPER)||LA51_3==THEN||LA51_3==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.FROM)))) {
@@ -6090,10 +6092,10 @@
                             alt51=1;
                         }
                     }
-                    else if ( (LA51_3==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                    else if ( (LA51_3==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.OR))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))))) {
                         int LA51_8 = input.LA(4);
 
-                        if ( (LA51_8==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.OR))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))))) {
+                        if ( (LA51_8==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
                             int LA51_10 = input.LA(5);
 
                             if ( (LA51_10==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
@@ -6124,10 +6126,10 @@
                                     alt51=1;
                                 }
                             }
-                            else if ( (LA51_10==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+                            else if ( (LA51_10==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.OR))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))))) {
                                 int LA51_13 = input.LA(6);
 
-                                if ( (LA51_13==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.OR))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))))) {
+                                if ( (LA51_13==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.FROM))||(validateIdentifierKey(DroolsSoftKeywords.EXISTS))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
                                     int LA51_15 = input.LA(7);
 
                                     if ( ((validateIdentifierKey(DroolsSoftKeywords.FROM))) ) {
@@ -6304,6 +6306,7 @@
                             case LESS:
                             case LESS_EQUAL:
                             case NOT_EQUAL:
+                            case GRAVE_ACCENT:
                             case FLOAT:
                             case NULL:
                             case LEFT_SQUARE:
@@ -8508,11 +8511,11 @@
             if ( (LA71_0==ID) ) {
                 int LA71_1 = input.LA(2);
 
-                if ( ((LA71_1>=ID && LA71_1<=DOT)||LA71_1==COLON||(LA71_1>=EQUAL && LA71_1<=NOT_EQUAL)||LA71_1==LEFT_SQUARE) ) {
+                if ( ((LA71_1>=ID && LA71_1<=DOT)||LA71_1==COLON||(LA71_1>=EQUAL && LA71_1<=GRAVE_ACCENT)||LA71_1==LEFT_SQUARE) ) {
                     alt71=2;
                 }
                 else if ( (LA71_1==LEFT_PAREN) ) {
-                    int LA71_13 = input.LA(3);
+                    int LA71_14 = input.LA(3);
 
                     if ( ((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
                         alt71=1;
@@ -8523,7 +8526,7 @@
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("653:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 71, 13, input);
+                            new NoViableAltException("653:1: unary_constr options {k=2; } : ( eval_key paren_chunk | field_constraint | LEFT_PAREN or_constr RIGHT_PAREN );", 71, 14, input);
 
                         throw nvae;
                     }
@@ -8665,7 +8668,7 @@
                 if ( (LA73_1==COLON) ) {
                     alt73=1;
                 }
-                else if ( ((LA73_1>=ID && LA73_1<=DOT)||LA73_1==LEFT_PAREN||(LA73_1>=EQUAL && LA73_1<=NOT_EQUAL)||LA73_1==LEFT_SQUARE) ) {
+                else if ( ((LA73_1>=ID && LA73_1<=DOT)||LA73_1==LEFT_PAREN||(LA73_1>=EQUAL && LA73_1<=GRAVE_ACCENT)||LA73_1==LEFT_SQUARE) ) {
                     alt73=2;
                 }
                 else {
@@ -8701,7 +8704,7 @@
                     int alt72=3;
                     int LA72_0 = input.LA(1);
 
-                    if ( (LA72_0==ID||LA72_0==LEFT_PAREN||(LA72_0>=EQUAL && LA72_0<=NOT_EQUAL)) ) {
+                    if ( (LA72_0==ID||LA72_0==LEFT_PAREN||(LA72_0>=EQUAL && LA72_0<=GRAVE_ACCENT)) ) {
                         alt72=1;
                     }
                     else if ( (LA72_0==ARROW) ) {
@@ -9149,23 +9152,16 @@
             switch ( input.LA(1) ) {
             case ID:
                 {
-                switch ( input.LA(2) ) {
-                case STRING:
-                case BOOL:
-                case INT:
-                case FLOAT:
-                case NULL:
-                case LEFT_SQUARE:
-                    {
-                    alt76=2;
-                    }
-                    break;
-                case ID:
-                    {
+                int LA76_1 = input.LA(2);
+
+                if ( (LA76_1==ID) ) {
                     int LA76_10 = input.LA(3);
 
-                    if ( (LA76_10==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        int LA76_13 = input.LA(4);
+                    if ( (LA76_10==ID||LA76_10==STRING||(LA76_10>=BOOL && LA76_10<=INT)||(LA76_10>=FLOAT && LA76_10<=NULL)) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                        alt76=2;
+                    }
+                    else if ( (LA76_10==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                        int LA76_16 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
                             alt76=1;
@@ -9176,14 +9172,11 @@
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 13, input);
+                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 16, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA76_10==ID||LA76_10==STRING||(LA76_10>=BOOL && LA76_10<=INT)||(LA76_10>=FLOAT && LA76_10<=NULL)) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                        alt76=2;
-                    }
                     else if ( (LA76_10==DOT||(LA76_10>=COMMA && LA76_10<=RIGHT_PAREN)||(LA76_10>=DOUBLE_PIPE && LA76_10<=DOUBLE_AMPER)||LA76_10==LEFT_SQUARE) ) {
                         alt76=2;
                     }
@@ -9194,14 +9187,15 @@
 
                         throw nvae;
                     }
-                    }
-                    break;
-                case LEFT_PAREN:
-                    {
+                }
+                else if ( (LA76_1==STRING||(LA76_1>=BOOL && LA76_1<=INT)||(LA76_1>=FLOAT && LA76_1<=NULL)) ) {
+                    alt76=2;
+                }
+                else if ( (LA76_1==LEFT_PAREN) ) {
                     switch ( input.LA(3) ) {
                     case ID:
                         {
-                        int LA76_22 = input.LA(4);
+                        int LA76_23 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
                             alt76=1;
@@ -9212,15 +9206,38 @@
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 22, input);
+                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 23, input);
 
                             throw nvae;
                         }
                         }
                         break;
+                    case STRING:
+                    case BOOL:
+                    case INT:
+                    case FLOAT:
+                    case NULL:
+                        {
+                        int LA76_24 = input.LA(4);
+
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
+                            alt76=1;
+                        }
+                        else if ( (true) ) {
+                            alt76=2;
+                        }
+                        else {
+                            if (backtracking>0) {failed=true; return retval;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 24, input);
+
+                            throw nvae;
+                        }
+                        }
+                        break;
                     case LEFT_PAREN:
                         {
-                        int LA76_23 = input.LA(4);
+                        int LA76_25 = input.LA(4);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
                             alt76=1;
@@ -9231,7 +9248,7 @@
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 23, input);
+                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 25, input);
 
                             throw nvae;
                         }
@@ -9334,6 +9351,7 @@
                     case LESS:
                     case LESS_EQUAL:
                     case NOT_EQUAL:
+                    case GRAVE_ACCENT:
                     case LEFT_SQUARE:
                     case RIGHT_SQUARE:
                     case THEN:
@@ -9353,29 +9371,6 @@
                         alt76=2;
                         }
                         break;
-                    case STRING:
-                    case BOOL:
-                    case INT:
-                    case FLOAT:
-                    case NULL:
-                        {
-                        int LA76_25 = input.LA(4);
-
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
-                            alt76=1;
-                        }
-                        else if ( (true) ) {
-                            alt76=2;
-                        }
-                        else {
-                            if (backtracking>0) {failed=true; return retval;}
-                            NoViableAltException nvae =
-                                new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 25, input);
-
-                            throw nvae;
-                        }
-                        }
-                        break;
                     default:
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
@@ -9384,16 +9379,17 @@
                         throw nvae;
                     }
 
-                    }
-                    break;
-                default:
+                }
+                else if ( (LA76_1==GRAVE_ACCENT) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                    alt76=2;
+                }
+                else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
                         new NoViableAltException("681:1: constraint_expression options {k=3; } : ( compound_operator | simple_operator | LEFT_PAREN or_restr_connective RIGHT_PAREN );", 76, 1, input);
 
                     throw nvae;
                 }
-
                 }
                 break;
             case EQUAL:
@@ -9402,6 +9398,7 @@
             case LESS:
             case LESS_EQUAL:
             case NOT_EQUAL:
+            case GRAVE_ACCENT:
                 {
                 alt76=2;
                 }
@@ -9492,7 +9489,7 @@
     };
 
     // $ANTLR start simple_operator
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID ( square_chunk )? ) expression_value ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:689:1: simple_operator : ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) expression_value ;
     public final simple_operator_return simple_operator() throws RecognitionException {
         simple_operator_return retval = new simple_operator_return();
         retval.start = input.LT(1);
@@ -9506,7 +9503,11 @@
         Token LESS_EQUAL230=null;
         Token NOT_EQUAL231=null;
         Token ID237=null;
-        Token ID244=null;
+        Token GRAVE_ACCENT238=null;
+        Token ID239=null;
+        Token ID246=null;
+        Token GRAVE_ACCENT247=null;
+        Token ID248=null;
         not_key_return not_key232 = null;
 
         contains_key_return contains_key233 = null;
@@ -9517,21 +9518,21 @@
 
         memberof_key_return memberof_key236 = null;
 
-        square_chunk_return square_chunk238 = null;
+        square_chunk_return square_chunk240 = null;
 
-        contains_key_return contains_key239 = null;
+        contains_key_return contains_key241 = null;
 
-        excludes_key_return excludes_key240 = null;
+        excludes_key_return excludes_key242 = null;
 
-        matches_key_return matches_key241 = null;
+        matches_key_return matches_key243 = null;
 
-        soundslike_key_return soundslike_key242 = null;
+        soundslike_key_return soundslike_key244 = null;
 
-        memberof_key_return memberof_key243 = null;
+        memberof_key_return memberof_key245 = null;
 
-        square_chunk_return square_chunk245 = null;
+        square_chunk_return square_chunk249 = null;
 
-        expression_value_return expression_value246 = null;
+        expression_value_return expression_value250 = null;
 
 
         Object EQUAL226_tree=null;
@@ -9541,90 +9542,99 @@
         Object LESS_EQUAL230_tree=null;
         Object NOT_EQUAL231_tree=null;
         Object ID237_tree=null;
-        Object ID244_tree=null;
+        Object GRAVE_ACCENT238_tree=null;
+        Object ID239_tree=null;
+        Object ID246_tree=null;
+        Object GRAVE_ACCENT247_tree=null;
+        Object ID248_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID ( square_chunk )? ) expression_value )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID ( square_chunk )? ) expression_value
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:2: ( ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) expression_value )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) expression_value
             {
             root_0 = (Object)adaptor.nil();
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID ( square_chunk )? )
-            int alt80=13;
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk )
+            int alt78=14;
             switch ( input.LA(1) ) {
             case EQUAL:
                 {
-                alt80=1;
+                alt78=1;
                 }
                 break;
             case GREATER:
                 {
-                alt80=2;
+                alt78=2;
                 }
                 break;
             case GREATER_EQUAL:
                 {
-                alt80=3;
+                alt78=3;
                 }
                 break;
             case LESS:
                 {
-                alt80=4;
+                alt78=4;
                 }
                 break;
             case LESS_EQUAL:
                 {
-                alt80=5;
+                alt78=5;
                 }
                 break;
             case NOT_EQUAL:
                 {
-                alt80=6;
+                alt78=6;
                 }
                 break;
             case ID:
                 {
-                int LA80_7 = input.LA(2);
+                int LA78_7 = input.LA(2);
 
-                if ( (LA80_7==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt80=7;
+                if ( (LA78_7==ID||LA78_7==GRAVE_ACCENT) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                    alt78=7;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                    alt80=8;
+                    alt78=8;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))) ) {
-                    alt80=9;
+                    alt78=9;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                    alt80=10;
+                    alt78=10;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                    alt80=11;
+                    alt78=11;
                 }
                 else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                    alt80=12;
+                    alt78=12;
                 }
                 else if ( (true) ) {
-                    alt80=13;
+                    alt78=13;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID ( square_chunk )? )", 80, 7, input);
+                        new NoViableAltException("690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk )", 78, 7, input);
 
                     throw nvae;
                 }
                 }
                 break;
+            case GRAVE_ACCENT:
+                {
+                alt78=14;
+                }
+                break;
             default:
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID ( square_chunk )? )", 80, 0, input);
+                    new NoViableAltException("690:4: ( EQUAL | GREATER | GREATER_EQUAL | LESS | LESS_EQUAL | NOT_EQUAL | not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk ) | contains_key | excludes_key | matches_key | soundslike_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk )", 78, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt80) {
+            switch (alt78) {
                 case 1 :
                     // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:690:5: EQUAL
                     {
@@ -9698,51 +9708,54 @@
                     }
                     break;
                 case 7 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:4: not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? )
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:4: not_key ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk )
                     {
                     pushFollow(FOLLOW_not_key_in_simple_operator3020);
                     not_key232=not_key();
                     _fsp--;
                     if (failed) return retval;
                     if ( backtracking==0 ) adaptor.addChild(root_0, not_key232.getTree());
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:12: ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? )
-                    int alt78=5;
-                    int LA78_0 = input.LA(1);
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:12: ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk )
+                    int alt77=6;
+                    int LA77_0 = input.LA(1);
 
-                    if ( (LA78_0==ID) ) {
-                        int LA78_1 = input.LA(2);
+                    if ( (LA77_0==ID) ) {
+                        int LA77_1 = input.LA(2);
 
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
-                            alt78=1;
+                            alt77=1;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
-                            alt78=2;
+                            alt77=2;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
-                            alt78=3;
+                            alt77=3;
                         }
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
-                            alt78=4;
+                            alt77=4;
                         }
                         else if ( (true) ) {
-                            alt78=5;
+                            alt77=5;
                         }
                         else {
                             if (backtracking>0) {failed=true; return retval;}
                             NoViableAltException nvae =
-                                new NoViableAltException("696:12: ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? )", 78, 1, input);
+                                new NoViableAltException("696:12: ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk )", 77, 1, input);
 
                             throw nvae;
                         }
                     }
+                    else if ( (LA77_0==GRAVE_ACCENT) ) {
+                        alt77=6;
+                    }
                     else {
                         if (backtracking>0) {failed=true; return retval;}
                         NoViableAltException nvae =
-                            new NoViableAltException("696:12: ( contains_key | soundslike_key | matches_key | memberof_key | ID ( square_chunk )? )", 78, 0, input);
+                            new NoViableAltException("696:12: ( contains_key | soundslike_key | matches_key | memberof_key | ID | GRAVE_ACCENT ID square_chunk )", 77, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt78) {
+                    switch (alt77) {
                         case 1 :
                             // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:13: contains_key
                             {
@@ -9788,37 +9801,34 @@
                             }
                             break;
                         case 5 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:70: ID ( square_chunk )?
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:71: ID
                             {
                             ID237=(Token)input.LT(1);
-                            match(input,ID,FOLLOW_ID_in_simple_operator3035); if (failed) return retval;
+                            match(input,ID,FOLLOW_ID_in_simple_operator3036); if (failed) return retval;
                             if ( backtracking==0 ) {
                             ID237_tree = (Object)adaptor.create(ID237);
                             root_0 = (Object)adaptor.becomeRoot(ID237_tree, root_0);
                             }
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:74: ( square_chunk )?
-                            int alt77=2;
-                            int LA77_0 = input.LA(1);
 
-                            if ( (LA77_0==LEFT_SQUARE) ) {
-                                alt77=1;
                             }
-                            switch (alt77) {
-                                case 1 :
-                                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:74: square_chunk
-                                    {
-                                    pushFollow(FOLLOW_square_chunk_in_simple_operator3038);
-                                    square_chunk238=square_chunk();
-                                    _fsp--;
-                                    if (failed) return retval;
-                                    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk238.getTree());
-
-                                    }
-                                    break;
-
+                            break;
+                        case 6 :
+                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:696:77: GRAVE_ACCENT ID square_chunk
+                            {
+                            GRAVE_ACCENT238=(Token)input.LT(1);
+                            match(input,GRAVE_ACCENT,FOLLOW_GRAVE_ACCENT_in_simple_operator3041); if (failed) return retval;
+                            ID239=(Token)input.LT(1);
+                            match(input,ID,FOLLOW_ID_in_simple_operator3044); if (failed) return retval;
+                            if ( backtracking==0 ) {
+                            ID239_tree = (Object)adaptor.create(ID239);
+                            root_0 = (Object)adaptor.becomeRoot(ID239_tree, root_0);
                             }
+                            pushFollow(FOLLOW_square_chunk_in_simple_operator3047);
+                            square_chunk240=square_chunk();
+                            _fsp--;
+                            if (failed) return retval;
+                            if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk240.getTree());
 
-
                             }
                             break;
 
@@ -9830,100 +9840,97 @@
                 case 8 :
                     // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:697:4: contains_key
                     {
-                    pushFollow(FOLLOW_contains_key_in_simple_operator3045);
-                    contains_key239=contains_key();
+                    pushFollow(FOLLOW_contains_key_in_simple_operator3053);
+                    contains_key241=contains_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key239.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(contains_key241.getTree(), root_0);
 
                     }
                     break;
                 case 9 :
                     // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:698:4: excludes_key
                     {
-                    pushFollow(FOLLOW_excludes_key_in_simple_operator3051);
-                    excludes_key240=excludes_key();
+                    pushFollow(FOLLOW_excludes_key_in_simple_operator3059);
+                    excludes_key242=excludes_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(excludes_key240.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(excludes_key242.getTree(), root_0);
 
                     }
                     break;
                 case 10 :
                     // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:699:4: matches_key
                     {
-                    pushFollow(FOLLOW_matches_key_in_simple_operator3057);
-                    matches_key241=matches_key();
+                    pushFollow(FOLLOW_matches_key_in_simple_operator3065);
+                    matches_key243=matches_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key241.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(matches_key243.getTree(), root_0);
 
                     }
                     break;
                 case 11 :
                     // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:700:4: soundslike_key
                     {
-                    pushFollow(FOLLOW_soundslike_key_in_simple_operator3063);
-                    soundslike_key242=soundslike_key();
+                    pushFollow(FOLLOW_soundslike_key_in_simple_operator3071);
+                    soundslike_key244=soundslike_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key242.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(soundslike_key244.getTree(), root_0);
 
                     }
                     break;
                 case 12 :
                     // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:701:4: memberof_key
                     {
-                    pushFollow(FOLLOW_memberof_key_in_simple_operator3069);
-                    memberof_key243=memberof_key();
+                    pushFollow(FOLLOW_memberof_key_in_simple_operator3077);
+                    memberof_key245=memberof_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key243.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(memberof_key245.getTree(), root_0);
 
                     }
                     break;
                 case 13 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:702:4: ID ( square_chunk )?
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:702:4: ID
                     {
-                    ID244=(Token)input.LT(1);
-                    match(input,ID,FOLLOW_ID_in_simple_operator3075); if (failed) return retval;
+                    ID246=(Token)input.LT(1);
+                    match(input,ID,FOLLOW_ID_in_simple_operator3083); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    ID244_tree = (Object)adaptor.create(ID244);
-                    root_0 = (Object)adaptor.becomeRoot(ID244_tree, root_0);
+                    ID246_tree = (Object)adaptor.create(ID246);
+                    root_0 = (Object)adaptor.becomeRoot(ID246_tree, root_0);
                     }
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:702:8: ( square_chunk )?
-                    int alt79=2;
-                    int LA79_0 = input.LA(1);
 
-                    if ( (LA79_0==LEFT_SQUARE) ) {
-                        alt79=1;
                     }
-                    switch (alt79) {
-                        case 1 :
-                            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:702:8: square_chunk
-                            {
-                            pushFollow(FOLLOW_square_chunk_in_simple_operator3078);
-                            square_chunk245=square_chunk();
-                            _fsp--;
-                            if (failed) return retval;
-                            if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk245.getTree());
-
-                            }
-                            break;
-
+                    break;
+                case 14 :
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:703:4: GRAVE_ACCENT ID square_chunk
+                    {
+                    GRAVE_ACCENT247=(Token)input.LT(1);
+                    match(input,GRAVE_ACCENT,FOLLOW_GRAVE_ACCENT_in_simple_operator3089); if (failed) return retval;
+                    ID248=(Token)input.LT(1);
+                    match(input,ID,FOLLOW_ID_in_simple_operator3092); if (failed) return retval;
+                    if ( backtracking==0 ) {
+                    ID248_tree = (Object)adaptor.create(ID248);
+                    root_0 = (Object)adaptor.becomeRoot(ID248_tree, root_0);
                     }
+                    pushFollow(FOLLOW_square_chunk_in_simple_operator3095);
+                    square_chunk249=square_chunk();
+                    _fsp--;
+                    if (failed) return retval;
+                    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk249.getTree());
 
-
                     }
                     break;
 
             }
 
-            pushFollow(FOLLOW_expression_value_in_simple_operator3083);
-            expression_value246=expression_value();
+            pushFollow(FOLLOW_expression_value_in_simple_operator3099);
+            expression_value250=expression_value();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value246.getTree());
+            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value250.getTree());
 
             }
 
@@ -9950,54 +9957,54 @@
     };
 
     // $ANTLR start compound_operator
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:707:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:1: compound_operator : ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN ;
     public final compound_operator_return compound_operator() throws RecognitionException {
         compound_operator_return retval = new compound_operator_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN250=null;
-        Token COMMA252=null;
-        Token RIGHT_PAREN254=null;
-        in_key_return in_key247 = null;
+        Token LEFT_PAREN254=null;
+        Token COMMA256=null;
+        Token RIGHT_PAREN258=null;
+        in_key_return in_key251 = null;
 
-        not_key_return not_key248 = null;
+        not_key_return not_key252 = null;
 
-        in_key_return in_key249 = null;
+        in_key_return in_key253 = null;
 
-        expression_value_return expression_value251 = null;
+        expression_value_return expression_value255 = null;
 
-        expression_value_return expression_value253 = null;
+        expression_value_return expression_value257 = null;
 
 
-        Object LEFT_PAREN250_tree=null;
-        Object COMMA252_tree=null;
-        Object RIGHT_PAREN254_tree=null;
+        Object LEFT_PAREN254_tree=null;
+        Object COMMA256_tree=null;
+        Object RIGHT_PAREN258_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:4: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:2: ( ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: ( in_key | not_key in_key ) LEFT_PAREN expression_value ( COMMA expression_value )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:4: ( in_key | not_key in_key )
-            int alt81=2;
-            int LA81_0 = input.LA(1);
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:4: ( in_key | not_key in_key )
+            int alt79=2;
+            int LA79_0 = input.LA(1);
 
-            if ( (LA81_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.NOT))||(validateIdentifierKey(DroolsSoftKeywords.IN))))) {
-                int LA81_1 = input.LA(2);
+            if ( (LA79_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IN))||(validateIdentifierKey(DroolsSoftKeywords.NOT))))) {
+                int LA79_1 = input.LA(2);
 
-                if ( (LA81_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.IN)))) {
-                    alt81=1;
+                if ( (LA79_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
+                    alt79=2;
                 }
-                else if ( (LA81_1==ID) && ((validateIdentifierKey(DroolsSoftKeywords.NOT)))) {
-                    alt81=2;
+                else if ( (LA79_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.IN)))) {
+                    alt79=1;
                 }
                 else {
                     if (backtracking>0) {failed=true; return retval;}
                     NoViableAltException nvae =
-                        new NoViableAltException("708:4: ( in_key | not_key in_key )", 81, 1, input);
+                        new NoViableAltException("709:4: ( in_key | not_key in_key )", 79, 1, input);
 
                     throw nvae;
                 }
@@ -10005,84 +10012,84 @@
             else {
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("708:4: ( in_key | not_key in_key )", 81, 0, input);
+                    new NoViableAltException("709:4: ( in_key | not_key in_key )", 79, 0, input);
 
                 throw nvae;
             }
-            switch (alt81) {
+            switch (alt79) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:6: in_key
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:6: in_key
                     {
-                    pushFollow(FOLLOW_in_key_in_compound_operator3098);
-                    in_key247=in_key();
+                    pushFollow(FOLLOW_in_key_in_compound_operator3114);
+                    in_key251=in_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key247.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key251.getTree(), root_0);
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:16: not_key in_key
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:16: not_key in_key
                     {
-                    pushFollow(FOLLOW_not_key_in_compound_operator3103);
-                    not_key248=not_key();
+                    pushFollow(FOLLOW_not_key_in_compound_operator3119);
+                    not_key252=not_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key248.getTree());
-                    pushFollow(FOLLOW_in_key_in_compound_operator3105);
-                    in_key249=in_key();
+                    if ( backtracking==0 ) adaptor.addChild(root_0, not_key252.getTree());
+                    pushFollow(FOLLOW_in_key_in_compound_operator3121);
+                    in_key253=in_key();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key249.getTree(), root_0);
+                    if ( backtracking==0 ) root_0 = (Object)adaptor.becomeRoot(in_key253.getTree(), root_0);
 
                     }
                     break;
 
             }
 
-            LEFT_PAREN250=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator3110); if (failed) return retval;
-            pushFollow(FOLLOW_expression_value_in_compound_operator3113);
-            expression_value251=expression_value();
+            LEFT_PAREN254=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_compound_operator3126); if (failed) return retval;
+            pushFollow(FOLLOW_expression_value_in_compound_operator3129);
+            expression_value255=expression_value();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value251.getTree());
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:63: ( COMMA expression_value )*
-            loop82:
+            if ( backtracking==0 ) adaptor.addChild(root_0, expression_value255.getTree());
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:63: ( COMMA expression_value )*
+            loop80:
             do {
-                int alt82=2;
-                int LA82_0 = input.LA(1);
+                int alt80=2;
+                int LA80_0 = input.LA(1);
 
-                if ( (LA82_0==COMMA) ) {
-                    alt82=1;
+                if ( (LA80_0==COMMA) ) {
+                    alt80=1;
                 }
 
 
-                switch (alt82) {
+                switch (alt80) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:708:65: COMMA expression_value
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:709:65: COMMA expression_value
             	    {
-            	    COMMA252=(Token)input.LT(1);
-            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator3117); if (failed) return retval;
-            	    pushFollow(FOLLOW_expression_value_in_compound_operator3120);
-            	    expression_value253=expression_value();
+            	    COMMA256=(Token)input.LT(1);
+            	    match(input,COMMA,FOLLOW_COMMA_in_compound_operator3133); if (failed) return retval;
+            	    pushFollow(FOLLOW_expression_value_in_compound_operator3136);
+            	    expression_value257=expression_value();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, expression_value253.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, expression_value257.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop82;
+            	    break loop80;
                 }
             } while (true);
 
-            RIGHT_PAREN254=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator3125); if (failed) return retval;
+            RIGHT_PAREN258=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_compound_operator3141); if (failed) return retval;
             if ( backtracking==0 ) {
-            RIGHT_PAREN254_tree = (Object)adaptor.create(RIGHT_PAREN254);
-            adaptor.addChild(root_0, RIGHT_PAREN254_tree);
+            RIGHT_PAREN258_tree = (Object)adaptor.create(RIGHT_PAREN258);
+            adaptor.addChild(root_0, RIGHT_PAREN258_tree);
             }
 
             }
@@ -10110,28 +10117,28 @@
     };
 
     // $ANTLR start expression_value
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:711:1: expression_value : ( accessor_path | literal_constraint | paren_chunk );
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:712:1: expression_value : ( accessor_path | literal_constraint | paren_chunk );
     public final expression_value_return expression_value() throws RecognitionException {
         expression_value_return retval = new expression_value_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        accessor_path_return accessor_path255 = null;
+        accessor_path_return accessor_path259 = null;
 
-        literal_constraint_return literal_constraint256 = null;
+        literal_constraint_return literal_constraint260 = null;
 
-        paren_chunk_return paren_chunk257 = null;
+        paren_chunk_return paren_chunk261 = null;
 
 
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:712:2: ( accessor_path | literal_constraint | paren_chunk )
-            int alt83=3;
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:2: ( accessor_path | literal_constraint | paren_chunk )
+            int alt81=3;
             switch ( input.LA(1) ) {
             case ID:
                 {
-                alt83=1;
+                alt81=1;
                 }
                 break;
             case STRING:
@@ -10140,59 +10147,59 @@
             case FLOAT:
             case NULL:
                 {
-                alt83=2;
+                alt81=2;
                 }
                 break;
             case LEFT_PAREN:
                 {
-                alt83=3;
+                alt81=3;
                 }
                 break;
             default:
                 if (backtracking>0) {failed=true; return retval;}
                 NoViableAltException nvae =
-                    new NoViableAltException("711:1: expression_value : ( accessor_path | literal_constraint | paren_chunk );", 83, 0, input);
+                    new NoViableAltException("712:1: expression_value : ( accessor_path | literal_constraint | paren_chunk );", 81, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt83) {
+            switch (alt81) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:712:4: accessor_path
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:4: accessor_path
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_accessor_path_in_expression_value3136);
-                    accessor_path255=accessor_path();
+                    pushFollow(FOLLOW_accessor_path_in_expression_value3152);
+                    accessor_path259=accessor_path();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, accessor_path255.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, accessor_path259.getTree());
 
                     }
                     break;
                 case 2 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:713:4: literal_constraint
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:714:4: literal_constraint
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_literal_constraint_in_expression_value3141);
-                    literal_constraint256=literal_constraint();
+                    pushFollow(FOLLOW_literal_constraint_in_expression_value3157);
+                    literal_constraint260=literal_constraint();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, literal_constraint256.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, literal_constraint260.getTree());
 
                     }
                     break;
                 case 3 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:714:4: paren_chunk
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:715:4: paren_chunk
                     {
                     root_0 = (Object)adaptor.nil();
 
-                    pushFollow(FOLLOW_paren_chunk_in_expression_value3147);
-                    paren_chunk257=paren_chunk();
+                    pushFollow(FOLLOW_paren_chunk_in_expression_value3163);
+                    paren_chunk261=paren_chunk();
                     _fsp--;
                     if (failed) return retval;
-                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk257.getTree());
+                    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk261.getTree());
 
                     }
                     break;
@@ -10221,27 +10228,27 @@
     };
 
     // $ANTLR start literal_constraint
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:717:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:1: literal_constraint : ( STRING | INT | FLOAT | BOOL | NULL );
     public final literal_constraint_return literal_constraint() throws RecognitionException {
         literal_constraint_return retval = new literal_constraint_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token set258=null;
+        Token set262=null;
 
-        Object set258_tree=null;
+        Object set262_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:718:2: ( STRING | INT | FLOAT | BOOL | NULL )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:719:2: ( STRING | INT | FLOAT | BOOL | NULL )
             // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:
             {
             root_0 = (Object)adaptor.nil();
 
-            set258=(Token)input.LT(1);
+            set262=(Token)input.LT(1);
             if ( input.LA(1)==STRING||(input.LA(1)>=BOOL && input.LA(1)<=INT)||(input.LA(1)>=FLOAT && input.LA(1)<=NULL) ) {
                 input.consume();
-                if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set258));
+                if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set262));
                 errorRecovery=false;failed=false;
             }
             else {
@@ -10277,91 +10284,91 @@
     };
 
     // $ANTLR start pattern_type
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:725:1: pattern_type : ID ( DOT ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:1: pattern_type : ID ( DOT ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final pattern_type_return pattern_type() throws RecognitionException {
         pattern_type_return retval = new pattern_type_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID259=null;
-        Token DOT260=null;
-        Token ID261=null;
-        dimension_definition_return dimension_definition262 = null;
+        Token ID263=null;
+        Token DOT264=null;
+        Token ID265=null;
+        dimension_definition_return dimension_definition266 = null;
 
 
-        Object ID259_tree=null;
-        Object DOT260_tree=null;
-        Object ID261_tree=null;
+        Object ID263_tree=null;
+        Object DOT264_tree=null;
+        Object ID265_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:2: ( ID ( DOT ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:4: ID ( DOT ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:2: ( ID ( DOT ID )* ( dimension_definition )* -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:4: ID ( DOT ID )* ( dimension_definition )*
             {
-            ID259=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_pattern_type3189); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID259);
+            ID263=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_pattern_type3205); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID263);
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:7: ( DOT ID )*
-            loop84:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:7: ( DOT ID )*
+            loop82:
             do {
-                int alt84=2;
-                int LA84_0 = input.LA(1);
+                int alt82=2;
+                int LA82_0 = input.LA(1);
 
-                if ( (LA84_0==DOT) ) {
-                    alt84=1;
+                if ( (LA82_0==DOT) ) {
+                    alt82=1;
                 }
 
 
-                switch (alt84) {
+                switch (alt82) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:9: DOT ID
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:9: DOT ID
             	    {
-            	    DOT260=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_pattern_type3193); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(DOT260);
+            	    DOT264=(Token)input.LT(1);
+            	    match(input,DOT,FOLLOW_DOT_in_pattern_type3209); if (failed) return retval;
+            	    if ( backtracking==0 ) stream_DOT.add(DOT264);
 
-            	    ID261=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_pattern_type3195); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(ID261);
+            	    ID265=(Token)input.LT(1);
+            	    match(input,ID,FOLLOW_ID_in_pattern_type3211); if (failed) return retval;
+            	    if ( backtracking==0 ) stream_ID.add(ID265);
 
 
             	    }
             	    break;
 
             	default :
-            	    break loop84;
+            	    break loop82;
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:19: ( dimension_definition )*
-            loop85:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:19: ( dimension_definition )*
+            loop83:
             do {
-                int alt85=2;
-                int LA85_0 = input.LA(1);
+                int alt83=2;
+                int LA83_0 = input.LA(1);
 
-                if ( (LA85_0==LEFT_SQUARE) ) {
-                    alt85=1;
+                if ( (LA83_0==LEFT_SQUARE) ) {
+                    alt83=1;
                 }
 
 
-                switch (alt85) {
+                switch (alt83) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:726:19: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:19: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type3200);
-            	    dimension_definition262=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_pattern_type3216);
+            	    dimension_definition266=dimension_definition();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition262.getTree());
+            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition266.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop85;
+            	    break loop83;
                 }
             } while (true);
 
@@ -10377,9 +10384,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 727:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+            // 728:3: -> ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:6: ^( VT_PATTERN_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_PATTERN_TYPE, "VT_PATTERN_TYPE"), root_1);
@@ -10392,7 +10399,7 @@
 
                 }
                 stream_ID.reset();
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:727:28: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:728:28: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.next());
 
@@ -10431,97 +10438,97 @@
     };
 
     // $ANTLR start data_type
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:730:1: data_type : ID ( DOT ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:1: data_type : ID ( DOT ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) ;
     public final data_type_return data_type() throws RecognitionException {
         data_type_return retval = new data_type_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID263=null;
-        Token DOT264=null;
-        Token ID265=null;
-        dimension_definition_return dimension_definition266 = null;
+        Token ID267=null;
+        Token DOT268=null;
+        Token ID269=null;
+        dimension_definition_return dimension_definition270 = null;
 
 
-        Object ID263_tree=null;
-        Object DOT264_tree=null;
-        Object ID265_tree=null;
+        Object ID267_tree=null;
+        Object DOT268_tree=null;
+        Object ID269_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_dimension_definition=new RewriteRuleSubtreeStream(adaptor,"rule dimension_definition");
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:2: ( ID ( DOT ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:4: ID ( DOT ID )* ( dimension_definition )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:2: ( ID ( DOT ID )* ( dimension_definition )* -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:4: ID ( DOT ID )* ( dimension_definition )*
             {
-            ID263=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_data_type3226); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID263);
+            ID267=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_data_type3242); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID267);
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:7: ( DOT ID )*
-            loop86:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:7: ( DOT ID )*
+            loop84:
             do {
-                int alt86=2;
-                int LA86_0 = input.LA(1);
+                int alt84=2;
+                int LA84_0 = input.LA(1);
 
-                if ( (LA86_0==DOT) ) {
-                    alt86=1;
+                if ( (LA84_0==DOT) ) {
+                    alt84=1;
                 }
 
 
-                switch (alt86) {
+                switch (alt84) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:9: DOT ID
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:9: DOT ID
             	    {
-            	    DOT264=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_data_type3230); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(DOT264);
+            	    DOT268=(Token)input.LT(1);
+            	    match(input,DOT,FOLLOW_DOT_in_data_type3246); if (failed) return retval;
+            	    if ( backtracking==0 ) stream_DOT.add(DOT268);
 
-            	    ID265=(Token)input.LT(1);
-            	    match(input,ID,FOLLOW_ID_in_data_type3232); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_ID.add(ID265);
+            	    ID269=(Token)input.LT(1);
+            	    match(input,ID,FOLLOW_ID_in_data_type3248); if (failed) return retval;
+            	    if ( backtracking==0 ) stream_ID.add(ID269);
 
 
             	    }
             	    break;
 
             	default :
-            	    break loop86;
+            	    break loop84;
                 }
             } while (true);
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:19: ( dimension_definition )*
-            loop87:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:19: ( dimension_definition )*
+            loop85:
             do {
-                int alt87=2;
-                int LA87_0 = input.LA(1);
+                int alt85=2;
+                int LA85_0 = input.LA(1);
 
-                if ( (LA87_0==LEFT_SQUARE) ) {
-                    alt87=1;
+                if ( (LA85_0==LEFT_SQUARE) ) {
+                    alt85=1;
                 }
 
 
-                switch (alt87) {
+                switch (alt85) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:731:19: dimension_definition
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:19: dimension_definition
             	    {
-            	    pushFollow(FOLLOW_dimension_definition_in_data_type3237);
-            	    dimension_definition266=dimension_definition();
+            	    pushFollow(FOLLOW_dimension_definition_in_data_type3253);
+            	    dimension_definition270=dimension_definition();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition266.getTree());
+            	    if ( backtracking==0 ) stream_dimension_definition.add(dimension_definition270.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop87;
+            	    break loop85;
                 }
             } while (true);
 
 
             // AST REWRITE
-            // elements: dimension_definition, ID
+            // elements: ID, dimension_definition
             // token labels: 
             // rule labels: retval
             // token list labels: 
@@ -10531,9 +10538,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 732:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+            // 733:3: -> ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
             {
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:733:6: ^( VT_DATA_TYPE ( ID )+ ( dimension_definition )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_DATA_TYPE, "VT_DATA_TYPE"), root_1);
@@ -10546,7 +10553,7 @@
 
                 }
                 stream_ID.reset();
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:732:25: ( dimension_definition )*
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:733:25: ( dimension_definition )*
                 while ( stream_dimension_definition.hasNext() ) {
                     adaptor.addChild(root_1, stream_dimension_definition.next());
 
@@ -10585,36 +10592,36 @@
     };
 
     // $ANTLR start dimension_definition
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:735:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:736:1: dimension_definition : LEFT_SQUARE RIGHT_SQUARE ;
     public final dimension_definition_return dimension_definition() throws RecognitionException {
         dimension_definition_return retval = new dimension_definition_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_SQUARE267=null;
-        Token RIGHT_SQUARE268=null;
+        Token LEFT_SQUARE271=null;
+        Token RIGHT_SQUARE272=null;
 
-        Object LEFT_SQUARE267_tree=null;
-        Object RIGHT_SQUARE268_tree=null;
+        Object LEFT_SQUARE271_tree=null;
+        Object RIGHT_SQUARE272_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:736:2: ( LEFT_SQUARE RIGHT_SQUARE )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:736:4: LEFT_SQUARE RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:737:2: ( LEFT_SQUARE RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:737:4: LEFT_SQUARE RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE267=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition3263); if (failed) return retval;
+            LEFT_SQUARE271=(Token)input.LT(1);
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_dimension_definition3279); if (failed) return retval;
             if ( backtracking==0 ) {
-            LEFT_SQUARE267_tree = (Object)adaptor.create(LEFT_SQUARE267);
-            adaptor.addChild(root_0, LEFT_SQUARE267_tree);
+            LEFT_SQUARE271_tree = (Object)adaptor.create(LEFT_SQUARE271);
+            adaptor.addChild(root_0, LEFT_SQUARE271_tree);
             }
-            RIGHT_SQUARE268=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition3265); if (failed) return retval;
+            RIGHT_SQUARE272=(Token)input.LT(1);
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_dimension_definition3281); if (failed) return retval;
             if ( backtracking==0 ) {
-            RIGHT_SQUARE268_tree = (Object)adaptor.create(RIGHT_SQUARE268);
-            adaptor.addChild(root_0, RIGHT_SQUARE268_tree);
+            RIGHT_SQUARE272_tree = (Object)adaptor.create(RIGHT_SQUARE272);
+            adaptor.addChild(root_0, RIGHT_SQUARE272_tree);
             }
 
             }
@@ -10642,61 +10649,61 @@
     };
 
     // $ANTLR start accessor_path
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:739:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:1: accessor_path : accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) ;
     public final accessor_path_return accessor_path() throws RecognitionException {
         accessor_path_return retval = new accessor_path_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token DOT270=null;
-        accessor_element_return accessor_element269 = null;
+        Token DOT274=null;
+        accessor_element_return accessor_element273 = null;
 
-        accessor_element_return accessor_element271 = null;
+        accessor_element_return accessor_element275 = null;
 
 
-        Object DOT270_tree=null;
+        Object DOT274_tree=null;
         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
         RewriteRuleSubtreeStream stream_accessor_element=new RewriteRuleSubtreeStream(adaptor,"rule accessor_element");
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:4: accessor_element ( DOT accessor_element )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:741:2: ( accessor_element ( DOT accessor_element )* -> ^( VT_ACCESSOR_PATH ( accessor_element )+ ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:741:4: accessor_element ( DOT accessor_element )*
             {
-            pushFollow(FOLLOW_accessor_element_in_accessor_path3276);
-            accessor_element269=accessor_element();
+            pushFollow(FOLLOW_accessor_element_in_accessor_path3292);
+            accessor_element273=accessor_element();
             _fsp--;
             if (failed) return retval;
-            if ( backtracking==0 ) stream_accessor_element.add(accessor_element269.getTree());
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:21: ( DOT accessor_element )*
-            loop88:
+            if ( backtracking==0 ) stream_accessor_element.add(accessor_element273.getTree());
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:741:21: ( DOT accessor_element )*
+            loop86:
             do {
-                int alt88=2;
-                int LA88_0 = input.LA(1);
+                int alt86=2;
+                int LA86_0 = input.LA(1);
 
-                if ( (LA88_0==DOT) ) {
-                    alt88=1;
+                if ( (LA86_0==DOT) ) {
+                    alt86=1;
                 }
 
 
-                switch (alt88) {
+                switch (alt86) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:740:23: DOT accessor_element
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:741:23: DOT accessor_element
             	    {
-            	    DOT270=(Token)input.LT(1);
-            	    match(input,DOT,FOLLOW_DOT_in_accessor_path3280); if (failed) return retval;
-            	    if ( backtracking==0 ) stream_DOT.add(DOT270);
+            	    DOT274=(Token)input.LT(1);
+            	    match(input,DOT,FOLLOW_DOT_in_accessor_path3296); if (failed) return retval;
+            	    if ( backtracking==0 ) stream_DOT.add(DOT274);
 
-            	    pushFollow(FOLLOW_accessor_element_in_accessor_path3282);
-            	    accessor_element271=accessor_element();
+            	    pushFollow(FOLLOW_accessor_element_in_accessor_path3298);
+            	    accessor_element275=accessor_element();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_accessor_element.add(accessor_element271.getTree());
+            	    if ( backtracking==0 ) stream_accessor_element.add(accessor_element275.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop88;
+            	    break loop86;
                 }
             } while (true);
 
@@ -10712,9 +10719,9 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 741:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+            // 742:2: -> ^( VT_ACCESSOR_PATH ( accessor_element )+ )
             {
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:741:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:742:5: ^( VT_ACCESSOR_PATH ( accessor_element )+ )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCESSOR_PATH, "VT_ACCESSOR_PATH"), root_1);
@@ -10760,54 +10767,54 @@
     };
 
     // $ANTLR start accessor_element
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:744:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:1: accessor_element : ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) ;
     public final accessor_element_return accessor_element() throws RecognitionException {
         accessor_element_return retval = new accessor_element_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID272=null;
-        square_chunk_return square_chunk273 = null;
+        Token ID276=null;
+        square_chunk_return square_chunk277 = null;
 
 
-        Object ID272_tree=null;
+        Object ID276_tree=null;
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
         RewriteRuleSubtreeStream stream_square_chunk=new RewriteRuleSubtreeStream(adaptor,"rule square_chunk");
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:4: ID ( square_chunk )*
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:2: ( ID ( square_chunk )* -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* ) )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:4: ID ( square_chunk )*
             {
-            ID272=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accessor_element3306); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID272);
+            ID276=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_accessor_element3322); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID276);
 
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:7: ( square_chunk )*
-            loop89:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:7: ( square_chunk )*
+            loop87:
             do {
-                int alt89=2;
-                int LA89_0 = input.LA(1);
+                int alt87=2;
+                int LA87_0 = input.LA(1);
 
-                if ( (LA89_0==LEFT_SQUARE) ) {
-                    alt89=1;
+                if ( (LA87_0==LEFT_SQUARE) ) {
+                    alt87=1;
                 }
 
 
-                switch (alt89) {
+                switch (alt87) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:745:7: square_chunk
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:7: square_chunk
             	    {
-            	    pushFollow(FOLLOW_square_chunk_in_accessor_element3308);
-            	    square_chunk273=square_chunk();
+            	    pushFollow(FOLLOW_square_chunk_in_accessor_element3324);
+            	    square_chunk277=square_chunk();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) stream_square_chunk.add(square_chunk273.getTree());
+            	    if ( backtracking==0 ) stream_square_chunk.add(square_chunk277.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop89;
+            	    break loop87;
                 }
             } while (true);
 
@@ -10823,15 +10830,15 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 746:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+            // 747:2: -> ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
             {
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:5: ^( VT_ACCESSOR_ELEMENT ID ( square_chunk )* )
                 {
                 Object root_1 = (Object)adaptor.nil();
                 root_1 = (Object)adaptor.becomeRoot(adaptor.create(VT_ACCESSOR_ELEMENT, "VT_ACCESSOR_ELEMENT"), root_1);
 
                 adaptor.addChild(root_1, stream_ID.next());
-                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:746:30: ( square_chunk )*
+                // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:747:30: ( square_chunk )*
                 while ( stream_square_chunk.hasNext() ) {
                     adaptor.addChild(root_1, stream_square_chunk.next());
 
@@ -10870,7 +10877,7 @@
     };
 
     // $ANTLR start rhs_chunk
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:749:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:750:1: rhs_chunk : rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] ;
     public final rhs_chunk_return rhs_chunk() throws RecognitionException {
         rhs_chunk_return retval = new rhs_chunk_return();
         retval.start = input.LT(1);
@@ -10885,10 +10892,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:752:5: rc= rhs_chunk_data
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:3: (rc= rhs_chunk_data -> VT_RHS_CHUNK[$rc.start,text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:753:5: rc= rhs_chunk_data
             {
-            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk3337);
+            pushFollow(FOLLOW_rhs_chunk_data_in_rhs_chunk3353);
             rc=rhs_chunk_data();
             _fsp--;
             if (failed) return retval;
@@ -10908,7 +10915,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 753:2: -> VT_RHS_CHUNK[$rc.start,text]
+            // 754:2: -> VT_RHS_CHUNK[$rc.start,text]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_RHS_CHUNK, ((Token)rc.start), text));
 
@@ -10941,61 +10948,61 @@
     };
 
     // $ANTLR start rhs_chunk_data
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:756:1: rhs_chunk_data : THEN (~ END )* END ( SEMICOLON )? ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:1: rhs_chunk_data : THEN (~ END )* END ( SEMICOLON )? ;
     public final rhs_chunk_data_return rhs_chunk_data() throws RecognitionException {
         rhs_chunk_data_return retval = new rhs_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token THEN274=null;
-        Token set275=null;
-        Token END276=null;
-        Token SEMICOLON277=null;
+        Token THEN278=null;
+        Token set279=null;
+        Token END280=null;
+        Token SEMICOLON281=null;
 
-        Object THEN274_tree=null;
-        Object set275_tree=null;
-        Object END276_tree=null;
-        Object SEMICOLON277_tree=null;
+        Object THEN278_tree=null;
+        Object set279_tree=null;
+        Object END280_tree=null;
+        Object SEMICOLON281_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:2: ( THEN (~ END )* END ( SEMICOLON )? )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:4: THEN (~ END )* END ( SEMICOLON )?
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:2: ( THEN (~ END )* END ( SEMICOLON )? )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:4: THEN (~ END )* END ( SEMICOLON )?
             {
             root_0 = (Object)adaptor.nil();
 
-            THEN274=(Token)input.LT(1);
-            match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data3356); if (failed) return retval;
+            THEN278=(Token)input.LT(1);
+            match(input,THEN,FOLLOW_THEN_in_rhs_chunk_data3372); if (failed) return retval;
             if ( backtracking==0 ) {
-            THEN274_tree = (Object)adaptor.create(THEN274);
-            adaptor.addChild(root_0, THEN274_tree);
+            THEN278_tree = (Object)adaptor.create(THEN278);
+            adaptor.addChild(root_0, THEN278_tree);
             }
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:9: (~ END )*
-            loop90:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:9: (~ END )*
+            loop88:
             do {
-                int alt90=2;
-                int LA90_0 = input.LA(1);
+                int alt88=2;
+                int LA88_0 = input.LA(1);
 
-                if ( ((LA90_0>=VT_COMPILATION_UNIT && LA90_0<=DOT_STAR)||(LA90_0>=STRING && LA90_0<=MULTI_LINE_COMMENT)) ) {
-                    alt90=1;
+                if ( ((LA88_0>=VT_COMPILATION_UNIT && LA88_0<=DOT_STAR)||(LA88_0>=STRING && LA88_0<=MULTI_LINE_COMMENT)) ) {
+                    alt88=1;
                 }
 
 
-                switch (alt90) {
+                switch (alt88) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:11: ~ END
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:11: ~ END
             	    {
-            	    set275=(Token)input.LT(1);
+            	    set279=(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 ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set275));
+            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set279));
             	        errorRecovery=false;failed=false;
             	    }
             	    else {
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk_data3360);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_rhs_chunk_data3376);    throw mse;
             	    }
 
 
@@ -11003,32 +11010,32 @@
             	    break;
 
             	default :
-            	    break loop90;
+            	    break loop88;
                 }
             } while (true);
 
-            END276=(Token)input.LT(1);
-            match(input,END,FOLLOW_END_in_rhs_chunk_data3366); if (failed) return retval;
+            END280=(Token)input.LT(1);
+            match(input,END,FOLLOW_END_in_rhs_chunk_data3382); if (failed) return retval;
             if ( backtracking==0 ) {
-            END276_tree = (Object)adaptor.create(END276);
-            adaptor.addChild(root_0, END276_tree);
+            END280_tree = (Object)adaptor.create(END280);
+            adaptor.addChild(root_0, END280_tree);
             }
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:23: ( SEMICOLON )?
-            int alt91=2;
-            int LA91_0 = input.LA(1);
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:23: ( SEMICOLON )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
 
-            if ( (LA91_0==SEMICOLON) ) {
-                alt91=1;
+            if ( (LA89_0==SEMICOLON) ) {
+                alt89=1;
             }
-            switch (alt91) {
+            switch (alt89) {
                 case 1 :
-                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:757:23: SEMICOLON
+                    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:758:23: SEMICOLON
                     {
-                    SEMICOLON277=(Token)input.LT(1);
-                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data3368); if (failed) return retval;
+                    SEMICOLON281=(Token)input.LT(1);
+                    match(input,SEMICOLON,FOLLOW_SEMICOLON_in_rhs_chunk_data3384); if (failed) return retval;
                     if ( backtracking==0 ) {
-                    SEMICOLON277_tree = (Object)adaptor.create(SEMICOLON277);
-                    adaptor.addChild(root_0, SEMICOLON277_tree);
+                    SEMICOLON281_tree = (Object)adaptor.create(SEMICOLON281);
+                    adaptor.addChild(root_0, SEMICOLON281_tree);
                     }
 
                     }
@@ -11062,7 +11069,7 @@
     };
 
     // $ANTLR start curly_chunk
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:760:1: curly_chunk : cc= curly_chunk_data -> VT_CURLY_CHUNK[$cc.start,text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:761:1: curly_chunk : cc= curly_chunk_data -> VT_CURLY_CHUNK[$cc.start,text] ;
     public final curly_chunk_return curly_chunk() throws RecognitionException {
         curly_chunk_return retval = new curly_chunk_return();
         retval.start = input.LT(1);
@@ -11077,10 +11084,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:3: (cc= curly_chunk_data -> VT_CURLY_CHUNK[$cc.start,text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:763:5: cc= curly_chunk_data
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:3: (cc= curly_chunk_data -> VT_CURLY_CHUNK[$cc.start,text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:764:5: cc= curly_chunk_data
             {
-            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk3385);
+            pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk3401);
             cc=curly_chunk_data();
             _fsp--;
             if (failed) return retval;
@@ -11100,7 +11107,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 764:2: -> VT_CURLY_CHUNK[$cc.start,text]
+            // 765:2: -> VT_CURLY_CHUNK[$cc.start,text]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_CURLY_CHUNK, ((Token)cc.start), text));
 
@@ -11133,91 +11140,91 @@
     };
 
     // $ANTLR start curly_chunk_data
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:767:1: curly_chunk_data : LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )* RIGHT_CURLY ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:1: curly_chunk_data : LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )* RIGHT_CURLY ;
     public final curly_chunk_data_return curly_chunk_data() throws RecognitionException {
         curly_chunk_data_return retval = new curly_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_CURLY278=null;
-        Token set279=null;
-        Token RIGHT_CURLY281=null;
-        curly_chunk_data_return curly_chunk_data280 = null;
+        Token LEFT_CURLY282=null;
+        Token set283=null;
+        Token RIGHT_CURLY285=null;
+        curly_chunk_data_return curly_chunk_data284 = null;
 
 
-        Object LEFT_CURLY278_tree=null;
-        Object set279_tree=null;
-        Object RIGHT_CURLY281_tree=null;
+        Object LEFT_CURLY282_tree=null;
+        Object set283_tree=null;
+        Object RIGHT_CURLY285_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:2: ( LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )* RIGHT_CURLY )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:4: LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )* RIGHT_CURLY
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:2: ( LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )* RIGHT_CURLY )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:4: LEFT_CURLY (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )* RIGHT_CURLY
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_CURLY278=(Token)input.LT(1);
-            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data3404); if (failed) return retval;
+            LEFT_CURLY282=(Token)input.LT(1);
+            match(input,LEFT_CURLY,FOLLOW_LEFT_CURLY_in_curly_chunk_data3420); if (failed) return retval;
             if ( backtracking==0 ) {
-            LEFT_CURLY278_tree = (Object)adaptor.create(LEFT_CURLY278);
-            adaptor.addChild(root_0, LEFT_CURLY278_tree);
+            LEFT_CURLY282_tree = (Object)adaptor.create(LEFT_CURLY282);
+            adaptor.addChild(root_0, LEFT_CURLY282_tree);
             }
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:15: (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )*
-            loop92:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:15: (~ ( LEFT_CURLY | RIGHT_CURLY ) | curly_chunk_data )*
+            loop90:
             do {
-                int alt92=3;
-                int LA92_0 = input.LA(1);
+                int alt90=3;
+                int LA90_0 = input.LA(1);
 
-                if ( ((LA92_0>=VT_COMPILATION_UNIT && LA92_0<=THEN)||(LA92_0>=MISC && LA92_0<=MULTI_LINE_COMMENT)) ) {
-                    alt92=1;
+                if ( ((LA90_0>=VT_COMPILATION_UNIT && LA90_0<=THEN)||(LA90_0>=MISC && LA90_0<=MULTI_LINE_COMMENT)) ) {
+                    alt90=1;
                 }
-                else if ( (LA92_0==LEFT_CURLY) ) {
-                    alt92=2;
+                else if ( (LA90_0==LEFT_CURLY) ) {
+                    alt90=2;
                 }
 
 
-                switch (alt92) {
+                switch (alt90) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:16: ~ ( LEFT_CURLY | RIGHT_CURLY )
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:16: ~ ( LEFT_CURLY | RIGHT_CURLY )
             	    {
-            	    set279=(Token)input.LT(1);
+            	    set283=(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) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set279));
+            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set283));
             	        errorRecovery=false;failed=false;
             	    }
             	    else {
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk_data3407);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_curly_chunk_data3423);    throw mse;
             	    }
 
 
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:768:49: curly_chunk_data
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:769:49: curly_chunk_data
             	    {
-            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data3421);
-            	    curly_chunk_data280=curly_chunk_data();
+            	    pushFollow(FOLLOW_curly_chunk_data_in_curly_chunk_data3437);
+            	    curly_chunk_data284=curly_chunk_data();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data280.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, curly_chunk_data284.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop92;
+            	    break loop90;
                 }
             } while (true);
 
-            RIGHT_CURLY281=(Token)input.LT(1);
-            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data3426); if (failed) return retval;
+            RIGHT_CURLY285=(Token)input.LT(1);
+            match(input,RIGHT_CURLY,FOLLOW_RIGHT_CURLY_in_curly_chunk_data3442); if (failed) return retval;
             if ( backtracking==0 ) {
-            RIGHT_CURLY281_tree = (Object)adaptor.create(RIGHT_CURLY281);
-            adaptor.addChild(root_0, RIGHT_CURLY281_tree);
+            RIGHT_CURLY285_tree = (Object)adaptor.create(RIGHT_CURLY285);
+            adaptor.addChild(root_0, RIGHT_CURLY285_tree);
             }
 
             }
@@ -11245,7 +11252,7 @@
     };
 
     // $ANTLR start paren_chunk
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:771:1: paren_chunk : pc= paren_chunk_data -> VT_PAREN_CHUNK[$pc.start,text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:772:1: paren_chunk : pc= paren_chunk_data -> VT_PAREN_CHUNK[$pc.start,text] ;
     public final paren_chunk_return paren_chunk() throws RecognitionException {
         paren_chunk_return retval = new paren_chunk_return();
         retval.start = input.LT(1);
@@ -11260,10 +11267,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774:3: (pc= paren_chunk_data -> VT_PAREN_CHUNK[$pc.start,text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:774:5: pc= paren_chunk_data
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:3: (pc= paren_chunk_data -> VT_PAREN_CHUNK[$pc.start,text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:775:5: pc= paren_chunk_data
             {
-            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk3442);
+            pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk3458);
             pc=paren_chunk_data();
             _fsp--;
             if (failed) return retval;
@@ -11283,7 +11290,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 775:2: -> VT_PAREN_CHUNK[$pc.start,text]
+            // 776:2: -> VT_PAREN_CHUNK[$pc.start,text]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_PAREN_CHUNK, ((Token)pc.start), text));
 
@@ -11316,91 +11323,91 @@
     };
 
     // $ANTLR start paren_chunk_data
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:778:1: paren_chunk_data : LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )* RIGHT_PAREN ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:1: paren_chunk_data : LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )* RIGHT_PAREN ;
     public final paren_chunk_data_return paren_chunk_data() throws RecognitionException {
         paren_chunk_data_return retval = new paren_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_PAREN282=null;
-        Token set283=null;
-        Token RIGHT_PAREN285=null;
-        paren_chunk_data_return paren_chunk_data284 = null;
+        Token LEFT_PAREN286=null;
+        Token set287=null;
+        Token RIGHT_PAREN289=null;
+        paren_chunk_data_return paren_chunk_data288 = null;
 
 
-        Object LEFT_PAREN282_tree=null;
-        Object set283_tree=null;
-        Object RIGHT_PAREN285_tree=null;
+        Object LEFT_PAREN286_tree=null;
+        Object set287_tree=null;
+        Object RIGHT_PAREN289_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:2: ( LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )* RIGHT_PAREN )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:4: LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )* RIGHT_PAREN
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:2: ( LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )* RIGHT_PAREN )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:4: LEFT_PAREN (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )* RIGHT_PAREN
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_PAREN282=(Token)input.LT(1);
-            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data3462); if (failed) return retval;
+            LEFT_PAREN286=(Token)input.LT(1);
+            match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_paren_chunk_data3478); if (failed) return retval;
             if ( backtracking==0 ) {
-            LEFT_PAREN282_tree = (Object)adaptor.create(LEFT_PAREN282);
-            adaptor.addChild(root_0, LEFT_PAREN282_tree);
+            LEFT_PAREN286_tree = (Object)adaptor.create(LEFT_PAREN286);
+            adaptor.addChild(root_0, LEFT_PAREN286_tree);
             }
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:15: (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )*
-            loop93:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:15: (~ ( LEFT_PAREN | RIGHT_PAREN ) | paren_chunk_data )*
+            loop91:
             do {
-                int alt93=3;
-                int LA93_0 = input.LA(1);
+                int alt91=3;
+                int LA91_0 = input.LA(1);
 
-                if ( ((LA93_0>=VT_COMPILATION_UNIT && LA93_0<=STRING)||LA93_0==COMMA||(LA93_0>=COLON && LA93_0<=MULTI_LINE_COMMENT)) ) {
-                    alt93=1;
+                if ( ((LA91_0>=VT_COMPILATION_UNIT && LA91_0<=STRING)||LA91_0==COMMA||(LA91_0>=COLON && LA91_0<=MULTI_LINE_COMMENT)) ) {
+                    alt91=1;
                 }
-                else if ( (LA93_0==LEFT_PAREN) ) {
-                    alt93=2;
+                else if ( (LA91_0==LEFT_PAREN) ) {
+                    alt91=2;
                 }
 
 
-                switch (alt93) {
+                switch (alt91) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:16: ~ ( LEFT_PAREN | RIGHT_PAREN )
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:16: ~ ( LEFT_PAREN | RIGHT_PAREN )
             	    {
-            	    set283=(Token)input.LT(1);
+            	    set287=(Token)input.LT(1);
             	    if ( (input.LA(1)>=VT_COMPILATION_UNIT && input.LA(1)<=STRING)||input.LA(1)==COMMA||(input.LA(1)>=COLON && input.LA(1)<=MULTI_LINE_COMMENT) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set283));
+            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set287));
             	        errorRecovery=false;failed=false;
             	    }
             	    else {
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk_data3465);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_paren_chunk_data3481);    throw mse;
             	    }
 
 
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:779:49: paren_chunk_data
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:780:49: paren_chunk_data
             	    {
-            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data3479);
-            	    paren_chunk_data284=paren_chunk_data();
+            	    pushFollow(FOLLOW_paren_chunk_data_in_paren_chunk_data3495);
+            	    paren_chunk_data288=paren_chunk_data();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data284.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, paren_chunk_data288.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop93;
+            	    break loop91;
                 }
             } while (true);
 
-            RIGHT_PAREN285=(Token)input.LT(1);
-            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data3484); if (failed) return retval;
+            RIGHT_PAREN289=(Token)input.LT(1);
+            match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_paren_chunk_data3500); if (failed) return retval;
             if ( backtracking==0 ) {
-            RIGHT_PAREN285_tree = (Object)adaptor.create(RIGHT_PAREN285);
-            adaptor.addChild(root_0, RIGHT_PAREN285_tree);
+            RIGHT_PAREN289_tree = (Object)adaptor.create(RIGHT_PAREN289);
+            adaptor.addChild(root_0, RIGHT_PAREN289_tree);
             }
 
             }
@@ -11428,7 +11435,7 @@
     };
 
     // $ANTLR start square_chunk
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:782:1: square_chunk : sc= square_chunk_data -> VT_SQUARE_CHUNK[$sc.start,text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:783:1: square_chunk : sc= square_chunk_data -> VT_SQUARE_CHUNK[$sc.start,text] ;
     public final square_chunk_return square_chunk() throws RecognitionException {
         square_chunk_return retval = new square_chunk_return();
         retval.start = input.LT(1);
@@ -11443,10 +11450,10 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:3: (sc= square_chunk_data -> VT_SQUARE_CHUNK[$sc.start,text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:785:5: sc= square_chunk_data
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:3: (sc= square_chunk_data -> VT_SQUARE_CHUNK[$sc.start,text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:786:5: sc= square_chunk_data
             {
-            pushFollow(FOLLOW_square_chunk_data_in_square_chunk3501);
+            pushFollow(FOLLOW_square_chunk_data_in_square_chunk3517);
             sc=square_chunk_data();
             _fsp--;
             if (failed) return retval;
@@ -11466,7 +11473,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 786:2: -> VT_SQUARE_CHUNK[$sc.start,text]
+            // 787:2: -> VT_SQUARE_CHUNK[$sc.start,text]
             {
                 adaptor.addChild(root_0, adaptor.create(VT_SQUARE_CHUNK, ((Token)sc.start), text));
 
@@ -11499,91 +11506,91 @@
     };
 
     // $ANTLR start square_chunk_data
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:789:1: square_chunk_data : LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )* RIGHT_SQUARE ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:1: square_chunk_data : LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )* RIGHT_SQUARE ;
     public final square_chunk_data_return square_chunk_data() throws RecognitionException {
         square_chunk_data_return retval = new square_chunk_data_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token LEFT_SQUARE286=null;
-        Token set287=null;
-        Token RIGHT_SQUARE289=null;
-        square_chunk_data_return square_chunk_data288 = null;
+        Token LEFT_SQUARE290=null;
+        Token set291=null;
+        Token RIGHT_SQUARE293=null;
+        square_chunk_data_return square_chunk_data292 = null;
 
 
-        Object LEFT_SQUARE286_tree=null;
-        Object set287_tree=null;
-        Object RIGHT_SQUARE289_tree=null;
+        Object LEFT_SQUARE290_tree=null;
+        Object set291_tree=null;
+        Object RIGHT_SQUARE293_tree=null;
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:2: ( LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )* RIGHT_SQUARE )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:4: LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )* RIGHT_SQUARE
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:2: ( LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )* RIGHT_SQUARE )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:4: LEFT_SQUARE (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )* RIGHT_SQUARE
             {
             root_0 = (Object)adaptor.nil();
 
-            LEFT_SQUARE286=(Token)input.LT(1);
-            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data3520); if (failed) return retval;
+            LEFT_SQUARE290=(Token)input.LT(1);
+            match(input,LEFT_SQUARE,FOLLOW_LEFT_SQUARE_in_square_chunk_data3536); if (failed) return retval;
             if ( backtracking==0 ) {
-            LEFT_SQUARE286_tree = (Object)adaptor.create(LEFT_SQUARE286);
-            adaptor.addChild(root_0, LEFT_SQUARE286_tree);
+            LEFT_SQUARE290_tree = (Object)adaptor.create(LEFT_SQUARE290);
+            adaptor.addChild(root_0, LEFT_SQUARE290_tree);
             }
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:16: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )*
-            loop94:
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:16: (~ ( LEFT_SQUARE | RIGHT_SQUARE ) | square_chunk_data )*
+            loop92:
             do {
-                int alt94=3;
-                int LA94_0 = input.LA(1);
+                int alt92=3;
+                int LA92_0 = input.LA(1);
 
-                if ( ((LA94_0>=VT_COMPILATION_UNIT && LA94_0<=NULL)||(LA94_0>=THEN && LA94_0<=MULTI_LINE_COMMENT)) ) {
-                    alt94=1;
+                if ( ((LA92_0>=VT_COMPILATION_UNIT && LA92_0<=NULL)||(LA92_0>=THEN && LA92_0<=MULTI_LINE_COMMENT)) ) {
+                    alt92=1;
                 }
-                else if ( (LA94_0==LEFT_SQUARE) ) {
-                    alt94=2;
+                else if ( (LA92_0==LEFT_SQUARE) ) {
+                    alt92=2;
                 }
 
 
-                switch (alt94) {
+                switch (alt92) {
             	case 1 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:17: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:17: ~ ( LEFT_SQUARE | RIGHT_SQUARE )
             	    {
-            	    set287=(Token)input.LT(1);
+            	    set291=(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) ) {
             	        input.consume();
-            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set287));
+            	        if ( backtracking==0 ) adaptor.addChild(root_0, adaptor.create(set291));
             	        errorRecovery=false;failed=false;
             	    }
             	    else {
             	        if (backtracking>0) {failed=true; return retval;}
             	        MismatchedSetException mse =
             	            new MismatchedSetException(null,input);
-            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk_data3523);    throw mse;
+            	        recoverFromMismatchedSet(input,mse,FOLLOW_set_in_square_chunk_data3539);    throw mse;
             	    }
 
 
             	    }
             	    break;
             	case 2 :
-            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:790:52: square_chunk_data
+            	    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:791:52: square_chunk_data
             	    {
-            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data3537);
-            	    square_chunk_data288=square_chunk_data();
+            	    pushFollow(FOLLOW_square_chunk_data_in_square_chunk_data3553);
+            	    square_chunk_data292=square_chunk_data();
             	    _fsp--;
             	    if (failed) return retval;
-            	    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk_data288.getTree());
+            	    if ( backtracking==0 ) adaptor.addChild(root_0, square_chunk_data292.getTree());
 
             	    }
             	    break;
 
             	default :
-            	    break loop94;
+            	    break loop92;
                 }
             } while (true);
 
-            RIGHT_SQUARE289=(Token)input.LT(1);
-            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data3542); if (failed) return retval;
+            RIGHT_SQUARE293=(Token)input.LT(1);
+            match(input,RIGHT_SQUARE,FOLLOW_RIGHT_SQUARE_in_square_chunk_data3558); if (failed) return retval;
             if ( backtracking==0 ) {
-            RIGHT_SQUARE289_tree = (Object)adaptor.create(RIGHT_SQUARE289);
-            adaptor.addChild(root_0, RIGHT_SQUARE289_tree);
+            RIGHT_SQUARE293_tree = (Object)adaptor.create(RIGHT_SQUARE293);
+            adaptor.addChild(root_0, RIGHT_SQUARE293_tree);
             }
 
             }
@@ -11611,20 +11618,20 @@
     };
 
     // $ANTLR start date_effective_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:794:1: date_effective_key : {...}? => ID MISC ID -> VK_DATE_EFFECTIVE[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:795:1: date_effective_key : {...}? => ID MISC ID -> VK_DATE_EFFECTIVE[$start, text] ;
     public final date_effective_key_return date_effective_key() throws RecognitionException {
         date_effective_key_return retval = new date_effective_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID290=null;
-        Token MISC291=null;
-        Token ID292=null;
+        Token ID294=null;
+        Token MISC295=null;
+        Token ID296=null;
 
-        Object ID290_tree=null;
-        Object MISC291_tree=null;
-        Object ID292_tree=null;
+        Object ID294_tree=null;
+        Object MISC295_tree=null;
+        Object ID296_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -11632,24 +11639,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:797:3: ({...}? => ID MISC ID -> VK_DATE_EFFECTIVE[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:797:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:3: ({...}? => ID MISC ID -> VK_DATE_EFFECTIVE[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:798:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_effective_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))");
             }
-            ID290=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_effective_key3561); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID290);
+            ID294=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_date_effective_key3577); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID294);
 
-            MISC291=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_effective_key3563); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC291);
+            MISC295=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_date_effective_key3579); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC295);
 
-            ID292=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_effective_key3565); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID292);
+            ID296=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_date_effective_key3581); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID296);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -11666,7 +11673,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 798:2: -> VK_DATE_EFFECTIVE[$start, text]
+            // 799:2: -> VK_DATE_EFFECTIVE[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_DATE_EFFECTIVE, ((Token)retval.start),  text));
 
@@ -11699,20 +11706,20 @@
     };
 
     // $ANTLR start date_expires_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:801:1: date_expires_key : {...}? => ID MISC ID -> VK_DATE_EXPIRES[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:802:1: date_expires_key : {...}? => ID MISC ID -> VK_DATE_EXPIRES[$start, text] ;
     public final date_expires_key_return date_expires_key() throws RecognitionException {
         date_expires_key_return retval = new date_expires_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID293=null;
-        Token MISC294=null;
-        Token ID295=null;
+        Token ID297=null;
+        Token MISC298=null;
+        Token ID299=null;
 
-        Object ID293_tree=null;
-        Object MISC294_tree=null;
-        Object ID295_tree=null;
+        Object ID297_tree=null;
+        Object MISC298_tree=null;
+        Object ID299_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -11720,24 +11727,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:3: ({...}? => ID MISC ID -> VK_DATE_EXPIRES[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:804:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:3: ({...}? => ID MISC ID -> VK_DATE_EXPIRES[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:805:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "date_expires_key", "(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.EXPIRES))");
             }
-            ID293=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_expires_key3591); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID293);
+            ID297=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_date_expires_key3607); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID297);
 
-            MISC294=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_date_expires_key3593); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC294);
+            MISC298=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_date_expires_key3609); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC298);
 
-            ID295=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_date_expires_key3595); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID295);
+            ID299=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_date_expires_key3611); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID299);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -11754,7 +11761,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 805:2: -> VK_DATE_EXPIRES[$start, text]
+            // 806:2: -> VK_DATE_EXPIRES[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_DATE_EXPIRES, ((Token)retval.start),  text));
 
@@ -11787,24 +11794,24 @@
     };
 
     // $ANTLR start lock_on_active_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:808:1: lock_on_active_key : {...}? => ID MISC ID MISC ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:809:1: lock_on_active_key : {...}? => ID MISC ID MISC ID -> VK_LOCK_ON_ACTIVE[$start, text] ;
     public final lock_on_active_key_return lock_on_active_key() throws RecognitionException {
         lock_on_active_key_return retval = new lock_on_active_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID296=null;
-        Token MISC297=null;
-        Token ID298=null;
-        Token MISC299=null;
         Token ID300=null;
+        Token MISC301=null;
+        Token ID302=null;
+        Token MISC303=null;
+        Token ID304=null;
 
-        Object ID296_tree=null;
-        Object MISC297_tree=null;
-        Object ID298_tree=null;
-        Object MISC299_tree=null;
         Object ID300_tree=null;
+        Object MISC301_tree=null;
+        Object ID302_tree=null;
+        Object MISC303_tree=null;
+        Object ID304_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -11812,32 +11819,32 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:811:3: ({...}? => ID MISC ID MISC ID -> VK_LOCK_ON_ACTIVE[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:811:5: {...}? => ID MISC ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:812:3: ({...}? => ID MISC ID MISC ID -> VK_LOCK_ON_ACTIVE[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:812:5: {...}? => ID MISC ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))) ) {
                 if (backtracking>0) {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))");
             }
-            ID296=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key3621); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID296);
+            ID300=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_lock_on_active_key3637); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID300);
 
-            MISC297=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key3623); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC297);
+            MISC301=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key3639); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC301);
 
-            ID298=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key3625); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID298);
+            ID302=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_lock_on_active_key3641); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID302);
 
-            MISC299=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key3627); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC299);
+            MISC303=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_lock_on_active_key3643); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC303);
 
-            ID300=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_lock_on_active_key3629); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID300);
+            ID304=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_lock_on_active_key3645); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID304);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -11854,7 +11861,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 812:2: -> VK_LOCK_ON_ACTIVE[$start, text]
+            // 813:2: -> VK_LOCK_ON_ACTIVE[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_LOCK_ON_ACTIVE, ((Token)retval.start),  text));
 
@@ -11887,20 +11894,20 @@
     };
 
     // $ANTLR start no_loop_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:815:1: no_loop_key : {...}? => ID MISC ID -> VK_NO_LOOP[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:816:1: no_loop_key : {...}? => ID MISC ID -> VK_NO_LOOP[$start, text] ;
     public final no_loop_key_return no_loop_key() throws RecognitionException {
         no_loop_key_return retval = new no_loop_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID301=null;
-        Token MISC302=null;
-        Token ID303=null;
+        Token ID305=null;
+        Token MISC306=null;
+        Token ID307=null;
 
-        Object ID301_tree=null;
-        Object MISC302_tree=null;
-        Object ID303_tree=null;
+        Object ID305_tree=null;
+        Object MISC306_tree=null;
+        Object ID307_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -11908,24 +11915,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818:3: ({...}? => ID MISC ID -> VK_NO_LOOP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:818:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:3: ({...}? => ID MISC ID -> VK_NO_LOOP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:819:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "no_loop_key", "(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.LOOP))");
             }
-            ID301=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_no_loop_key3655); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID301);
+            ID305=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_no_loop_key3671); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID305);
 
-            MISC302=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_no_loop_key3657); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC302);
+            MISC306=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_no_loop_key3673); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC306);
 
-            ID303=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_no_loop_key3659); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID303);
+            ID307=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_no_loop_key3675); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID307);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -11942,7 +11949,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 819:2: -> VK_NO_LOOP[$start, text]
+            // 820:2: -> VK_NO_LOOP[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_NO_LOOP, ((Token)retval.start),  text));
 
@@ -11975,20 +11982,20 @@
     };
 
     // $ANTLR start auto_focus_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:822:1: auto_focus_key : {...}? => ID MISC ID -> VK_AUTO_FOCUS[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:823:1: auto_focus_key : {...}? => ID MISC ID -> VK_AUTO_FOCUS[$start, text] ;
     public final auto_focus_key_return auto_focus_key() throws RecognitionException {
         auto_focus_key_return retval = new auto_focus_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID304=null;
-        Token MISC305=null;
-        Token ID306=null;
+        Token ID308=null;
+        Token MISC309=null;
+        Token ID310=null;
 
-        Object ID304_tree=null;
-        Object MISC305_tree=null;
-        Object ID306_tree=null;
+        Object ID308_tree=null;
+        Object MISC309_tree=null;
+        Object ID310_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -11996,24 +12003,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:3: ({...}? => ID MISC ID -> VK_AUTO_FOCUS[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:825:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:3: ({...}? => ID MISC ID -> VK_AUTO_FOCUS[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:826:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "auto_focus_key", "(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.FOCUS))");
             }
-            ID304=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_auto_focus_key3685); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID304);
+            ID308=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_auto_focus_key3701); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID308);
 
-            MISC305=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_auto_focus_key3687); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC305);
+            MISC309=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_auto_focus_key3703); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC309);
 
-            ID306=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_auto_focus_key3689); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID306);
+            ID310=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_auto_focus_key3705); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID310);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -12030,7 +12037,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 826:2: -> VK_AUTO_FOCUS[$start, text]
+            // 827:2: -> VK_AUTO_FOCUS[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_AUTO_FOCUS, ((Token)retval.start),  text));
 
@@ -12063,20 +12070,20 @@
     };
 
     // $ANTLR start activation_group_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:829:1: activation_group_key : {...}? => ID MISC ID -> VK_ACTIVATION_GROUP[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:830:1: activation_group_key : {...}? => ID MISC ID -> VK_ACTIVATION_GROUP[$start, text] ;
     public final activation_group_key_return activation_group_key() throws RecognitionException {
         activation_group_key_return retval = new activation_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID307=null;
-        Token MISC308=null;
-        Token ID309=null;
+        Token ID311=null;
+        Token MISC312=null;
+        Token ID313=null;
 
-        Object ID307_tree=null;
-        Object MISC308_tree=null;
-        Object ID309_tree=null;
+        Object ID311_tree=null;
+        Object MISC312_tree=null;
+        Object ID313_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -12084,24 +12091,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:3: ({...}? => ID MISC ID -> VK_ACTIVATION_GROUP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:832:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:3: ({...}? => ID MISC ID -> VK_ACTIVATION_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:833:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "activation_group_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            ID307=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_activation_group_key3715); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID307);
+            ID311=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_activation_group_key3731); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID311);
 
-            MISC308=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_activation_group_key3717); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC308);
+            MISC312=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_activation_group_key3733); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC312);
 
-            ID309=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_activation_group_key3719); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID309);
+            ID313=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_activation_group_key3735); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID313);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -12118,7 +12125,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 833:2: -> VK_ACTIVATION_GROUP[$start, text]
+            // 834:2: -> VK_ACTIVATION_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_ACTIVATION_GROUP, ((Token)retval.start),  text));
 
@@ -12151,20 +12158,20 @@
     };
 
     // $ANTLR start agenda_group_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:836:1: agenda_group_key : {...}? => ID MISC ID -> VK_AGENDA_GROUP[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:837:1: agenda_group_key : {...}? => ID MISC ID -> VK_AGENDA_GROUP[$start, text] ;
     public final agenda_group_key_return agenda_group_key() throws RecognitionException {
         agenda_group_key_return retval = new agenda_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID310=null;
-        Token MISC311=null;
-        Token ID312=null;
+        Token ID314=null;
+        Token MISC315=null;
+        Token ID316=null;
 
-        Object ID310_tree=null;
-        Object MISC311_tree=null;
-        Object ID312_tree=null;
+        Object ID314_tree=null;
+        Object MISC315_tree=null;
+        Object ID316_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -12172,24 +12179,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:839:3: ({...}? => ID MISC ID -> VK_AGENDA_GROUP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:839:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:3: ({...}? => ID MISC ID -> VK_AGENDA_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:840:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "agenda_group_key", "(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            ID310=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_agenda_group_key3745); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID310);
+            ID314=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_agenda_group_key3761); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID314);
 
-            MISC311=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_agenda_group_key3747); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC311);
+            MISC315=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_agenda_group_key3763); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC315);
 
-            ID312=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_agenda_group_key3749); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID312);
+            ID316=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_agenda_group_key3765); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID316);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -12206,7 +12213,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 840:2: -> VK_AGENDA_GROUP[$start, text]
+            // 841:2: -> VK_AGENDA_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_AGENDA_GROUP, ((Token)retval.start),  text));
 
@@ -12239,20 +12246,20 @@
     };
 
     // $ANTLR start ruleflow_group_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:843:1: ruleflow_group_key : {...}? => ID MISC ID -> VK_RULEFLOW_GROUP[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:844:1: ruleflow_group_key : {...}? => ID MISC ID -> VK_RULEFLOW_GROUP[$start, text] ;
     public final ruleflow_group_key_return ruleflow_group_key() throws RecognitionException {
         ruleflow_group_key_return retval = new ruleflow_group_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID313=null;
-        Token MISC314=null;
-        Token ID315=null;
+        Token ID317=null;
+        Token MISC318=null;
+        Token ID319=null;
 
-        Object ID313_tree=null;
-        Object MISC314_tree=null;
-        Object ID315_tree=null;
+        Object ID317_tree=null;
+        Object MISC318_tree=null;
+        Object ID319_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -12260,24 +12267,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:3: ({...}? => ID MISC ID -> VK_RULEFLOW_GROUP[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:846:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:3: ({...}? => ID MISC ID -> VK_RULEFLOW_GROUP[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:847:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "ruleflow_group_key", "(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.GROUP))");
             }
-            ID313=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_ruleflow_group_key3775); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID313);
+            ID317=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_ruleflow_group_key3791); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID317);
 
-            MISC314=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key3777); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC314);
+            MISC318=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_ruleflow_group_key3793); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC318);
 
-            ID315=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_ruleflow_group_key3779); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID315);
+            ID319=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_ruleflow_group_key3795); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID319);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -12294,7 +12301,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 847:2: -> VK_RULEFLOW_GROUP[$start, text]
+            // 848:2: -> VK_RULEFLOW_GROUP[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_RULEFLOW_GROUP, ((Token)retval.start),  text));
 
@@ -12327,7 +12334,7 @@
     };
 
     // $ANTLR start duration_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:850:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:1: duration_key : {...}? =>id= ID -> VK_DURATION[$id] ;
     public final duration_key_return duration_key() throws RecognitionException {
         duration_key_return retval = new duration_key_return();
         retval.start = input.LT(1);
@@ -12340,15 +12347,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:2: ({...}? =>id= ID -> VK_DURATION[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:851:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:852:2: ({...}? =>id= ID -> VK_DURATION[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:852:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.DURATION))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "duration_key", "(validateIdentifierKey(DroolsSoftKeywords.DURATION))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_duration_key3804); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_duration_key3820); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12363,7 +12370,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 851:69: -> VK_DURATION[$id]
+            // 852:69: -> VK_DURATION[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_DURATION, id));
 
@@ -12396,7 +12403,7 @@
     };
 
     // $ANTLR start package_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:854:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:1: package_key : {...}? =>id= ID -> VK_PACKAGE[$id] ;
     public final package_key_return package_key() throws RecognitionException {
         package_key_return retval = new package_key_return();
         retval.start = input.LT(1);
@@ -12409,15 +12416,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:855:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:2: ({...}? =>id= ID -> VK_PACKAGE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:856:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.PACKAGE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "package_key", "(validateIdentifierKey(DroolsSoftKeywords.PACKAGE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_package_key3826); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_package_key3842); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12432,7 +12439,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 855:68: -> VK_PACKAGE[$id]
+            // 856:68: -> VK_PACKAGE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_PACKAGE, id));
 
@@ -12465,7 +12472,7 @@
     };
 
     // $ANTLR start import_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:858:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:1: import_key : {...}? =>id= ID -> VK_IMPORT[$id] ;
     public final import_key_return import_key() throws RecognitionException {
         import_key_return retval = new import_key_return();
         retval.start = input.LT(1);
@@ -12478,15 +12485,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:859:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860:2: ({...}? =>id= ID -> VK_IMPORT[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:860:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "import_key", "(validateIdentifierKey(DroolsSoftKeywords.IMPORT))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_import_key3848); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_import_key3864); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12501,7 +12508,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 859:67: -> VK_IMPORT[$id]
+            // 860:67: -> VK_IMPORT[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_IMPORT, id));
 
@@ -12534,7 +12541,7 @@
     };
 
     // $ANTLR start dialect_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:862:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:1: dialect_key : {...}? =>id= ID -> VK_DIALECT[$id] ;
     public final dialect_key_return dialect_key() throws RecognitionException {
         dialect_key_return retval = new dialect_key_return();
         retval.start = input.LT(1);
@@ -12547,15 +12554,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:863:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:2: ({...}? =>id= ID -> VK_DIALECT[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:864:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "dialect_key", "(validateIdentifierKey(DroolsSoftKeywords.DIALECT))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_dialect_key3870); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_dialect_key3886); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12570,7 +12577,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 863:68: -> VK_DIALECT[$id]
+            // 864:68: -> VK_DIALECT[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_DIALECT, id));
 
@@ -12603,7 +12610,7 @@
     };
 
     // $ANTLR start salience_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:866:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:1: salience_key : {...}? =>id= ID -> VK_SALIENCE[$id] ;
     public final salience_key_return salience_key() throws RecognitionException {
         salience_key_return retval = new salience_key_return();
         retval.start = input.LT(1);
@@ -12616,15 +12623,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:867:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:2: ({...}? =>id= ID -> VK_SALIENCE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:868:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "salience_key", "(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_salience_key3892); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_salience_key3908); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12639,7 +12646,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 867:69: -> VK_SALIENCE[$id]
+            // 868:69: -> VK_SALIENCE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_SALIENCE, id));
 
@@ -12672,7 +12679,7 @@
     };
 
     // $ANTLR start enabled_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:870:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:1: enabled_key : {...}? =>id= ID -> VK_ENABLED[$id] ;
     public final enabled_key_return enabled_key() throws RecognitionException {
         enabled_key_return retval = new enabled_key_return();
         retval.start = input.LT(1);
@@ -12685,15 +12692,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:871:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:2: ({...}? =>id= ID -> VK_ENABLED[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:872:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.ENABLED))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "enabled_key", "(validateIdentifierKey(DroolsSoftKeywords.ENABLED))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_enabled_key3914); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_enabled_key3930); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12708,7 +12715,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 871:68: -> VK_ENABLED[$id]
+            // 872:68: -> VK_ENABLED[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_ENABLED, id));
 
@@ -12741,7 +12748,7 @@
     };
 
     // $ANTLR start attributes_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:874:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:1: attributes_key : {...}? =>id= ID -> VK_ATTRIBUTES[$id] ;
     public final attributes_key_return attributes_key() throws RecognitionException {
         attributes_key_return retval = new attributes_key_return();
         retval.start = input.LT(1);
@@ -12754,15 +12761,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:875:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:2: ({...}? =>id= ID -> VK_ATTRIBUTES[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:876:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "attributes_key", "(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_attributes_key3936); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_attributes_key3952); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12777,7 +12784,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 875:71: -> VK_ATTRIBUTES[$id]
+            // 876:71: -> VK_ATTRIBUTES[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_ATTRIBUTES, id));
 
@@ -12810,7 +12817,7 @@
     };
 
     // $ANTLR start when_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:878:1: when_key : {...}? =>id= ID -> VK_WHEN[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:1: when_key : {...}? =>id= ID -> VK_WHEN[$id] ;
     public final when_key_return when_key() throws RecognitionException {
         when_key_return retval = new when_key_return();
         retval.start = input.LT(1);
@@ -12823,15 +12830,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:2: ({...}? =>id= ID -> VK_WHEN[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:879:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:2: ({...}? =>id= ID -> VK_WHEN[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:880:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "when_key", "(validateIdentifierKey(DroolsSoftKeywords.WHEN))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_when_key3958); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_when_key3974); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12846,7 +12853,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 879:65: -> VK_WHEN[$id]
+            // 880:65: -> VK_WHEN[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_WHEN, id));
 
@@ -12879,7 +12886,7 @@
     };
 
     // $ANTLR start rule_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:882:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:883:1: rule_key : {...}? =>id= ID -> VK_RULE[$id] ;
     public final rule_key_return rule_key() throws RecognitionException {
         rule_key_return retval = new rule_key_return();
         retval.start = input.LT(1);
@@ -12892,15 +12899,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:883:2: ({...}? =>id= ID -> VK_RULE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:883:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:2: ({...}? =>id= ID -> VK_RULE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:884:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "rule_key", "(validateIdentifierKey(DroolsSoftKeywords.RULE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_rule_key3980); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_rule_key3996); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12915,7 +12922,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 883:65: -> VK_RULE[$id]
+            // 884:65: -> VK_RULE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_RULE, id));
 
@@ -12948,7 +12955,7 @@
     };
 
     // $ANTLR start template_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:886:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:887:1: template_key : {...}? =>id= ID -> VK_TEMPLATE[$id] ;
     public final template_key_return template_key() throws RecognitionException {
         template_key_return retval = new template_key_return();
         retval.start = input.LT(1);
@@ -12961,15 +12968,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:887:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:887:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:2: ({...}? =>id= ID -> VK_TEMPLATE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:888:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "template_key", "(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_template_key4002); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_template_key4018); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -12984,7 +12991,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 887:69: -> VK_TEMPLATE[$id]
+            // 888:69: -> VK_TEMPLATE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_TEMPLATE, id));
 
@@ -13017,7 +13024,7 @@
     };
 
     // $ANTLR start query_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:890:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:1: query_key : {...}? =>id= ID -> VK_QUERY[$id] ;
     public final query_key_return query_key() throws RecognitionException {
         query_key_return retval = new query_key_return();
         retval.start = input.LT(1);
@@ -13030,15 +13037,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:2: ({...}? =>id= ID -> VK_QUERY[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:891:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:892:2: ({...}? =>id= ID -> VK_QUERY[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:892:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "query_key", "(validateIdentifierKey(DroolsSoftKeywords.QUERY))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_query_key4024); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_query_key4040); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13053,7 +13060,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 891:66: -> VK_QUERY[$id]
+            // 892:66: -> VK_QUERY[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_QUERY, id));
 
@@ -13086,7 +13093,7 @@
     };
 
     // $ANTLR start declare_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:894:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:1: declare_key : {...}? =>id= ID -> VK_DECLARE[$id] ;
     public final declare_key_return declare_key() throws RecognitionException {
         declare_key_return retval = new declare_key_return();
         retval.start = input.LT(1);
@@ -13099,15 +13106,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:895:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:2: ({...}? =>id= ID -> VK_DECLARE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:896:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.DECLARE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "declare_key", "(validateIdentifierKey(DroolsSoftKeywords.DECLARE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_declare_key4046); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_declare_key4062); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13122,7 +13129,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 895:68: -> VK_DECLARE[$id]
+            // 896:68: -> VK_DECLARE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_DECLARE, id));
 
@@ -13155,7 +13162,7 @@
     };
 
     // $ANTLR start function_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:898:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:1: function_key : {...}? =>id= ID -> VK_FUNCTION[$id] ;
     public final function_key_return function_key() throws RecognitionException {
         function_key_return retval = new function_key_return();
         retval.start = input.LT(1);
@@ -13168,15 +13175,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:899:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:2: ({...}? =>id= ID -> VK_FUNCTION[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:900:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "function_key", "(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_function_key4068); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_function_key4084); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13191,7 +13198,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 899:69: -> VK_FUNCTION[$id]
+            // 900:69: -> VK_FUNCTION[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_FUNCTION, id));
 
@@ -13224,7 +13231,7 @@
     };
 
     // $ANTLR start global_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:902:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:1: global_key : {...}? =>id= ID -> VK_GLOBAL[$id] ;
     public final global_key_return global_key() throws RecognitionException {
         global_key_return retval = new global_key_return();
         retval.start = input.LT(1);
@@ -13237,15 +13244,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:903:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:2: ({...}? =>id= ID -> VK_GLOBAL[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:904:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "global_key", "(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_global_key4090); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_global_key4106); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13260,7 +13267,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 903:67: -> VK_GLOBAL[$id]
+            // 904:67: -> VK_GLOBAL[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_GLOBAL, id));
 
@@ -13293,7 +13300,7 @@
     };
 
     // $ANTLR start eval_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:906:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:1: eval_key : {...}? =>id= ID -> VK_EVAL[$id] ;
     public final eval_key_return eval_key() throws RecognitionException {
         eval_key_return retval = new eval_key_return();
         retval.start = input.LT(1);
@@ -13306,15 +13313,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:2: ({...}? =>id= ID -> VK_EVAL[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:907:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908:2: ({...}? =>id= ID -> VK_EVAL[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:908:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.EVAL))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "eval_key", "(validateIdentifierKey(DroolsSoftKeywords.EVAL))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_eval_key4112); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_eval_key4128); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13329,7 +13336,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 907:65: -> VK_EVAL[$id]
+            // 908:65: -> VK_EVAL[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_EVAL, id));
 
@@ -13362,7 +13369,7 @@
     };
 
     // $ANTLR start contains_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:910:1: contains_key : {...}? =>id= ID -> VK_CONTAINS[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:1: contains_key : {...}? =>id= ID -> VK_CONTAINS[$id] ;
     public final contains_key_return contains_key() throws RecognitionException {
         contains_key_return retval = new contains_key_return();
         retval.start = input.LT(1);
@@ -13375,15 +13382,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:2: ({...}? =>id= ID -> VK_CONTAINS[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:911:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:2: ({...}? =>id= ID -> VK_CONTAINS[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:912:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.CONTAINS))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "contains_key", "(validateIdentifierKey(DroolsSoftKeywords.CONTAINS))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_contains_key4134); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_contains_key4150); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13398,7 +13405,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 911:69: -> VK_CONTAINS[$id]
+            // 912:69: -> VK_CONTAINS[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_CONTAINS, id));
 
@@ -13431,7 +13438,7 @@
     };
 
     // $ANTLR start matches_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:914:1: matches_key : {...}? =>id= ID -> VK_MATCHES[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:915:1: matches_key : {...}? =>id= ID -> VK_MATCHES[$id] ;
     public final matches_key_return matches_key() throws RecognitionException {
         matches_key_return retval = new matches_key_return();
         retval.start = input.LT(1);
@@ -13444,15 +13451,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:915:2: ({...}? =>id= ID -> VK_MATCHES[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:915:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:916:2: ({...}? =>id= ID -> VK_MATCHES[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:916:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.MATCHES))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "matches_key", "(validateIdentifierKey(DroolsSoftKeywords.MATCHES))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_matches_key4156); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_matches_key4172); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13467,7 +13474,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 915:68: -> VK_MATCHES[$id]
+            // 916:68: -> VK_MATCHES[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_MATCHES, id));
 
@@ -13500,7 +13507,7 @@
     };
 
     // $ANTLR start excludes_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:918:1: excludes_key : {...}? =>id= ID -> VK_EXCLUDES[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:919:1: excludes_key : {...}? =>id= ID -> VK_EXCLUDES[$id] ;
     public final excludes_key_return excludes_key() throws RecognitionException {
         excludes_key_return retval = new excludes_key_return();
         retval.start = input.LT(1);
@@ -13513,15 +13520,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:919:2: ({...}? =>id= ID -> VK_EXCLUDES[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:919:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:2: ({...}? =>id= ID -> VK_EXCLUDES[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:920:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "excludes_key", "(validateIdentifierKey(DroolsSoftKeywords.EXCLUDES))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_excludes_key4178); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_excludes_key4194); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13536,7 +13543,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 919:69: -> VK_EXCLUDES[$id]
+            // 920:69: -> VK_EXCLUDES[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_EXCLUDES, id));
 
@@ -13569,7 +13576,7 @@
     };
 
     // $ANTLR start soundslike_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:922:1: soundslike_key : {...}? =>id= ID -> VK_SOUNDSLIKE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:1: soundslike_key : {...}? =>id= ID -> VK_SOUNDSLIKE[$id] ;
     public final soundslike_key_return soundslike_key() throws RecognitionException {
         soundslike_key_return retval = new soundslike_key_return();
         retval.start = input.LT(1);
@@ -13582,15 +13589,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:2: ({...}? =>id= ID -> VK_SOUNDSLIKE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:923:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:2: ({...}? =>id= ID -> VK_SOUNDSLIKE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:924:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "soundslike_key", "(validateIdentifierKey(DroolsSoftKeywords.SOUNDSLIKE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_soundslike_key4200); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_soundslike_key4216); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13605,7 +13612,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 923:71: -> VK_SOUNDSLIKE[$id]
+            // 924:71: -> VK_SOUNDSLIKE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_SOUNDSLIKE, id));
 
@@ -13638,7 +13645,7 @@
     };
 
     // $ANTLR start memberof_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:926:1: memberof_key : {...}? =>id= ID -> VK_MEMBEROF[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:1: memberof_key : {...}? =>id= ID -> VK_MEMBEROF[$id] ;
     public final memberof_key_return memberof_key() throws RecognitionException {
         memberof_key_return retval = new memberof_key_return();
         retval.start = input.LT(1);
@@ -13651,15 +13658,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:2: ({...}? =>id= ID -> VK_MEMBEROF[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:927:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:928:2: ({...}? =>id= ID -> VK_MEMBEROF[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:928:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "memberof_key", "(validateIdentifierKey(DroolsSoftKeywords.MEMBEROF))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_memberof_key4222); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_memberof_key4238); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13674,7 +13681,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 927:69: -> VK_MEMBEROF[$id]
+            // 928:69: -> VK_MEMBEROF[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_MEMBEROF, id));
 
@@ -13707,7 +13714,7 @@
     };
 
     // $ANTLR start not_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:930:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:931:1: not_key : {...}? =>id= ID -> VK_NOT[$id] ;
     public final not_key_return not_key() throws RecognitionException {
         not_key_return retval = new not_key_return();
         retval.start = input.LT(1);
@@ -13720,15 +13727,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:931:2: ({...}? =>id= ID -> VK_NOT[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:931:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:2: ({...}? =>id= ID -> VK_NOT[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:932:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.NOT))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "not_key", "(validateIdentifierKey(DroolsSoftKeywords.NOT))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_not_key4244); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_not_key4260); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13743,7 +13750,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 931:64: -> VK_NOT[$id]
+            // 932:64: -> VK_NOT[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_NOT, id));
 
@@ -13776,7 +13783,7 @@
     };
 
     // $ANTLR start in_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:934:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:935:1: in_key : {...}? =>id= ID -> VK_IN[$id] ;
     public final in_key_return in_key() throws RecognitionException {
         in_key_return retval = new in_key_return();
         retval.start = input.LT(1);
@@ -13789,15 +13796,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:935:2: ({...}? =>id= ID -> VK_IN[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:935:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:2: ({...}? =>id= ID -> VK_IN[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:936:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.IN))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "in_key", "(validateIdentifierKey(DroolsSoftKeywords.IN))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_in_key4266); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_in_key4282); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13812,7 +13819,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 935:63: -> VK_IN[$id]
+            // 936:63: -> VK_IN[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_IN, id));
 
@@ -13845,7 +13852,7 @@
     };
 
     // $ANTLR start or_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:938:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:1: or_key : {...}? =>id= ID -> VK_OR[$id] ;
     public final or_key_return or_key() throws RecognitionException {
         or_key_return retval = new or_key_return();
         retval.start = input.LT(1);
@@ -13858,15 +13865,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:2: ({...}? =>id= ID -> VK_OR[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:939:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:2: ({...}? =>id= ID -> VK_OR[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:940:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "or_key", "(validateIdentifierKey(DroolsSoftKeywords.OR))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_or_key4288); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_or_key4304); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13881,7 +13888,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 939:63: -> VK_OR[$id]
+            // 940:63: -> VK_OR[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_OR, id));
 
@@ -13914,7 +13921,7 @@
     };
 
     // $ANTLR start and_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:942:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:1: and_key : {...}? =>id= ID -> VK_AND[$id] ;
     public final and_key_return and_key() throws RecognitionException {
         and_key_return retval = new and_key_return();
         retval.start = input.LT(1);
@@ -13927,15 +13934,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:2: ({...}? =>id= ID -> VK_AND[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:943:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:2: ({...}? =>id= ID -> VK_AND[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:944:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "and_key", "(validateIdentifierKey(DroolsSoftKeywords.AND))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_and_key4310); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_and_key4326); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -13950,7 +13957,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 943:64: -> VK_AND[$id]
+            // 944:64: -> VK_AND[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_AND, id));
 
@@ -13983,7 +13990,7 @@
     };
 
     // $ANTLR start exists_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:946:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:1: exists_key : {...}? =>id= ID -> VK_EXISTS[$id] ;
     public final exists_key_return exists_key() throws RecognitionException {
         exists_key_return retval = new exists_key_return();
         retval.start = input.LT(1);
@@ -13996,15 +14003,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:947:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:2: ({...}? =>id= ID -> VK_EXISTS[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:948:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.EXISTS))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "exists_key", "(validateIdentifierKey(DroolsSoftKeywords.EXISTS))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_exists_key4332); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_exists_key4348); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14019,7 +14026,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 947:67: -> VK_EXISTS[$id]
+            // 948:67: -> VK_EXISTS[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_EXISTS, id));
 
@@ -14052,7 +14059,7 @@
     };
 
     // $ANTLR start forall_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:950:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:1: forall_key : {...}? =>id= ID -> VK_FORALL[$id] ;
     public final forall_key_return forall_key() throws RecognitionException {
         forall_key_return retval = new forall_key_return();
         retval.start = input.LT(1);
@@ -14065,15 +14072,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:2: ({...}? =>id= ID -> VK_FORALL[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:951:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:2: ({...}? =>id= ID -> VK_FORALL[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:952:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.FORALL))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "forall_key", "(validateIdentifierKey(DroolsSoftKeywords.FORALL))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_forall_key4354); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_forall_key4370); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14088,7 +14095,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 951:67: -> VK_FORALL[$id]
+            // 952:67: -> VK_FORALL[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_FORALL, id));
 
@@ -14121,7 +14128,7 @@
     };
 
     // $ANTLR start from_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:954:1: from_key : {...}? =>id= ID -> VK_FROM[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:1: from_key : {...}? =>id= ID -> VK_FROM[$id] ;
     public final from_key_return from_key() throws RecognitionException {
         from_key_return retval = new from_key_return();
         retval.start = input.LT(1);
@@ -14134,15 +14141,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:2: ({...}? =>id= ID -> VK_FROM[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:955:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:2: ({...}? =>id= ID -> VK_FROM[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:956:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.FROM))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "from_key", "(validateIdentifierKey(DroolsSoftKeywords.FROM))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_from_key4376); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_from_key4392); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14157,7 +14164,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 955:65: -> VK_FROM[$id]
+            // 956:65: -> VK_FROM[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_FROM, id));
 
@@ -14190,20 +14197,20 @@
     };
 
     // $ANTLR start entry_point_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:958:1: entry_point_key : {...}? => ID MISC ID -> VK_ENTRY_POINT[$start, text] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:959:1: entry_point_key : {...}? => ID MISC ID -> VK_ENTRY_POINT[$start, text] ;
     public final entry_point_key_return entry_point_key() throws RecognitionException {
         entry_point_key_return retval = new entry_point_key_return();
         retval.start = input.LT(1);
 
         Object root_0 = null;
 
-        Token ID316=null;
-        Token MISC317=null;
-        Token ID318=null;
+        Token ID320=null;
+        Token MISC321=null;
+        Token ID322=null;
 
-        Object ID316_tree=null;
-        Object MISC317_tree=null;
-        Object ID318_tree=null;
+        Object ID320_tree=null;
+        Object MISC321_tree=null;
+        Object ID322_tree=null;
         RewriteRuleTokenStream stream_MISC=new RewriteRuleTokenStream(adaptor,"token MISC");
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
@@ -14211,24 +14218,24 @@
         	String text = "";
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:3: ({...}? => ID MISC ID -> VK_ENTRY_POINT[$start, text] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:961:5: {...}? => ID MISC ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:3: ({...}? => ID MISC ID -> VK_ENTRY_POINT[$start, text] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:962:5: {...}? => ID MISC ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.POINT))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "entry_point_key", "(validateIdentifierKey(DroolsSoftKeywords.ENTRY) && validateLT(2, \"-\") && validateLT(3, DroolsSoftKeywords.POINT))");
             }
-            ID316=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_entry_point_key4399); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID316);
+            ID320=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_entry_point_key4415); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID320);
 
-            MISC317=(Token)input.LT(1);
-            match(input,MISC,FOLLOW_MISC_in_entry_point_key4401); if (failed) return retval;
-            if ( backtracking==0 ) stream_MISC.add(MISC317);
+            MISC321=(Token)input.LT(1);
+            match(input,MISC,FOLLOW_MISC_in_entry_point_key4417); if (failed) return retval;
+            if ( backtracking==0 ) stream_MISC.add(MISC321);
 
-            ID318=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_entry_point_key4403); if (failed) return retval;
-            if ( backtracking==0 ) stream_ID.add(ID318);
+            ID322=(Token)input.LT(1);
+            match(input,ID,FOLLOW_ID_in_entry_point_key4419); if (failed) return retval;
+            if ( backtracking==0 ) stream_ID.add(ID322);
 
             if ( backtracking==0 ) {
               text = input.toString(retval.start,input.LT(-1));
@@ -14245,7 +14252,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 962:2: -> VK_ENTRY_POINT[$start, text]
+            // 963:2: -> VK_ENTRY_POINT[$start, text]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_ENTRY_POINT, ((Token)retval.start),  text));
 
@@ -14278,7 +14285,7 @@
     };
 
     // $ANTLR start accumulate_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:965:1: accumulate_key : {...}? =>id= ID -> VK_ACCUMULATE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:1: accumulate_key : {...}? =>id= ID -> VK_ACCUMULATE[$id] ;
     public final accumulate_key_return accumulate_key() throws RecognitionException {
         accumulate_key_return retval = new accumulate_key_return();
         retval.start = input.LT(1);
@@ -14291,15 +14298,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:2: ({...}? =>id= ID -> VK_ACCUMULATE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:966:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:2: ({...}? =>id= ID -> VK_ACCUMULATE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:967:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.ACCUMULATE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "accumulate_key", "(validateIdentifierKey(DroolsSoftKeywords.ACCUMULATE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_accumulate_key4428); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_accumulate_key4444); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14314,7 +14321,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 966:71: -> VK_ACCUMULATE[$id]
+            // 967:71: -> VK_ACCUMULATE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_ACCUMULATE, id));
 
@@ -14347,7 +14354,7 @@
     };
 
     // $ANTLR start init_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:969:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:1: init_key : {...}? =>id= ID -> VK_INIT[$id] ;
     public final init_key_return init_key() throws RecognitionException {
         init_key_return retval = new init_key_return();
         retval.start = input.LT(1);
@@ -14360,15 +14367,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:2: ({...}? =>id= ID -> VK_INIT[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:970:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:2: ({...}? =>id= ID -> VK_INIT[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:971:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.INIT))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "init_key", "(validateIdentifierKey(DroolsSoftKeywords.INIT))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_init_key4450); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_init_key4466); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14383,7 +14390,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 970:65: -> VK_INIT[$id]
+            // 971:65: -> VK_INIT[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_INIT, id));
 
@@ -14416,7 +14423,7 @@
     };
 
     // $ANTLR start action_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:973:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:1: action_key : {...}? =>id= ID -> VK_ACTION[$id] ;
     public final action_key_return action_key() throws RecognitionException {
         action_key_return retval = new action_key_return();
         retval.start = input.LT(1);
@@ -14429,15 +14436,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:2: ({...}? =>id= ID -> VK_ACTION[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:974:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:2: ({...}? =>id= ID -> VK_ACTION[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:975:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.ACTION))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "action_key", "(validateIdentifierKey(DroolsSoftKeywords.ACTION))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_action_key4472); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_action_key4488); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14452,7 +14459,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 974:67: -> VK_ACTION[$id]
+            // 975:67: -> VK_ACTION[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_ACTION, id));
 
@@ -14485,7 +14492,7 @@
     };
 
     // $ANTLR start reverse_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:977:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:1: reverse_key : {...}? =>id= ID -> VK_REVERSE[$id] ;
     public final reverse_key_return reverse_key() throws RecognitionException {
         reverse_key_return retval = new reverse_key_return();
         retval.start = input.LT(1);
@@ -14498,15 +14505,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:978:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:2: ({...}? =>id= ID -> VK_REVERSE[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:979:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "reverse_key", "(validateIdentifierKey(DroolsSoftKeywords.REVERSE))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_reverse_key4494); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_reverse_key4510); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14521,7 +14528,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 978:68: -> VK_REVERSE[$id]
+            // 979:68: -> VK_REVERSE[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_REVERSE, id));
 
@@ -14554,7 +14561,7 @@
     };
 
     // $ANTLR start result_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:981:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:1: result_key : {...}? =>id= ID -> VK_RESULT[$id] ;
     public final result_key_return result_key() throws RecognitionException {
         result_key_return retval = new result_key_return();
         retval.start = input.LT(1);
@@ -14567,15 +14574,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:2: ({...}? =>id= ID -> VK_RESULT[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:982:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:983:2: ({...}? =>id= ID -> VK_RESULT[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:983:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "result_key", "(validateIdentifierKey(DroolsSoftKeywords.RESULT))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_result_key4516); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_result_key4532); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14590,7 +14597,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 982:67: -> VK_RESULT[$id]
+            // 983:67: -> VK_RESULT[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_RESULT, id));
 
@@ -14623,7 +14630,7 @@
     };
 
     // $ANTLR start collect_key
-    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:985:1: collect_key : {...}? =>id= ID -> VK_COLLECT[$id] ;
+    // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:1: collect_key : {...}? =>id= ID -> VK_COLLECT[$id] ;
     public final collect_key_return collect_key() throws RecognitionException {
         collect_key_return retval = new collect_key_return();
         retval.start = input.LT(1);
@@ -14636,15 +14643,15 @@
         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
 
         try {
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:2: ({...}? =>id= ID -> VK_COLLECT[$id] )
-            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:986:4: {...}? =>id= ID
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:2: ({...}? =>id= ID -> VK_COLLECT[$id] )
+            // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:987:4: {...}? =>id= ID
             {
             if ( !((validateIdentifierKey(DroolsSoftKeywords.COLLECT))) ) {
                 if (backtracking>0) {failed=true; return retval;}
                 throw new FailedPredicateException(input, "collect_key", "(validateIdentifierKey(DroolsSoftKeywords.COLLECT))");
             }
             id=(Token)input.LT(1);
-            match(input,ID,FOLLOW_ID_in_collect_key4538); if (failed) return retval;
+            match(input,ID,FOLLOW_ID_in_collect_key4554); if (failed) return retval;
             if ( backtracking==0 ) stream_ID.add(id);
 
 
@@ -14659,7 +14666,7 @@
             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"token retval",retval!=null?retval.tree:null);
 
             root_0 = (Object)adaptor.nil();
-            // 986:68: -> VK_COLLECT[$id]
+            // 987:68: -> VK_COLLECT[$id]
             {
                 adaptor.addChild(root_0, adaptor.create(VK_COLLECT, id));
 
@@ -14704,23 +14711,23 @@
     // $ANTLR start synpred2
     public final void synpred2_fragment() throws RecognitionException {   
         // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:5: ( or_key | DOUBLE_PIPE )
-        int alt95=2;
-        int LA95_0 = input.LA(1);
+        int alt93=2;
+        int LA93_0 = input.LA(1);
 
-        if ( (LA95_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
-            alt95=1;
+        if ( (LA93_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.OR)))) {
+            alt93=1;
         }
-        else if ( (LA95_0==DOUBLE_PIPE) ) {
-            alt95=2;
+        else if ( (LA93_0==DOUBLE_PIPE) ) {
+            alt93=2;
         }
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("486:5: synpred2 : ( or_key | DOUBLE_PIPE );", 95, 0, input);
+                new NoViableAltException("486:5: synpred2 : ( or_key | DOUBLE_PIPE );", 93, 0, input);
 
             throw nvae;
         }
-        switch (alt95) {
+        switch (alt93) {
             case 1 :
                 // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:486:6: or_key
                 {
@@ -14760,23 +14767,23 @@
     // $ANTLR start synpred4
     public final void synpred4_fragment() throws RecognitionException {   
         // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:496:5: ( and_key | DOUBLE_AMPER )
-        int alt96=2;
-        int LA96_0 = input.LA(1);
+        int alt94=2;
+        int LA94_0 = input.LA(1);
 
-        if ( (LA96_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
-            alt96=1;
+        if ( (LA94_0==ID) && ((validateIdentifierKey(DroolsSoftKeywords.AND)))) {
+            alt94=1;
         }
-        else if ( (LA96_0==DOUBLE_AMPER) ) {
-            alt96=2;
+        else if ( (LA94_0==DOUBLE_AMPER) ) {
+            alt94=2;
         }
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("496:5: synpred4 : ( and_key | DOUBLE_AMPER );", 96, 0, input);
+                new NoViableAltException("496:5: synpred4 : ( and_key | DOUBLE_AMPER );", 94, 0, input);
 
             throw nvae;
         }
-        switch (alt96) {
+        switch (alt94) {
             case 1 :
                 // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:496:6: and_key
                 {
@@ -14816,22 +14823,22 @@
         {
         match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred61778); if (failed) return ;
         // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:514:24: ( or_key | and_key )
-        int alt97=2;
-        int LA97_0 = input.LA(1);
+        int alt95=2;
+        int LA95_0 = input.LA(1);
 
-        if ( (LA97_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            int LA97_1 = input.LA(2);
+        if ( (LA95_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            int LA95_1 = input.LA(2);
 
             if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                alt97=1;
+                alt95=1;
             }
             else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                alt97=2;
+                alt95=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("514:24: ( or_key | and_key )", 97, 1, input);
+                    new NoViableAltException("514:24: ( or_key | and_key )", 95, 1, input);
 
                 throw nvae;
             }
@@ -14839,11 +14846,11 @@
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("514:24: ( or_key | and_key )", 97, 0, input);
+                new NoViableAltException("514:24: ( or_key | and_key )", 95, 0, input);
 
             throw nvae;
         }
-        switch (alt97) {
+        switch (alt95) {
             case 1 :
                 // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:514:25: or_key
                 {
@@ -14879,22 +14886,22 @@
         {
         match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_synpred71865); if (failed) return ;
         // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:17: ( or_key | and_key )
-        int alt98=2;
-        int LA98_0 = input.LA(1);
+        int alt96=2;
+        int LA96_0 = input.LA(1);
 
-        if ( (LA98_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
-            int LA98_1 = input.LA(2);
+        if ( (LA96_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.AND))||(validateIdentifierKey(DroolsSoftKeywords.OR))))) {
+            int LA96_1 = input.LA(2);
 
             if ( ((validateIdentifierKey(DroolsSoftKeywords.OR))) ) {
-                alt98=1;
+                alt96=1;
             }
             else if ( ((validateIdentifierKey(DroolsSoftKeywords.AND))) ) {
-                alt98=2;
+                alt96=2;
             }
             else {
                 if (backtracking>0) {failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("522:17: ( or_key | and_key )", 98, 1, input);
+                    new NoViableAltException("522:17: ( or_key | and_key )", 96, 1, input);
 
                 throw nvae;
             }
@@ -14902,11 +14909,11 @@
         else {
             if (backtracking>0) {failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("522:17: ( or_key | and_key )", 98, 0, input);
+                new NoViableAltException("522:17: ( or_key | and_key )", 96, 0, input);
 
             throw nvae;
         }
-        switch (alt98) {
+        switch (alt96) {
             case 1 :
                 // /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DRL.g:522:18: or_key
                 {
@@ -15172,167 +15179,192 @@
     protected DFA74 dfa74 = new DFA74(this);
     protected DFA75 dfa75 = new DFA75(this);
     static final String DFA5_eotS =
-        "\162\uffff";
+        "\u0085\uffff";
     static final String DFA5_eofS =
-        "\3\uffff\1\17\1\22\11\uffff\1\17\4\uffff\1\17\6\uffff\2\17\10\uffff"+
-        "\1\22\3\uffff\1\22\2\71\1\17\11\uffff\1\22\5\uffff\2\17\4\uffff"+
-        "\2\17\1\uffff\2\22\1\uffff\1\22\3\uffff\1\22\1\uffff\3\17\2\22\4"+
-        "\uffff\1\17\1\uffff\2\17\1\22\1\uffff\2\22\4\uffff\1\17\1\22\5\uffff"+
-        "\1\17\1\22\7\uffff";
+        "\3\uffff\1\17\1\22\11\uffff\1\17\10\uffff\1\17\5\uffff\1\17\2\uffff"+
+        "\1\17\5\uffff\1\22\1\uffff\1\22\5\uffff\1\17\5\uffff\2\107\1\uffff"+
+        "\1\22\5\uffff\2\17\2\uffff\1\17\2\uffff\1\17\4\uffff\2\22\3\uffff"+
+        "\1\22\1\uffff\1\22\5\uffff\2\17\1\uffff\1\17\2\22\5\uffff\1\17\1"+
+        "\uffff\2\17\4\uffff\1\22\1\uffff\2\22\3\uffff\1\17\4\uffff\1\22"+
+        "\1\uffff\1\17\5\uffff\1\22\7\uffff";
     static final String DFA5_minS =
-        "\2\126\1\uffff\2\125\3\uffff\1\126\1\155\2\126\2\uffff\1\126\1\uffff"+
-        "\1\126\2\uffff\1\125\3\126\3\0\3\126\1\155\2\uffff\1\0\4\126\3\0"+
-        "\1\126\2\125\1\126\2\0\1\uffff\3\126\2\uffff\1\0\2\126\1\0\1\4\1"+
-        "\uffff\4\126\3\0\7\126\3\0\1\126\1\4\5\126\4\4\10\126\4\4\2\126"+
-        "\5\4\2\126\7\4";
+        "\2\126\1\uffff\2\125\3\uffff\2\126\2\uffff\1\126\1\156\1\126\1\uffff"+
+        "\1\126\2\uffff\5\126\2\0\1\126\1\156\1\0\1\126\2\uffff\1\125\3\126"+
+        "\2\0\1\126\1\0\1\126\1\156\1\126\1\0\1\126\1\uffff\1\126\2\0\3\126"+
+        "\2\125\1\0\11\126\1\0\1\126\2\0\1\126\1\0\1\4\1\uffff\4\126\2\0"+
+        "\1\126\1\0\1\126\1\134\1\126\1\156\1\134\1\156\2\126\1\4\3\126\1"+
+        "\156\2\126\1\156\5\126\4\4\4\126\1\134\1\156\1\134\1\126\4\4\3\126"+
+        "\5\4\1\126\7\4";
     static final String DFA5_maxS =
-        "\1\126\1\161\1\uffff\2\156\3\uffff\1\126\1\155\1\161\1\135\2\uffff"+
-        "\1\126\1\uffff\1\161\2\uffff\2\154\1\126\1\156\3\0\2\156\1\126\1"+
-        "\155\2\uffff\1\0\1\157\1\161\1\126\1\156\3\0\1\156\1\161\1\133\1"+
-        "\161\2\0\1\uffff\1\161\2\154\2\uffff\1\0\2\161\1\0\1\172\1\uffff"+
-        "\1\126\2\156\1\126\3\0\2\156\1\126\2\156\1\126\1\156\3\0\1\156\1"+
-        "\172\1\157\1\156\1\161\1\156\1\161\4\172\1\156\1\126\3\156\1\126"+
-        "\2\156\4\172\2\156\5\172\2\156\7\172";
+        "\1\126\1\162\1\uffff\2\157\3\uffff\1\135\1\162\2\uffff\1\126\1\156"+
+        "\1\126\1\uffff\1\162\2\uffff\1\155\1\160\1\126\2\157\2\0\1\126\1"+
+        "\156\1\0\1\157\2\uffff\2\155\1\162\1\126\2\0\1\157\1\0\1\157\1\156"+
+        "\1\126\1\0\1\126\1\uffff\1\162\2\0\1\162\2\155\1\162\1\133\1\0\2"+
+        "\162\3\155\1\126\2\157\1\126\1\0\1\157\2\0\1\157\1\0\1\173\1\uffff"+
+        "\1\126\2\157\1\126\2\0\1\157\1\0\1\157\1\155\1\126\1\156\1\155\1"+
+        "\156\1\157\1\162\1\173\1\160\1\157\1\162\1\156\2\155\1\156\1\155"+
+        "\1\157\1\126\2\157\4\173\1\157\1\126\2\157\1\155\1\156\1\155\1\157"+
+        "\4\173\1\157\1\155\1\157\5\173\1\157\7\173";
     static final String DFA5_acceptS =
-        "\2\uffff\1\1\2\uffff\3\1\4\uffff\1\10\1\7\1\uffff\1\3\1\uffff\1"+
-        "\6\1\1\13\uffff\1\2\1\4\16\uffff\1\5\3\uffff\2\5\5\uffff\1\4\70"+
-        "\uffff";
+        "\2\uffff\1\1\2\uffff\3\1\2\uffff\1\10\1\7\3\uffff\1\3\1\uffff\1"+
+        "\6\1\1\13\uffff\1\2\1\4\15\uffff\1\5\31\uffff\1\4\75\uffff";
     static final String DFA5_specialS =
-        "\1\112\1\114\1\uffff\1\21\1\34\3\uffff\1\64\1\17\1\123\1\20\2\uffff"+
-        "\1\113\1\uffff\1\66\2\uffff\1\40\1\67\1\137\1\77\1\1\1\110\1\52"+
-        "\1\37\1\22\1\134\1\70\2\uffff\1\3\1\122\1\125\1\50\1\76\1\126\1"+
-        "\107\1\16\1\73\1\120\1\111\1\41\1\33\1\115\1\uffff\1\117\1\5\1\7"+
-        "\2\uffff\1\23\1\133\1\4\1\140\1\26\1\uffff\1\127\1\27\1\25\1\141"+
-        "\1\14\1\43\1\106\1\105\1\116\1\35\1\44\1\132\1\51\1\75\1\102\1\121"+
-        "\1\71\1\6\1\56\1\47\1\53\1\10\1\131\1\46\1\55\1\65\1\13\1\135\1"+
-        "\2\1\130\1\11\1\104\1\136\1\36\1\74\1\0\1\142\1\30\1\101\1\63\1"+
-        "\42\1\103\1\54\1\12\1\57\1\62\1\124\1\15\1\72\1\24\1\100\1\61\1"+
-        "\32\1\60\1\45\1\31}>";
+        "\1\14\1\62\1\uffff\1\130\1\103\3\uffff\1\34\1\127\2\uffff\1\163"+
+        "\1\154\1\5\1\uffff\1\107\2\uffff\1\122\1\104\1\24\1\121\1\46\1\111"+
+        "\1\13\1\37\1\33\1\162\1\74\2\uffff\1\1\1\141\1\132\1\76\1\40\1\112"+
+        "\1\144\1\102\1\32\1\136\1\115\1\26\1\10\1\uffff\1\2\1\52\1\145\1"+
+        "\156\1\43\1\41\1\65\1\42\1\150\1\143\1\56\1\161\1\60\1\16\1\55\1"+
+        "\75\1\7\1\25\1\151\1\11\1\146\1\64\1\110\1\157\1\167\1\uffff\1\153"+
+        "\1\22\1\47\1\77\1\17\1\44\1\6\1\133\1\106\1\15\1\66\1\61\1\147\1"+
+        "\67\1\114\1\12\1\53\1\72\1\120\1\142\1\30\1\117\1\63\1\31\1\23\1"+
+        "\131\1\54\1\0\1\51\1\101\1\36\1\71\1\4\1\134\1\152\1\113\1\57\1"+
+        "\45\1\27\1\35\1\50\1\135\1\73\1\140\1\126\1\165\1\164\1\160\1\70"+
+        "\1\100\1\166\1\125\1\116\1\105\1\137\1\155\1\124\1\21\1\123\1\3"+
+        "\1\20}>";
     static final String[] DFA5_transitionS = {
             "\1\1",
-            "\1\3\3\uffff\1\4\1\7\3\uffff\1\5\1\6\20\uffff\1\2",
+            "\1\3\3\uffff\1\4\1\7\3\uffff\1\6\1\5\21\uffff\1\2",
             "",
-            "\1\16\1\12\1\10\1\17\1\14\1\uffff\1\13\20\uffff\1\11\1\uffff"+
-            "\1\15",
-            "\1\21\1\20\2\uffff\1\14\1\uffff\1\14\22\uffff\1\15",
+            "\1\16\1\11\1\14\1\17\1\12\1\uffff\1\10\21\uffff\1\15\1\uffff"+
+            "\1\13",
+            "\1\21\1\20\2\uffff\1\12\1\uffff\1\12\23\uffff\1\13",
             "",
             "",
             "",
-            "\1\23",
-            "\1\24",
-            "\1\30\1\34\2\uffff\1\31\1\27\2\uffff\1\26\1\33\1\32\13\uffff"+
-            "\1\35\1\uffff\1\15\2\uffff\1\25",
-            "\1\40\4\uffff\1\14\1\uffff\1\41",
+            "\1\23\4\uffff\1\12\1\uffff\1\24",
+            "\1\31\1\32\2\uffff\1\34\1\30\2\uffff\1\26\1\35\1\27\14\uffff"+
+            "\1\33\1\uffff\1\13\2\uffff\1\25",
             "",
             "",
+            "\1\40",
+            "\1\41",
             "\1\42",
             "",
-            "\1\45\1\34\2\uffff\1\46\1\47\2\uffff\1\26\1\50\1\44\13\uffff"+
-            "\1\35\1\uffff\1\15\2\uffff\1\43",
+            "\1\44\1\32\2\uffff\1\45\1\47\2\uffff\1\26\1\50\1\46\14\uffff"+
+            "\1\33\1\uffff\1\13\2\uffff\1\43",
             "",
             "",
-            "\1\17\1\51\1\10\1\17\23\uffff\1\11",
-            "\1\52\25\uffff\1\11",
-            "\1\53",
-            "\1\54\4\uffff\1\55\22\uffff\1\15",
+            "\1\53\1\54\3\uffff\1\12\1\52\1\24\1\12\16\uffff\1\51",
+            "\1\12\2\uffff\1\12\1\uffff\1\12\24\uffff\1\55",
+            "\1\56",
+            "\1\57\4\uffff\1\60\23\uffff\1\13",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
             "\1\uffff",
             "\1\uffff",
+            "\1\62",
+            "\1\63",
             "\1\uffff",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\60",
-            "\1\61",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
             "",
             "",
-            "\1\uffff",
-            "\1\14\2\uffff\1\14\1\uffff\1\14\23\uffff\1\63",
-            "\1\64\1\21\2\uffff\2\17\3\uffff\2\17\13\uffff\1\21\4\uffff\1"+
+            "\1\17\1\64\1\14\1\17\24\uffff\1\15",
+            "\1\65\26\uffff\1\15",
+            "\1\66\1\21\2\uffff\2\17\3\uffff\2\17\14\uffff\1\21\4\uffff\1"+
             "\17",
-            "\1\65",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
+            "\1\67",
             "\1\uffff",
             "\1\uffff",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
             "\1\uffff",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\1\71\1\67\3\uffff\1\17\1\70\3\uffff\2\17\20\uffff\1\17",
-            "\2\71\4\uffff\1\63",
-            "\1\57\3\uffff\1\74\1\uffff\1\15\2\uffff\1\73\16\uffff\1\15\2"+
-            "\uffff\1\72",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\71",
+            "\1\72",
             "\1\uffff",
-            "\1\uffff",
+            "\1\73",
             "",
-            "\1\100\3\uffff\1\76\1\77\2\uffff\1\15\1\102\1\101\15\uffff\1"+
-            "\15\2\uffff\1\75",
-            "\1\21\1\34\3\uffff\1\14\20\uffff\1\35",
-            "\1\21\4\uffff\1\14\20\uffff\1\35",
-            "",
-            "",
+            "\1\61\3\uffff\1\76\1\uffff\1\13\2\uffff\1\75\17\uffff\1\13\2"+
+            "\uffff\1\74",
             "\1\uffff",
-            "\1\66\3\uffff\1\105\1\uffff\1\15\2\uffff\1\104\16\uffff\1\15"+
-            "\2\uffff\1\103",
-            "\1\110\3\uffff\1\111\1\112\2\uffff\1\15\1\113\1\107\15\uffff"+
-            "\1\15\2\uffff\1\106",
             "\1\uffff",
-            "\122\17\1\114\6\17\1\115\35\17",
-            "",
-            "\1\116",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\117",
+            "\1\100\3\uffff\1\103\1\102\2\uffff\1\13\1\104\1\101\16\uffff"+
+            "\1\13\2\uffff\1\77",
+            "\1\21\1\32\3\uffff\1\12\21\uffff\1\33",
+            "\1\21\4\uffff\1\12\21\uffff\1\33",
+            "\1\107\1\105\3\uffff\1\17\1\106\3\uffff\2\17\21\uffff\1\17",
+            "\2\107\4\uffff\1\55",
             "\1\uffff",
+            "\1\70\3\uffff\1\111\1\uffff\1\13\2\uffff\1\112\17\uffff\1\13"+
+            "\2\uffff\1\110",
+            "\1\114\3\uffff\1\115\1\117\2\uffff\1\13\1\120\1\116\16\uffff"+
+            "\1\13\2\uffff\1\113",
+            "\1\121\4\uffff\1\12\1\52\1\24\17\uffff\1\51",
+            "\1\124\1\122\4\uffff\1\52\1\24\17\uffff\1\123",
+            "\1\121\1\54\3\uffff\1\12\21\uffff\1\125",
+            "\1\126",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
+            "\1\127",
             "\1\uffff",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
             "\1\uffff",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\120",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\1\121",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
             "\1\uffff",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
             "\1\uffff",
+            "\122\17\1\130\6\17\1\131\36\17",
+            "",
+            "\1\132",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\133",
             "\1\uffff",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\122\17\1\125\1\124\4\17\1\123\1\115\16\17\1\122\16\17",
-            "\1\17\30\uffff\1\63",
-            "\1\57\5\uffff\1\15\2\uffff\1\126\16\uffff\1\15",
-            "\1\57\3\uffff\1\131\1\uffff\1\15\2\uffff\1\130\16\uffff\1\15"+
-            "\2\uffff\1\127",
-            "\1\66\5\uffff\1\15\2\uffff\1\132\16\uffff\1\15",
-            "\1\66\3\uffff\1\134\1\uffff\1\15\2\uffff\1\135\16\uffff\1\15"+
-            "\2\uffff\1\133",
-            "\151\17\1\136\15\17",
-            "\122\17\1\137\44\17",
-            "\122\17\1\140\44\17",
-            "\130\17\1\123\1\115\16\17\1\141\16\17",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\142",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\1\143",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\122\17\1\125\5\17\1\123\1\115\16\17\1\122\16\17",
-            "\122\17\1\146\1\145\4\17\1\123\1\115\16\17\1\144\16\17",
-            "\122\17\1\125\1\124\24\17\1\147\16\17",
-            "\151\17\1\150\15\17",
-            "\1\57\5\uffff\1\15\2\uffff\1\151\16\uffff\1\15",
-            "\1\66\5\uffff\1\15\2\uffff\1\152\16\uffff\1\15",
-            "\151\17\1\153\15\17",
-            "\122\17\1\154\44\17",
-            "\130\17\1\123\1\115\16\17\1\155\16\17",
-            "\151\17\1\156\15\17",
-            "\130\17\1\123\1\115\16\17\1\141\16\17",
-            "\1\57\5\uffff\1\15\21\uffff\1\15",
-            "\1\66\5\uffff\1\15\21\uffff\1\15",
-            "\122\17\1\146\5\17\1\123\1\115\16\17\1\144\16\17",
-            "\122\17\1\146\1\145\24\17\1\157\16\17",
-            "\151\17\1\160\15\17",
-            "\122\17\1\125\25\17\1\147\16\17",
-            "\151\17\1\161\15\17",
-            "\130\17\1\123\1\115\16\17\1\155\16\17",
-            "\122\17\1\146\25\17\1\157\16\17"
+            "\1\uffff",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\uffff",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\52\1\24\17\uffff\1\134",
+            "\1\135",
+            "\1\136",
+            "\1\52\1\24\17\uffff\1\137",
+            "\1\140",
+            "\1\61\5\uffff\1\13\2\uffff\1\141\17\uffff\1\13",
+            "\1\61\3\uffff\1\144\1\uffff\1\13\2\uffff\1\143\17\uffff\1\13"+
+            "\2\uffff\1\142",
+            "\122\17\1\150\1\147\4\17\1\146\1\131\17\17\1\145\16\17",
+            "\1\17\31\uffff\1\55",
+            "\1\70\5\uffff\1\13\2\uffff\1\151\17\uffff\1\13",
+            "\1\70\3\uffff\1\153\1\uffff\1\13\2\uffff\1\154\17\uffff\1\13"+
+            "\2\uffff\1\152",
+            "\1\155",
+            "\1\124\1\122\25\uffff\1\156",
+            "\1\124\5\uffff\1\52\1\24\17\uffff\1\123",
+            "\1\157",
+            "\1\121\4\uffff\1\12\21\uffff\1\125",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
+            "\1\160",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
+            "\152\17\1\161\15\17",
+            "\122\17\1\162\45\17",
+            "\122\17\1\163\45\17",
+            "\130\17\1\146\1\131\17\17\1\164\16\17",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\165",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\1\52\1\24\17\uffff\1\134",
+            "\1\166",
+            "\1\52\1\24\17\uffff\1\137",
+            "\1\61\5\uffff\1\13\2\uffff\1\167\17\uffff\1\13",
+            "\122\17\1\150\5\17\1\146\1\131\17\17\1\145\16\17",
+            "\122\17\1\172\1\170\4\17\1\146\1\131\17\17\1\171\16\17",
+            "\122\17\1\150\1\147\25\17\1\173\16\17",
+            "\152\17\1\174\15\17",
+            "\1\70\5\uffff\1\13\2\uffff\1\175\17\uffff\1\13",
+            "\1\124\26\uffff\1\156",
+            "\1\61\5\uffff\1\13\22\uffff\1\13",
+            "\122\17\1\176\45\17",
+            "\152\17\1\177\15\17",
+            "\130\17\1\146\1\131\17\17\1\u0080\16\17",
+            "\152\17\1\u0081\15\17",
+            "\130\17\1\146\1\131\17\17\1\164\16\17",
+            "\1\70\5\uffff\1\13\22\uffff\1\13",
+            "\122\17\1\172\1\170\25\17\1\u0082\16\17",
+            "\122\17\1\172\5\17\1\146\1\131\17\17\1\171\16\17",
+            "\152\17\1\u0083\15\17",
+            "\122\17\1\150\26\17\1\173\16\17",
+            "\152\17\1\u0084\15\17",
+            "\130\17\1\146\1\131\17\17\1\u0080\16\17",
+            "\122\17\1\172\26\17\1\u0082\16\17"
     };
 
     static final short[] DFA5_eot = DFA.unpackEncodedString(DFA5_eotS);
@@ -15371,548 +15403,512 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA5_93 = input.LA(1);
+                        int LA5_99 = input.LA(1);
 
                          
-                        int index5_93 = input.index();
+                        int index5_99 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_93==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        if ( (LA5_99==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_93==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_99==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
 
-                        else if ( (LA5_93==COMMA||LA5_93==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_99==COMMA||LA5_99==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
                          
-                        input.seek(index5_93);
+                        input.seek(index5_99);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA5_23 = input.LA(1);
+                        int LA5_32 = input.LA(1);
 
                          
-                        int index5_23 = input.index();
+                        int index5_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+                        if ( (LA5_32==EOF||LA5_32==SEMICOLON||LA5_32==DOT_STAR) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {s = 46;}
+                        else if ( (LA5_32==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 52;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( (LA5_32==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 12;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 12;}
+                        else if ( (LA5_32==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 13;}
 
                          
-                        input.seek(index5_23);
+                        input.seek(index5_32);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA5_86 = input.LA(1);
+                        int LA5_46 = input.LA(1);
 
                          
-                        int index5_86 = input.index();
+                        int index5_46 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_86==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_46==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 60;}
 
-                        else if ( (LA5_86==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        else if ( (LA5_46==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 61;}
 
-                        else if ( (LA5_86==COMMA||LA5_86==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_46==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
+                        else if ( (LA5_46==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
+
+                        else if ( (LA5_46==COMMA||LA5_46==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                        else if ( (LA5_46==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 62;}
+
                          
-                        input.seek(index5_86);
+                        input.seek(index5_46);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA5_32 = input.LA(1);
+                        int LA5_131 = input.LA(1);
 
                          
-                        int index5_32 = input.index();
+                        int index5_131 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {s = 50;}
+                        if ( (LA5_131==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 12;}
+                        else if ( (LA5_131==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
 
+                        else if ( ((LA5_131>=VT_COMPILATION_UNIT && LA5_131<=LEFT_PAREN)||(LA5_131>=COLON && LA5_131<=NULL)||(LA5_131>=RIGHT_SQUARE && LA5_131<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_131==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 128;}
+
                          
-                        input.seek(index5_32);
+                        input.seek(index5_131);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA5_54 = input.LA(1);
+                        int LA5_104 = input.LA(1);
 
                          
-                        int index5_54 = input.index();
+                        int index5_104 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_54==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 70;}
+                        if ( (LA5_104==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 116;}
 
-                        else if ( (LA5_54==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 71;}
+                        else if ( (LA5_104==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
 
-                        else if ( (LA5_54==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 72;}
+                        else if ( (LA5_104==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
 
-                        else if ( (LA5_54==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 73;}
+                        else if ( ((LA5_104>=VT_COMPILATION_UNIT && LA5_104<=LEFT_PAREN)||(LA5_104>=COLON && LA5_104<=NULL)||(LA5_104>=RIGHT_SQUARE && LA5_104<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_54==COLON||LA5_54==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
-                        else if ( (LA5_54==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 74;}
-
-                        else if ( (LA5_54==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 75;}
-
                          
-                        input.seek(index5_54);
+                        input.seek(index5_104);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA5_48 = input.LA(1);
+                        int LA5_14 = input.LA(1);
 
                          
-                        int index5_48 = input.index();
+                        int index5_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_48==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 29;}
+                        if ( (LA5_14==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 34;}
 
-                        else if ( (LA5_48==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 12;}
+                        else if ( (LA5_14==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_48==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 28;}
-
-                        else if ( (LA5_48==ID) && ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) {s = 17;}
-
                          
-                        input.seek(index5_48);
+                        input.seek(index5_14);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA5_75 = input.LA(1);
+                        int LA5_78 = input.LA(1);
 
                          
-                        int index5_75 = input.index();
+                        int index5_78 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_75==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        if ( (LA5_78==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
-                        else if ( (LA5_75==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_78==COMMA||LA5_78==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_75==COMMA||LA5_75==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_78==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
                          
-                        input.seek(index5_75);
+                        input.seek(index5_78);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA5_49 = input.LA(1);
+                        int LA5_62 = input.LA(1);
 
                          
-                        int index5_49 = input.index();
+                        int index5_62 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_49==ID) && ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) {s = 17;}
+                        if ( (LA5_62==COMMA||LA5_62==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_49==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 29;}
+                        else if ( (LA5_62==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
 
-                        else if ( (LA5_49==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 12;}
+                        else if ( (LA5_62==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
                          
-                        input.seek(index5_49);
+                        input.seek(index5_62);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA5_79 = input.LA(1);
+                        int LA5_44 = input.LA(1);
 
                          
-                        int index5_79 = input.index();
+                        int index5_44 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_79==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 87;}
+                        if ( (LA5_44==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 59;}
 
-                        else if ( (LA5_79==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 88;}
-
-                        else if ( (LA5_79==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
-                        else if ( (LA5_79==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
-
-                        else if ( (LA5_79==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 89;}
-
-                        else if ( (LA5_79==COMMA||LA5_79==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
                          
-                        input.seek(index5_79);
+                        input.seek(index5_44);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA5_88 = input.LA(1);
+                        int LA5_65 = input.LA(1);
 
                          
-                        int index5_88 = input.index();
+                        int index5_65 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_88==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_65==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
 
-                        else if ( (LA5_88==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        else if ( (LA5_65==COMMA||LA5_65==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_88==COMMA||LA5_88==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_65==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
                          
-                        input.seek(index5_88);
+                        input.seek(index5_65);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA5_101 = input.LA(1);
+                        int LA5_87 = input.LA(1);
 
                          
-                        int index5_101 = input.index();
+                        int index5_87 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_101==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 108;}
+                        if ( (LA5_87==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 98;}
 
-                        else if ( ((LA5_101>=VT_COMPILATION_UNIT && LA5_101<=SEMICOLON)||(LA5_101>=DOT && LA5_101<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_87==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 99;}
 
+                        else if ( (LA5_87==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_87==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
+
+                        else if ( (LA5_87==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 100;}
+
+                        else if ( (LA5_87==COMMA||LA5_87==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_101);
+                        input.seek(index5_87);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA5_84 = input.LA(1);
+                        int LA5_25 = input.LA(1);
 
                          
-                        int index5_84 = input.index();
+                        int index5_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_84==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 96;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
 
-                        else if ( ((LA5_84>=VT_COMPILATION_UNIT && LA5_84<=SEMICOLON)||(LA5_84>=DOT && LA5_84<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {s = 17;}
 
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
+
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 10;}
+
                          
-                        input.seek(index5_84);
+                        input.seek(index5_25);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA5_62 = input.LA(1);
+                        int LA5_0 = input.LA(1);
 
                          
-                        int index5_62 = input.index();
+                        int index5_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+                        if ( (LA5_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||(validateIdentifierKey(DroolsSoftKeywords.SALIEN!
 CE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||(validateIdentifierKey(Drool!
 sSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftK
eywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {s = 1;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
-
                          
-                        input.seek(index5_62);
+                        input.seek(index5_0);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA5_105 = input.LA(1);
+                        int LA5_81 = input.LA(1);
 
                          
-                        int index5_105 = input.index();
+                        int index5_81 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_105==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_81==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 92;}
 
-                        else if ( (LA5_105==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        else if ( (LA5_81==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
 
-                        else if ( (LA5_105==COMMA||LA5_105==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_81==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
 
                          
-                        input.seek(index5_105);
+                        input.seek(index5_81);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA5_39 = input.LA(1);
+                        int LA5_59 = input.LA(1);
 
                          
-                        int index5_39 = input.index();
+                        int index5_59 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
+                        if ( (LA5_59==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 85;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( (LA5_59==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 81;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 12;}
+                        else if ( (LA5_59==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 44;}
 
+                        else if ( (LA5_59==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
+
                          
-                        input.seek(index5_39);
+                        input.seek(index5_59);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA5_9 = input.LA(1);
+                        int LA5_76 = input.LA(1);
 
                          
-                        int index5_9 = input.index();
+                        int index5_76 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_9==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
 
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
+
                          
-                        input.seek(index5_9);
+                        input.seek(index5_76);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA5_11 = input.LA(1);
+                        int LA5_132 = input.LA(1);
 
                          
-                        int index5_11 = input.index();
+                        int index5_132 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_11==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 32;}
+                        if ( (LA5_132==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 122;}
 
-                        else if ( (LA5_11==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 33;}
+                        else if ( (LA5_132==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 130;}
 
-                        else if ( (LA5_11==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 12;}
+                        else if ( ((LA5_132>=VT_COMPILATION_UNIT && LA5_132<=SEMICOLON)||(LA5_132>=DOT && LA5_132<=NULL)||(LA5_132>=RIGHT_SQUARE && LA5_132<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
                          
-                        input.seek(index5_11);
+                        input.seek(index5_132);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA5_3 = input.LA(1);
+                        int LA5_129 = input.LA(1);
 
                          
-                        int index5_3 = input.index();
+                        int index5_129 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_3==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 8;}
+                        if ( ((LA5_129>=VT_COMPILATION_UNIT && LA5_129<=SEMICOLON)||(LA5_129>=DOT && LA5_129<=NULL)||(LA5_129>=RIGHT_SQUARE && LA5_129<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_3==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 9;}
+                        else if ( (LA5_129==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 104;}
 
-                        else if ( (LA5_3==ID) && ((((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "funct!
 ion") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateL!
 T(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT))
)||((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)))||((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)))||((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(DroolsSoftKeyword!
 s.IMPORT)))||((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)))||((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)))||((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(Drools!
 SoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "fu
nction") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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.IMPORT))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeyw!
 ords.IMPORT)))||((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)))||((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)))||((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(Dro!
 olsSoftKeywords.IMPORT)))||((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)))||((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)))||((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)))||((validateLT(1, "import") && vali!
 dateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "impor!
 t") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftK
eywords.IMPORT)))||((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)))||((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)))||((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(D!
 roolsSoftKeywords.IMPORT)))||((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.RULE))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "impo!
 rt") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoft
Keywords.IMPORT)))||((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)))||((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)))||((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)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIde!
 ntifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifie!
 rKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(valida!
 teIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((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)))||((validateLT(1!
 , "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(val!
 idateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "impo
rt") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateL!
 T(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)))||((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)))||((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)))||!
 ((validateLT(1, "import") && validateLT(2, "function") )&&(validateIde
ntifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((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)))||((validat!
 eLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "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)))||((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)))||((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)))||((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)))||((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)))||((va!
 lidateLT(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)))||((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)))||((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.IMPO!
 RT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(vali
dateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {s = 10;}
+                        else if ( (LA5_129==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 123;}
 
-                        else if ( (LA5_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 11;}
-
-                        else if ( (LA5_3==END) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 12;}
-
-                        else if ( (LA5_3==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
-                        else if ( (LA5_3==SEMICOLON) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 14;}
-
-                        else if ( (LA5_3==EOF||LA5_3==DOT_STAR) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
-                        input.seek(index5_3);
+                        input.seek(index5_129);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA5_27 = input.LA(1);
+                        int LA5_73 = input.LA(1);
 
                          
-                        int index5_27 = input.index();
+                        int index5_73 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_27==COMMA||LA5_27==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        if ( (LA5_73==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
-                        else if ( (LA5_27==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        else if ( (LA5_73==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
-                        else if ( (LA5_27==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_73==COMMA||LA5_73==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
                          
-                        input.seek(index5_27);
+                        input.seek(index5_73);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA5_52 = input.LA(1);
+                        int LA5_96 = input.LA(1);
 
                          
-                        int index5_52 = input.index();
+                        int index5_96 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+                        if ( (LA5_96==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {s = 17;}
+                        else if ( (LA5_96==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 85;}
 
+                        else if ( (LA5_96==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 81;}
+
                          
-                        input.seek(index5_52);
+                        input.seek(index5_96);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA5_107 = input.LA(1);
+                        int LA5_21 = input.LA(1);
 
                          
-                        int index5_107 = input.index();
+                        int index5_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_107==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        if ( (LA5_21==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 46;}
 
-                        else if ( (LA5_107==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
-
-                        else if ( ((LA5_107>=VT_COMPILATION_UNIT && LA5_107<=SEMICOLON)||(LA5_107>=DOT && LA5_107<=LEFT_PAREN)||(LA5_107>=COLON && LA5_107<=NULL)||(LA5_107>=RIGHT_SQUARE && LA5_107<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
-                        else if ( (LA5_107==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 100;}
-
-                        else if ( (LA5_107==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
-
                          
-                        input.seek(index5_107);
+                        input.seek(index5_21);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA5_60 = input.LA(1);
+                        int LA5_63 = input.LA(1);
 
                          
-                        int index5_60 = input.index();
+                        int index5_63 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_60==COMMA||LA5_60==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        if ( (LA5_63==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 87;}
 
-                        else if ( (LA5_60==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
-
-                        else if ( (LA5_60==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
-                        input.seek(index5_60);
+                        input.seek(index5_63);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA5_56 = input.LA(1);
+                        int LA5_43 = input.LA(1);
 
                          
-                        int index5_56 = input.index();
+                        int index5_43 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_56==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 76;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {s = 45;}
 
-                        else if ( ((LA5_56>=VT_COMPILATION_UNIT && LA5_56<=SEMICOLON)||(LA5_56>=DOT && LA5_56<=COMMA)||(LA5_56>=COLON && LA5_56<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 10;}
 
-                        else if ( (LA5_56==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
-
                          
-                        input.seek(index5_56);
+                        input.seek(index5_43);
                         if ( s>=0 ) return s;
                         break;
                     case 23 : 
-                        int LA5_59 = input.LA(1);
+                        int LA5_110 = input.LA(1);
 
                          
-                        int index5_59 = input.index();
+                        int index5_110 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_59==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_110==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 118;}
 
-                        else if ( (LA5_59==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
-
-                        else if ( (LA5_59==COMMA||LA5_59==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
                          
-                        input.seek(index5_59);
+                        input.seek(index5_110);
                         if ( s>=0 ) return s;
                         break;
                     case 24 : 
-                        int LA5_95 = input.LA(1);
+                        int LA5_92 = input.LA(1);
 
                          
-                        int index5_95 = input.index();
+                        int index5_92 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_95==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        if ( (LA5_92==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 109;}
 
-                        else if ( (LA5_95==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 100;}
-
-                        else if ( ((LA5_95>=VT_COMPILATION_UNIT && LA5_95<=SEMICOLON)||(LA5_95>=DOT_STAR && LA5_95<=LEFT_PAREN)||(LA5_95>=COLON && LA5_95<=NULL)||(LA5_95>=RIGHT_SQUARE && LA5_95<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
-                        else if ( (LA5_95==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
-
-                        else if ( (LA5_95==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 101;}
-
-                        else if ( (LA5_95==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
-
                          
-                        input.seek(index5_95);
+                        input.seek(index5_92);
                         if ( s>=0 ) return s;
                         break;
                     case 25 : 
-                        int LA5_113 = input.LA(1);
+                        int LA5_95 = input.LA(1);
 
                          
-                        int index5_113 = input.index();
+                        int index5_95 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA5_113>=VT_COMPILATION_UNIT && LA5_113<=SEMICOLON)||(LA5_113>=DOT && LA5_113<=NULL)||(LA5_113>=RIGHT_SQUARE && LA5_113<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_95==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 111;}
 
-                        else if ( (LA5_113==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
-
-                        else if ( (LA5_113==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 111;}
-
                          
-                        input.seek(index5_113);
+                        input.seek(index5_95);
                         if ( s>=0 ) return s;
                         break;
                     case 26 : 
-                        int LA5_110 = input.LA(1);
+                        int LA5_40 = input.LA(1);
 
                          
-                        int index5_110 = input.index();
+                        int index5_40 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA5_110>=VT_COMPILATION_UNIT && LA5_110<=SEMICOLON)||(LA5_110>=DOT && LA5_110<=NULL)||(LA5_110>=RIGHT_SQUARE && LA5_110<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_40==COMMA||LA5_40==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_110==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 85;}
+                        else if ( (LA5_40==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
-                        else if ( (LA5_110==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 103;}
+                        else if ( (LA5_40==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
                          
-                        input.seek(index5_110);
+                        input.seek(index5_40);
                         if ( s>=0 ) return s;
                         break;
                     case 27 : 
-                        int LA5_44 = input.LA(1);
+                        int LA5_27 = input.LA(1);
 
                          
-                        int index5_44 = input.index();
+                        int index5_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        if ( (LA5_27==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 51;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 12;}
-
                          
-                        input.seek(index5_44);
+                        input.seek(index5_27);
                         if ( s>=0 ) return s;
                         break;
                     case 28 : 
-                        int LA5_4 = input.LA(1);
+                        int LA5_8 = input.LA(1);
 
                          
-                        int index5_4 = input.index();
+                        int index5_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_4==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 16;}
+                        if ( (LA5_8==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 19;}
 
-                        else if ( (LA5_4==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_8==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
 
-                        else if ( (LA5_4==END||LA5_4==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 12;}
+                        else if ( (LA5_8==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
 
-                        else if ( (LA5_4==SEMICOLON) && ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) {s = 17;}
-
-                        else if ( (LA5_4==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
-
                          
-                        input.seek(index5_4);
+                        input.seek(index5_8);
                         if ( s>=0 ) return s;
                         break;
                     case 29 : 
-                        int LA5_67 = input.LA(1);
+                        int LA5_111 = input.LA(1);
 
                          
-                        int index5_67 = input.index();
+                        int index5_111 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_67==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 80;}
+                        if ( (LA5_111==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
 
+                        else if ( (LA5_111==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
+
+                        else if ( (LA5_111==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 95;}
+
                          
-                        input.seek(index5_67);
+                        input.seek(index5_111);
                         if ( s>=0 ) return s;
                         break;
                     case 30 : 
-                        int LA5_91 = input.LA(1);
+                        int LA5_102 = input.LA(1);
 
                          
-                        int index5_91 = input.index();
+                        int index5_102 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_91==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 99;}
+                        if ( (LA5_102==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 114;}
 
+                        else if ( ((LA5_102>=VT_COMPILATION_UNIT && LA5_102<=SEMICOLON)||(LA5_102>=DOT && LA5_102<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_91);
+                        input.seek(index5_102);
                         if ( s>=0 ) return s;
                         break;
                     case 31 : 
@@ -15922,699 +15918,720 @@
                         int index5_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_26==COMMA||LA5_26==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        if ( (LA5_26==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 50;}
 
-                        else if ( (LA5_26==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
-
-                        else if ( (LA5_26==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
                         input.seek(index5_26);
                         if ( s>=0 ) return s;
                         break;
                     case 32 : 
-                        int LA5_19 = input.LA(1);
+                        int LA5_36 = input.LA(1);
 
                          
-                        int index5_19 = input.index();
+                        int index5_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_19==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 9;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
 
-                        else if ( (LA5_19==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 41;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {s = 17;}
 
-                        else if ( (LA5_19==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 8;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
-                        else if ( (LA5_19==EOF||LA5_19==SEMICOLON||LA5_19==DOT_STAR) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 10;}
 
                          
-                        input.seek(index5_19);
+                        input.seek(index5_36);
                         if ( s>=0 ) return s;
                         break;
                     case 33 : 
-                        int LA5_43 = input.LA(1);
+                        int LA5_51 = input.LA(1);
 
                          
-                        int index5_43 = input.index();
+                        int index5_51 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_43==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 58;}
+                        if ( (LA5_51==ID) && ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) {s = 17;}
 
-                        else if ( (LA5_43==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 59;}
+                        else if ( (LA5_51==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 27;}
 
-                        else if ( (LA5_43==COMMA||LA5_43==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_51==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
 
-                        else if ( (LA5_43==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
-
-                        else if ( (LA5_43==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
-                        else if ( (LA5_43==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 60;}
-
                          
-                        input.seek(index5_43);
+                        input.seek(index5_51);
                         if ( s>=0 ) return s;
                         break;
                     case 34 : 
-                        int LA5_98 = input.LA(1);
+                        int LA5_53 = input.LA(1);
 
                          
-                        int index5_98 = input.index();
+                        int index5_53 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_98==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 105;}
+                        if ( (LA5_53==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) {s = 45;}
 
-                        else if ( (LA5_98==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        else if ( (LA5_53==EOF||(LA5_53>=SEMICOLON && LA5_53<=ID)) && ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) {s = 71;}
 
-                        else if ( (LA5_98==COMMA||LA5_98==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
-                        else if ( (LA5_98==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
-                        input.seek(index5_98);
+                        input.seek(index5_53);
                         if ( s>=0 ) return s;
                         break;
                     case 35 : 
-                        int LA5_63 = input.LA(1);
+                        int LA5_50 = input.LA(1);
 
                          
-                        int index5_63 = input.index();
+                        int index5_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+                        if ( (LA5_50==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 27;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( (LA5_50==ID) && ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) {s = 17;}
 
+                        else if ( (LA5_50==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 26;}
+
+                        else if ( (LA5_50==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
+
                          
-                        input.seek(index5_63);
+                        input.seek(index5_50);
                         if ( s>=0 ) return s;
                         break;
                     case 36 : 
-                        int LA5_68 = input.LA(1);
+                        int LA5_77 = input.LA(1);
 
                          
-                        int index5_68 = input.index();
+                        int index5_77 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_68==COMMA||LA5_68==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
 
-                        else if ( (LA5_68==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
-                        else if ( (LA5_68==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
-
                          
-                        input.seek(index5_68);
+                        input.seek(index5_77);
                         if ( s>=0 ) return s;
                         break;
                     case 37 : 
-                        int LA5_112 = input.LA(1);
+                        int LA5_109 = input.LA(1);
 
                          
-                        int index5_112 = input.index();
+                        int index5_109 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_112==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        if ( (LA5_109==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
 
-                        else if ( (LA5_112==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
+                        else if ( (LA5_109==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
 
-                        else if ( ((LA5_112>=VT_COMPILATION_UNIT && LA5_112<=LEFT_PAREN)||(LA5_112>=COLON && LA5_112<=NULL)||(LA5_112>=RIGHT_SQUARE && LA5_112<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_109==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 92;}
 
-                        else if ( (LA5_112==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 109;}
-
                          
-                        input.seek(index5_112);
+                        input.seek(index5_109);
                         if ( s>=0 ) return s;
                         break;
                     case 38 : 
-                        int LA5_81 = input.LA(1);
+                        int LA5_23 = input.LA(1);
 
                          
-                        int index5_81 = input.index();
+                        int index5_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_81==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 91;}
+                        if ( (LA5_23==COMMA||LA5_23==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_81==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 92;}
+                        else if ( (LA5_23==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
 
-                        else if ( (LA5_81==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 93;}
+                        else if ( (LA5_23==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_81==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
-
-                        else if ( (LA5_81==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
-
-                        else if ( (LA5_81==COMMA||LA5_81==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
                          
-                        input.seek(index5_81);
+                        input.seek(index5_23);
                         if ( s>=0 ) return s;
                         break;
                     case 39 : 
-                        int LA5_77 = input.LA(1);
+                        int LA5_74 = input.LA(1);
 
                          
-                        int index5_77 = input.index();
+                        int index5_74 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_77==LEFT_CURLY) && ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) {s = 51;}
+                        if ( (LA5_74==COMMA||LA5_74==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_77==EOF||LA5_77==ID) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_74==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
+                        else if ( (LA5_74==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+
                          
-                        input.seek(index5_77);
+                        input.seek(index5_74);
                         if ( s>=0 ) return s;
                         break;
                     case 40 : 
-                        int LA5_35 = input.LA(1);
+                        int LA5_112 = input.LA(1);
 
                          
-                        int index5_35 = input.index();
+                        int index5_112 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_35==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 53;}
+                        if ( (LA5_112==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 119;}
 
+                        else if ( (LA5_112==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
+
+                        else if ( (LA5_112==COMMA||LA5_112==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                        else if ( (LA5_112==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_35);
+                        input.seek(index5_112);
                         if ( s>=0 ) return s;
                         break;
                     case 41 : 
-                        int LA5_70 = input.LA(1);
+                        int LA5_100 = input.LA(1);
 
                          
-                        int index5_70 = input.index();
+                        int index5_100 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_70==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 81;}
+                        if ( (LA5_100==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
 
+                        else if ( (LA5_100==COMMA||LA5_100==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                        else if ( (LA5_100==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_70);
+                        input.seek(index5_100);
                         if ( s>=0 ) return s;
                         break;
                     case 42 : 
-                        int LA5_25 = input.LA(1);
+                        int LA5_47 = input.LA(1);
 
                          
-                        int index5_25 = input.index();
+                        int index5_47 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 10;}
 
                          
-                        input.seek(index5_25);
+                        input.seek(index5_47);
                         if ( s>=0 ) return s;
                         break;
                     case 43 : 
-                        int LA5_78 = input.LA(1);
+                        int LA5_88 = input.LA(1);
 
                          
-                        int index5_78 = input.index();
+                        int index5_88 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_78==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 86;}
+                        if ( (LA5_88==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 101;}
 
-                        else if ( (LA5_78==COMMA||LA5_78==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_88==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
 
-                        else if ( (LA5_78==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        else if ( (LA5_88==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
 
-                        else if ( (LA5_78==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_88==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 103;}
 
+                        else if ( ((LA5_88>=VT_COMPILATION_UNIT && LA5_88<=SEMICOLON)||(LA5_88>=DOT_STAR && LA5_88<=LEFT_PAREN)||(LA5_88>=COLON && LA5_88<=NULL)||(LA5_88>=RIGHT_SQUARE && LA5_88<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_88==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 104;}
+
                          
-                        input.seek(index5_78);
+                        input.seek(index5_88);
                         if ( s>=0 ) return s;
                         break;
                     case 44 : 
-                        int LA5_100 = input.LA(1);
+                        int LA5_98 = input.LA(1);
 
                          
-                        int index5_100 = input.index();
+                        int index5_98 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_100==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 107;}
+                        if ( (LA5_98==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 112;}
 
-                        else if ( ((LA5_100>=VT_COMPILATION_UNIT && LA5_100<=LEFT_SQUARE)||(LA5_100>=THEN && LA5_100<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
-                        input.seek(index5_100);
+                        input.seek(index5_98);
                         if ( s>=0 ) return s;
                         break;
                     case 45 : 
-                        int LA5_82 = input.LA(1);
+                        int LA5_60 = input.LA(1);
 
                          
-                        int index5_82 = input.index();
+                        int index5_60 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_82==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 94;}
+                        if ( (LA5_60==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 86;}
 
-                        else if ( ((LA5_82>=VT_COMPILATION_UNIT && LA5_82<=LEFT_SQUARE)||(LA5_82>=THEN && LA5_82<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
-                        input.seek(index5_82);
+                        input.seek(index5_60);
                         if ( s>=0 ) return s;
                         break;
                     case 46 : 
-                        int LA5_76 = input.LA(1);
+                        int LA5_56 = input.LA(1);
 
                          
-                        int index5_76 = input.index();
+                        int index5_56 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_76==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        if ( (LA5_56==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 75;}
 
-                        else if ( (LA5_76==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 82;}
+                        else if ( (LA5_56==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 76;}
 
-                        else if ( ((LA5_76>=VT_COMPILATION_UNIT && LA5_76<=SEMICOLON)||(LA5_76>=DOT_STAR && LA5_76<=LEFT_PAREN)||(LA5_76>=COLON && LA5_76<=NULL)||(LA5_76>=RIGHT_SQUARE && LA5_76<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_56==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 77;}
 
-                        else if ( (LA5_76==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
+                        else if ( (LA5_56==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 78;}
 
-                        else if ( (LA5_76==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 84;}
+                        else if ( (LA5_56==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 79;}
 
-                        else if ( (LA5_76==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 85;}
+                        else if ( (LA5_56==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 80;}
 
+                        else if ( (LA5_56==COLON||LA5_56==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_76);
+                        input.seek(index5_56);
                         if ( s>=0 ) return s;
                         break;
                     case 47 : 
-                        int LA5_102 = input.LA(1);
+                        int LA5_108 = input.LA(1);
 
                          
-                        int index5_102 = input.index();
+                        int index5_108 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_102==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        if ( (LA5_108==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
-                        else if ( (LA5_102==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 109;}
+                        else if ( (LA5_108==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
-                        else if ( ((LA5_102>=VT_COMPILATION_UNIT && LA5_102<=LEFT_PAREN)||(LA5_102>=COLON && LA5_102<=NULL)||(LA5_102>=RIGHT_SQUARE && LA5_102<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_108==COMMA||LA5_108==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_102==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
-
                          
-                        input.seek(index5_102);
+                        input.seek(index5_108);
                         if ( s>=0 ) return s;
                         break;
                     case 48 : 
-                        int LA5_111 = input.LA(1);
+                        int LA5_58 = input.LA(1);
 
                          
-                        int index5_111 = input.index();
+                        int index5_58 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_111==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 113;}
+                        if ( (LA5_58==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 82;}
 
-                        else if ( ((LA5_111>=VT_COMPILATION_UNIT && LA5_111<=LEFT_SQUARE)||(LA5_111>=THEN && LA5_111<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_58==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
 
+                        else if ( (LA5_58==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 84;}
+
+                        else if ( (LA5_58==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
+
+                        else if ( (LA5_58==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
+
                          
-                        input.seek(index5_111);
+                        input.seek(index5_58);
                         if ( s>=0 ) return s;
                         break;
                     case 49 : 
-                        int LA5_109 = input.LA(1);
+                        int LA5_83 = input.LA(1);
 
                          
-                        int index5_109 = input.index();
+                        int index5_83 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_109==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 112;}
+                        if ( (LA5_83==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 94;}
 
-                        else if ( ((LA5_109>=VT_COMPILATION_UNIT && LA5_109<=LEFT_SQUARE)||(LA5_109>=THEN && LA5_109<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
-                        input.seek(index5_109);
+                        input.seek(index5_83);
                         if ( s>=0 ) return s;
                         break;
                     case 50 : 
-                        int LA5_103 = input.LA(1);
+                        int LA5_1 = input.LA(1);
 
                          
-                        int index5_103 = input.index();
+                        int index5_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_103==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 110;}
+                        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_103>=VT_COMPILATION_UNIT && LA5_103<=LEFT_SQUARE)||(LA5_103>=THEN && LA5_103<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_1==ID) && ((((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIde!
 ntifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 3;}
 
+                        else if ( (LA5_1==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 4;}
+
+                        else if ( (LA5_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {s = 5;}
+
+                        else if ( (LA5_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 6;}
+
+                        else if ( (LA5_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 7;}
+
                          
-                        input.seek(index5_103);
+                        input.seek(index5_1);
                         if ( s>=0 ) return s;
                         break;
                     case 51 : 
-                        int LA5_97 = input.LA(1);
+                        int LA5_94 = input.LA(1);
 
                          
-                        int index5_97 = input.index();
+                        int index5_94 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_97==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 104;}
+                        if ( (LA5_94==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 84;}
 
-                        else if ( ((LA5_97>=VT_COMPILATION_UNIT && LA5_97<=LEFT_SQUARE)||(LA5_97>=THEN && LA5_97<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_94==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
 
+                        else if ( (LA5_94==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
+
+                        else if ( (LA5_94==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
+
                          
-                        input.seek(index5_97);
+                        input.seek(index5_94);
                         if ( s>=0 ) return s;
                         break;
                     case 52 : 
-                        int LA5_8 = input.LA(1);
+                        int LA5_67 = input.LA(1);
 
                          
-                        int index5_8 = input.index();
+                        int index5_67 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_8==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 19;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
 
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
+
                          
-                        input.seek(index5_8);
+                        input.seek(index5_67);
                         if ( s>=0 ) return s;
                         break;
                     case 53 : 
-                        int LA5_83 = input.LA(1);
+                        int LA5_52 = input.LA(1);
 
                          
-                        int index5_83 = input.index();
+                        int index5_52 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA5_83>=VT_COMPILATION_UNIT && LA5_83<=SEMICOLON)||(LA5_83>=DOT && LA5_83<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_52==STRING||(LA5_52>=BOOL && LA5_52<=INT)||LA5_52==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_83==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 95;}
+                        else if ( (LA5_52==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 69;}
 
+                        else if ( (LA5_52==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 70;}
+
+                        else if ( (LA5_52==EOF||LA5_52==SEMICOLON) && ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) {s = 71;}
+
                          
-                        input.seek(index5_83);
+                        input.seek(index5_52);
                         if ( s>=0 ) return s;
                         break;
                     case 54 : 
-                        int LA5_16 = input.LA(1);
+                        int LA5_82 = input.LA(1);
 
                          
-                        int index5_16 = input.index();
+                        int index5_82 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_16==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 35;}
+                        if ( (LA5_82==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 93;}
 
-                        else if ( (LA5_16==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))))) {s = 22;}
-
-                        else if ( (LA5_16==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 36;}
-
-                        else if ( (LA5_16==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 37;}
-
-                        else if ( (LA5_16==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 38;}
-
-                        else if ( (LA5_16==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 39;}
-
-                        else if ( (LA5_16==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
-                        else if ( (LA5_16==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 40;}
-
-                        else if ( (LA5_16==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 28;}
-
-                        else if ( (LA5_16==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 29;}
-
                          
-                        input.seek(index5_16);
+                        input.seek(index5_82);
                         if ( s>=0 ) return s;
                         break;
                     case 55 : 
-                        int LA5_20 = input.LA(1);
+                        int LA5_85 = input.LA(1);
 
                          
-                        int index5_20 = input.index();
+                        int index5_85 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_20==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
+                        if ( (LA5_85==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 96;}
 
-                        else if ( (LA5_20==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 9;}
-
                          
-                        input.seek(index5_20);
+                        input.seek(index5_85);
                         if ( s>=0 ) return s;
                         break;
                     case 56 : 
-                        int LA5_29 = input.LA(1);
+                        int LA5_120 = input.LA(1);
 
                          
-                        int index5_29 = input.index();
+                        int index5_120 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_29==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 49;}
+                        if ( (LA5_120==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 126;}
 
+                        else if ( ((LA5_120>=VT_COMPILATION_UNIT && LA5_120<=SEMICOLON)||(LA5_120>=DOT && LA5_120<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_29);
+                        input.seek(index5_120);
                         if ( s>=0 ) return s;
                         break;
                     case 57 : 
-                        int LA5_74 = input.LA(1);
+                        int LA5_103 = input.LA(1);
 
                          
-                        int index5_74 = input.index();
+                        int index5_103 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
+                        if ( (LA5_103==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 115;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( ((LA5_103>=VT_COMPILATION_UNIT && LA5_103<=SEMICOLON)||(LA5_103>=DOT && LA5_103<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
                          
-                        input.seek(index5_74);
+                        input.seek(index5_103);
                         if ( s>=0 ) return s;
                         break;
                     case 58 : 
-                        int LA5_106 = input.LA(1);
+                        int LA5_89 = input.LA(1);
 
                          
-                        int index5_106 = input.index();
+                        int index5_89 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_106==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        if ( (LA5_89==LEFT_CURLY) && ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) {s = 45;}
 
-                        else if ( (LA5_106==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_89==EOF||LA5_89==ID) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_106==COMMA||LA5_106==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
                          
-                        input.seek(index5_106);
+                        input.seek(index5_89);
                         if ( s>=0 ) return s;
                         break;
                     case 59 : 
-                        int LA5_40 = input.LA(1);
+                        int LA5_114 = input.LA(1);
 
                          
-                        int index5_40 = input.index();
+                        int index5_114 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_40==COMMA||LA5_40==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        if ( (LA5_114==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 120;}
 
-                        else if ( (LA5_40==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_114==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 121;}
 
-                        else if ( (LA5_40==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        else if ( (LA5_114==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 122;}
 
+                        else if ( (LA5_114==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
+
+                        else if ( (LA5_114==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
+
+                        else if ( ((LA5_114>=VT_COMPILATION_UNIT && LA5_114<=SEMICOLON)||(LA5_114>=DOT_STAR && LA5_114<=LEFT_PAREN)||(LA5_114>=COLON && LA5_114<=NULL)||(LA5_114>=RIGHT_SQUARE && LA5_114<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_40);
+                        input.seek(index5_114);
                         if ( s>=0 ) return s;
                         break;
                     case 60 : 
-                        int LA5_92 = input.LA(1);
+                        int LA5_29 = input.LA(1);
 
                          
-                        int index5_92 = input.index();
+                        int index5_29 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_92==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        if ( (LA5_29==COMMA||LA5_29==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_92==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_29==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
 
-                        else if ( (LA5_92==COMMA||LA5_92==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_29==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
                          
-                        input.seek(index5_92);
+                        input.seek(index5_29);
                         if ( s>=0 ) return s;
                         break;
                     case 61 : 
-                        int LA5_71 = input.LA(1);
+                        int LA5_61 = input.LA(1);
 
                          
-                        int index5_71 = input.index();
+                        int index5_61 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_71==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        if ( (LA5_61==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_71==COMMA||LA5_71==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_61==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
 
-                        else if ( (LA5_71==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        else if ( (LA5_61==COMMA||LA5_61==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
                          
-                        input.seek(index5_71);
+                        input.seek(index5_61);
                         if ( s>=0 ) return s;
                         break;
                     case 62 : 
-                        int LA5_36 = input.LA(1);
+                        int LA5_35 = input.LA(1);
 
                          
-                        int index5_36 = input.index();
+                        int index5_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_36==COMMA||LA5_36==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        if ( (LA5_35==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 55;}
 
-                        else if ( (LA5_36==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
-
-                        else if ( (LA5_36==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
-
                          
-                        input.seek(index5_36);
+                        input.seek(index5_35);
                         if ( s>=0 ) return s;
                         break;
                     case 63 : 
-                        int LA5_22 = input.LA(1);
+                        int LA5_75 = input.LA(1);
 
                          
-                        int index5_22 = input.index();
+                        int index5_75 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_22==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))))) {s = 44;}
+                        if ( (LA5_75==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 91;}
 
-                        else if ( (LA5_22==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))))) {s = 45;}
-
-                        else if ( (LA5_22==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
-
                          
-                        input.seek(index5_22);
+                        input.seek(index5_75);
                         if ( s>=0 ) return s;
                         break;
                     case 64 : 
-                        int LA5_108 = input.LA(1);
+                        int LA5_121 = input.LA(1);
 
                          
-                        int index5_108 = input.index();
+                        int index5_121 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA5_108>=VT_COMPILATION_UNIT && LA5_108<=SEMICOLON)||(LA5_108>=DOT_STAR && LA5_108<=NULL)||(LA5_108>=RIGHT_SQUARE && LA5_108<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_121==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 127;}
 
-                        else if ( (LA5_108==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 111;}
+                        else if ( ((LA5_121>=VT_COMPILATION_UNIT && LA5_121<=LEFT_SQUARE)||(LA5_121>=THEN && LA5_121<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_108==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
-
-                        else if ( (LA5_108==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 101;}
-
                          
-                        input.seek(index5_108);
+                        input.seek(index5_121);
                         if ( s>=0 ) return s;
                         break;
                     case 65 : 
-                        int LA5_96 = input.LA(1);
+                        int LA5_101 = input.LA(1);
 
                          
-                        int index5_96 = input.index();
+                        int index5_101 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA5_96>=VT_COMPILATION_UNIT && LA5_96<=SEMICOLON)||(LA5_96>=DOT_STAR && LA5_96<=NULL)||(LA5_96>=RIGHT_SQUARE && LA5_96<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_101==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 113;}
 
-                        else if ( (LA5_96==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 103;}
+                        else if ( ((LA5_101>=VT_COMPILATION_UNIT && LA5_101<=LEFT_SQUARE)||(LA5_101>=THEN && LA5_101<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_96==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 85;}
-
-                        else if ( (LA5_96==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 84;}
-
                          
-                        input.seek(index5_96);
+                        input.seek(index5_101);
                         if ( s>=0 ) return s;
                         break;
                     case 66 : 
-                        int LA5_72 = input.LA(1);
+                        int LA5_39 = input.LA(1);
 
                          
-                        int index5_72 = input.index();
+                        int index5_39 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 10;}
+
                          
-                        input.seek(index5_72);
+                        input.seek(index5_39);
                         if ( s>=0 ) return s;
                         break;
                     case 67 : 
-                        int LA5_99 = input.LA(1);
+                        int LA5_4 = input.LA(1);
 
                          
-                        int index5_99 = input.index();
+                        int index5_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_99==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 106;}
+                        if ( (LA5_4==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 16;}
 
-                        else if ( (LA5_99==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_4==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_99==COMMA||LA5_99==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_4==END||LA5_4==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
 
-                        else if ( (LA5_99==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        else if ( (LA5_4==SEMICOLON) && ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) {s = 17;}
 
+                        else if ( (LA5_4==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+
                          
-                        input.seek(index5_99);
+                        input.seek(index5_4);
                         if ( s>=0 ) return s;
                         break;
                     case 68 : 
-                        int LA5_89 = input.LA(1);
+                        int LA5_20 = input.LA(1);
 
                          
-                        int index5_89 = input.index();
+                        int index5_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_89==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        if ( (LA5_20==ID||LA5_20==END||LA5_20==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
 
-                        else if ( (LA5_89==COMMA||LA5_89==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_20==LEFT_CURLY) && ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) {s = 45;}
 
-                        else if ( (LA5_89==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
-
                          
-                        input.seek(index5_89);
+                        input.seek(index5_20);
                         if ( s>=0 ) return s;
                         break;
                     case 69 : 
-                        int LA5_65 = input.LA(1);
+                        int LA5_125 = input.LA(1);
 
                          
-                        int index5_65 = input.index();
+                        int index5_125 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_65==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        if ( (LA5_125==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
-                        else if ( (LA5_65==COMMA||LA5_65==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_125==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
-                        else if ( (LA5_65==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_125==COMMA||LA5_125==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
                          
-                        input.seek(index5_65);
+                        input.seek(index5_125);
                         if ( s>=0 ) return s;
                         break;
                     case 70 : 
-                        int LA5_64 = input.LA(1);
+                        int LA5_80 = input.LA(1);
 
                          
-                        int index5_64 = input.index();
+                        int index5_80 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+                        if ( (LA5_80==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( (LA5_80==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
+                        else if ( (LA5_80==COMMA||LA5_80==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_64);
+                        input.seek(index5_80);
                         if ( s>=0 ) return s;
                         break;
                     case 71 : 
-                        int LA5_38 = input.LA(1);
+                        int LA5_16 = input.LA(1);
 
                          
-                        int index5_38 = input.index();
+                        int index5_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
+                        if ( (LA5_16==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 35;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( (LA5_16==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))))) {s = 22;}
 
+                        else if ( (LA5_16==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 36;}
+
+                        else if ( (LA5_16==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 37;}
+
+                        else if ( (LA5_16==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 38;}
+
+                        else if ( (LA5_16==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 39;}
+
+                        else if ( (LA5_16==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 26;}
+
+                        else if ( (LA5_16==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 27;}
+
+                        else if ( (LA5_16==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 40;}
+
+                        else if ( (LA5_16==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_38);
+                        input.seek(index5_16);
                         if ( s>=0 ) return s;
                         break;
                     case 72 : 
+                        int LA5_68 = input.LA(1);
+
+                         
+                        int index5_68 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_68==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_68==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
+
+                        else if ( (LA5_68==COMMA||LA5_68==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                         
+                        input.seek(index5_68);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 73 : 
                         int LA5_24 = input.LA(1);
 
                          
@@ -16623,243 +16640,315 @@
                         s = -1;
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {s = 17;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION))) ) {s = 45;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 12;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 10;}
 
                          
                         input.seek(index5_24);
                         if ( s>=0 ) return s;
                         break;
-                    case 73 : 
-                        int LA5_42 = input.LA(1);
+                    case 74 : 
+                        int LA5_37 = input.LA(1);
 
                          
-                        int index5_42 = input.index();
+                        int index5_37 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_42==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) {s = 51;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
 
-                        else if ( (LA5_42==EOF||(LA5_42>=SEMICOLON && LA5_42<=ID)) && ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) {s = 57;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
                          
-                        input.seek(index5_42);
+                        input.seek(index5_37);
                         if ( s>=0 ) return s;
                         break;
-                    case 74 : 
-                        int LA5_0 = input.LA(1);
+                    case 75 : 
+                        int LA5_107 = input.LA(1);
 
                          
-                        int index5_0 = input.index();
+                        int index5_107 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))||(validateIdentifierKey(DroolsSoftKeywords.AGENDA) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DATE) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.EXPIRES))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, "import") && validateLT(2, "function"!
 ) )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.NO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.LOOP))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(Drool!
 sSoftKeywords.LOCK) && validateLT(2, "-") && validateLT(3, DroolsSoftK
eywords.ON) && validateLT(4, "-") && validateLT(5, DroolsSoftKeywords.ACTIVE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {s = 1;}
+                        if ( (LA5_107==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
+                        else if ( (LA5_107==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
+
+                        else if ( (LA5_107==COMMA||LA5_107==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_0);
+                        input.seek(index5_107);
                         if ( s>=0 ) return s;
                         break;
-                    case 75 : 
-                        int LA5_14 = input.LA(1);
+                    case 76 : 
+                        int LA5_86 = input.LA(1);
 
                          
-                        int index5_14 = input.index();
+                        int index5_86 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_14==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 34;}
+                        if ( (LA5_86==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 97;}
 
-                        else if ( (LA5_14==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_86==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
+                        else if ( (LA5_86==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
+
+                        else if ( (LA5_86==COMMA||LA5_86==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_14);
+                        input.seek(index5_86);
                         if ( s>=0 ) return s;
                         break;
-                    case 76 : 
-                        int LA5_1 = input.LA(1);
+                    case 77 : 
+                        int LA5_42 = input.LA(1);
 
                          
-                        int index5_1 = input.index();
+                        int index5_42 = input.index();
                         input.rewind();
                         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;}
+                        if ( (LA5_42==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 58;}
 
-                        else if ( (LA5_1==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateId!
 entifierKey(DroolsSoftKeywords.IMPORT)))))) {s = 3;}
+                         
+                        input.seek(index5_42);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 78 : 
+                        int LA5_124 = input.LA(1);
 
-                        else if ( (LA5_1==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 4;}
+                         
+                        int index5_124 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_124==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
 
-                        else if ( (LA5_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 5;}
+                        else if ( (LA5_124==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
 
-                        else if ( (LA5_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {s = 6;}
+                        else if ( ((LA5_124>=VT_COMPILATION_UNIT && LA5_124<=LEFT_PAREN)||(LA5_124>=COLON && LA5_124<=NULL)||(LA5_124>=RIGHT_SQUARE && LA5_124<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_1==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 7;}
+                        else if ( (LA5_124==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 116;}
 
                          
-                        input.seek(index5_1);
+                        input.seek(index5_124);
                         if ( s>=0 ) return s;
                         break;
-                    case 77 : 
-                        int LA5_45 = input.LA(1);
+                    case 79 : 
+                        int LA5_93 = input.LA(1);
 
                          
-                        int index5_45 = input.index();
+                        int index5_93 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        if ( (LA5_93==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 110;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 12;}
+                        else if ( (LA5_93==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 84;}
 
+                        else if ( (LA5_93==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 82;}
+
                          
-                        input.seek(index5_45);
+                        input.seek(index5_93);
                         if ( s>=0 ) return s;
                         break;
-                    case 78 : 
-                        int LA5_66 = input.LA(1);
+                    case 80 : 
+                        int LA5_90 = input.LA(1);
 
                          
-                        int index5_66 = input.index();
+                        int index5_90 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_66==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_90==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 105;}
 
-                        else if ( (LA5_66==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 47;}
+                        else if ( (LA5_90==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
-                        else if ( (LA5_66==COMMA||LA5_66==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_90==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
+                        else if ( (LA5_90==COMMA||LA5_90==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_66);
+                        input.seek(index5_90);
                         if ( s>=0 ) return s;
                         break;
-                    case 79 : 
-                        int LA5_47 = input.LA(1);
+                    case 81 : 
+                        int LA5_22 = input.LA(1);
 
                          
-                        int index5_47 = input.index();
+                        int index5_22 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_47==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 61;}
+                        if ( (LA5_22==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))))) {s = 47;}
 
-                        else if ( (LA5_47==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 62;}
+                        else if ( (LA5_22==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))))) {s = 48;}
 
-                        else if ( (LA5_47==COLON||LA5_47==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_22==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_47==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 63;}
+                         
+                        input.seek(index5_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 82 : 
+                        int LA5_19 = input.LA(1);
 
-                        else if ( (LA5_47==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 64;}
+                         
+                        int index5_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_19==LEFT_PAREN||LA5_19==COLON) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
 
-                        else if ( (LA5_47==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 65;}
+                        else if ( (LA5_19==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 41;}
 
-                        else if ( (LA5_47==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 66;}
+                        else if ( (LA5_19==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
 
+                        else if ( (LA5_19==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
+
+                        else if ( (LA5_19==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 43;}
+
+                        else if ( (LA5_19==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 44;}
+
                          
-                        input.seek(index5_47);
+                        input.seek(index5_19);
                         if ( s>=0 ) return s;
                         break;
-                    case 80 : 
-                        int LA5_41 = input.LA(1);
+                    case 83 : 
+                        int LA5_130 = input.LA(1);
 
                          
-                        int index5_41 = input.index();
+                        int index5_130 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_41==STRING||(LA5_41>=BOOL && LA5_41<=INT)||LA5_41==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        if ( (LA5_130==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 132;}
 
-                        else if ( (LA5_41==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 55;}
+                        else if ( ((LA5_130>=VT_COMPILATION_UNIT && LA5_130<=LEFT_SQUARE)||(LA5_130>=THEN && LA5_130<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_41==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 56;}
+                         
+                        input.seek(index5_130);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 84 : 
+                        int LA5_128 = input.LA(1);
 
-                        else if ( (LA5_41==EOF||LA5_41==SEMICOLON) && ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL)))) {s = 57;}
+                         
+                        int index5_128 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_128==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 131;}
 
+                        else if ( ((LA5_128>=VT_COMPILATION_UNIT && LA5_128<=LEFT_SQUARE)||(LA5_128>=THEN && LA5_128<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_41);
+                        input.seek(index5_128);
                         if ( s>=0 ) return s;
                         break;
-                    case 81 : 
-                        int LA5_73 = input.LA(1);
+                    case 85 : 
+                        int LA5_123 = input.LA(1);
 
                          
-                        int index5_73 = input.index();
+                        int index5_123 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
+                        if ( (LA5_123==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 129;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                        else if ( ((LA5_123>=VT_COMPILATION_UNIT && LA5_123<=LEFT_SQUARE)||(LA5_123>=THEN && LA5_123<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
                          
-                        input.seek(index5_73);
+                        input.seek(index5_123);
                         if ( s>=0 ) return s;
                         break;
-                    case 82 : 
-                        int LA5_33 = input.LA(1);
+                    case 86 : 
+                        int LA5_116 = input.LA(1);
 
                          
-                        int index5_33 = input.index();
+                        int index5_116 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_33==ID||LA5_33==END||LA5_33==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 12;}
+                        if ( (LA5_116==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 124;}
 
-                        else if ( (LA5_33==LEFT_CURLY) && ((validateIdentifierKey(DroolsSoftKeywords.FUNCTION)))) {s = 51;}
+                        else if ( ((LA5_116>=VT_COMPILATION_UNIT && LA5_116<=LEFT_SQUARE)||(LA5_116>=THEN && LA5_116<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
                          
-                        input.seek(index5_33);
+                        input.seek(index5_116);
                         if ( s>=0 ) return s;
                         break;
-                    case 83 : 
-                        int LA5_10 = input.LA(1);
+                    case 87 : 
+                        int LA5_9 = input.LA(1);
 
                          
-                        int index5_10 = input.index();
+                        int index5_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_10==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 21;}
+                        if ( (LA5_9==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 21;}
 
-                        else if ( (LA5_10==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))))) {s = 22;}
+                        else if ( (LA5_9==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))))) {s = 22;}
 
-                        else if ( (LA5_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 23;}
+                        else if ( (LA5_9==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 23;}
 
-                        else if ( (LA5_10==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 24;}
+                        else if ( (LA5_9==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 24;}
 
-                        else if ( (LA5_10==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_9==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 25;}
 
-                        else if ( (LA5_10==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 25;}
+                        else if ( (LA5_9==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 26;}
 
-                        else if ( (LA5_10==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 26;}
+                        else if ( (LA5_9==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 27;}
 
-                        else if ( (LA5_10==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 27;}
+                        else if ( (LA5_9==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 28;}
 
-                        else if ( (LA5_10==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 28;}
+                        else if ( (LA5_9==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 29;}
 
-                        else if ( (LA5_10==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 29;}
+                        else if ( (LA5_9==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
                         else if ( (((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) ) {s = 30;}
 
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))) ) {s = 31;}
 
                          
-                        input.seek(index5_10);
+                        input.seek(index5_9);
                         if ( s>=0 ) return s;
                         break;
-                    case 84 : 
-                        int LA5_104 = input.LA(1);
+                    case 88 : 
+                        int LA5_3 = input.LA(1);
 
                          
-                        int index5_104 = input.index();
+                        int index5_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_104==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        if ( (LA5_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 8;}
 
-                        else if ( (LA5_104==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
+                        else if ( (LA5_3==ID) && ((((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "funct!
 ion") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateL!
 T(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT))
)||((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)))||((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)))||((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(DroolsSoftKeyword!
 s.IMPORT)))||((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)))||((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)))||((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(Drools!
 SoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "fu
nction") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||((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)))||((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(DroolsSoftKeyw!
 ords.IMPORT)))||((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)))||((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)))||((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(Dro!
 olsSoftKeywords.IMPORT)))||((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)))||((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)))||((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)))||((validateLT(1, "import") && vali!
 dateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "impor!
 t") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftK
eywords.IMPORT)))||((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)))||((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)))||((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(D!
 roolsSoftKeywords.IMPORT)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.RULE))||((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)))||((validateLT(1, "impo!
 rt") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoft
Keywords.IMPORT)))||((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)))||((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)))||((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)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIde!
 ntifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((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)))||((validateLT(1, "im!
 port") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(valida!
 teIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(val!
 idateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "impo
rt") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateL!
 T(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)))||((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)))||((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)))||!
 ((validateLT(1, "import") && validateLT(2, "function") )&&(validateIde
ntifierKey(DroolsSoftKeywords.IMPORT)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(v!
 alidateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.QUERY))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "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)))||((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)))||((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)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(validateIdentifierKey(DroolsSoftKeywords.IMPORT)))||((va!
 lidateLT(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)))||((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)))||((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.IMPO!
 RT)))||((validateLT(1, "import") && validateLT(2, "function") )&&(vali
dateIdentifierKey(DroolsSoftKeywords.IMPORT)))))) {s = 9;}
 
-                        else if ( ((LA5_104>=VT_COMPILATION_UNIT && LA5_104<=LEFT_PAREN)||(LA5_104>=COLON && LA5_104<=NULL)||(LA5_104>=RIGHT_SQUARE && LA5_104<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                        else if ( (LA5_3==END) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
 
-                        else if ( (LA5_104==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 97;}
+                        else if ( (LA5_3==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
+                        else if ( (LA5_3==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 12;}
+
+                        else if ( (LA5_3==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 13;}
+
+                        else if ( (LA5_3==SEMICOLON) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 14;}
+
+                        else if ( (LA5_3==EOF||LA5_3==DOT_STAR) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_104);
+                        input.seek(index5_3);
                         if ( s>=0 ) return s;
                         break;
-                    case 85 : 
+                    case 89 : 
+                        int LA5_97 = input.LA(1);
+
+                         
+                        int index5_97 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_97==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_97==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
+
+                        else if ( (LA5_97==COMMA||LA5_97==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                         
+                        input.seek(index5_97);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 90 : 
                         int LA5_34 = input.LA(1);
 
                          
@@ -16868,7 +16957,7 @@
                         s = -1;
                         if ( ((LA5_34>=STRING && LA5_34<=LEFT_PAREN)||(LA5_34>=BOOL && LA5_34<=INT)||LA5_34==MISC) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_34==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 52;}
+                        else if ( (LA5_34==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 54;}
 
                         else if ( (LA5_34==DOT||LA5_34==LEFT_SQUARE) && ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE)))) {s = 17;}
 
@@ -16876,221 +16965,501 @@
                         input.seek(index5_34);
                         if ( s>=0 ) return s;
                         break;
-                    case 86 : 
-                        int LA5_37 = input.LA(1);
+                    case 91 : 
+                        int LA5_79 = input.LA(1);
 
                          
-                        int index5_37 = input.index();
+                        int index5_79 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.DIALECT))) ) {s = 18;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {s = 17;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 13;}
+                         
+                        input.seek(index5_79);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 92 : 
+                        int LA5_105 = input.LA(1);
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 12;}
+                         
+                        int index5_105 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_105==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
+                        else if ( (LA5_105==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
+
+                        else if ( (LA5_105==COMMA||LA5_105==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_37);
+                        input.seek(index5_105);
                         if ( s>=0 ) return s;
                         break;
-                    case 87 : 
-                        int LA5_58 = input.LA(1);
+                    case 93 : 
+                        int LA5_113 = input.LA(1);
 
                          
-                        int index5_58 = input.index();
+                        int index5_113 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_58==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 78;}
+                        if ( (LA5_113==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
 
+                        else if ( (LA5_113==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
+
+                        else if ( ((LA5_113>=VT_COMPILATION_UNIT && LA5_113<=SEMICOLON)||(LA5_113>=DOT && LA5_113<=LEFT_PAREN)||(LA5_113>=COLON && LA5_113<=NULL)||(LA5_113>=RIGHT_SQUARE && LA5_113<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_113==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 101;}
+
+                        else if ( (LA5_113==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 104;}
+
                          
-                        input.seek(index5_58);
+                        input.seek(index5_113);
                         if ( s>=0 ) return s;
                         break;
-                    case 88 : 
-                        int LA5_87 = input.LA(1);
+                    case 94 : 
+                        int LA5_41 = input.LA(1);
 
                          
-                        int index5_87 = input.index();
+                        int index5_41 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_87==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 98;}
+                        if ( (LA5_41==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 57;}
 
                          
-                        input.seek(index5_87);
+                        input.seek(index5_41);
                         if ( s>=0 ) return s;
                         break;
-                    case 89 : 
-                        int LA5_80 = input.LA(1);
+                    case 95 : 
+                        int LA5_126 = input.LA(1);
 
                          
-                        int index5_80 = input.index();
+                        int index5_126 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_80==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 90;}
+                        if ( ((LA5_126>=VT_COMPILATION_UNIT && LA5_126<=SEMICOLON)||(LA5_126>=DOT_STAR && LA5_126<=NULL)||(LA5_126>=RIGHT_SQUARE && LA5_126<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_80==COMMA||LA5_80==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_126==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 130;}
 
-                        else if ( (LA5_80==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_126==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 122;}
 
-                        else if ( (LA5_80==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        else if ( (LA5_126==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 120;}
 
                          
-                        input.seek(index5_80);
+                        input.seek(index5_126);
                         if ( s>=0 ) return s;
                         break;
-                    case 90 : 
-                        int LA5_69 = input.LA(1);
+                    case 96 : 
+                        int LA5_115 = input.LA(1);
 
                          
-                        int index5_69 = input.index();
+                        int index5_115 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_69==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        if ( ((LA5_115>=VT_COMPILATION_UNIT && LA5_115<=SEMICOLON)||(LA5_115>=DOT_STAR && LA5_115<=NULL)||(LA5_115>=RIGHT_SQUARE && LA5_115<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
 
-                        else if ( (LA5_69==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( (LA5_115==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 123;}
 
-                        else if ( (LA5_69==COMMA||LA5_69==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                        else if ( (LA5_115==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 104;}
 
+                        else if ( (LA5_115==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 103;}
+
                          
-                        input.seek(index5_69);
+                        input.seek(index5_115);
                         if ( s>=0 ) return s;
                         break;
-                    case 91 : 
-                        int LA5_53 = input.LA(1);
+                    case 97 : 
+                        int LA5_33 = input.LA(1);
 
                          
-                        int index5_53 = input.index();
+                        int index5_33 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_53==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 67;}
+                        if ( (LA5_33==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 53;}
 
-                        else if ( (LA5_53==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 68;}
+                        else if ( (LA5_33==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 13;}
 
-                        else if ( (LA5_53==COMMA||LA5_53==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                         
+                        input.seek(index5_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 98 : 
+                        int LA5_91 = input.LA(1);
 
-                        else if ( (LA5_53==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                         
+                        int index5_91 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_91==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 106;}
 
-                        else if ( (LA5_53==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        else if ( (LA5_91==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 107;}
 
-                        else if ( (LA5_53==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 69;}
+                        else if ( (LA5_91==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 108;}
 
+                        else if ( (LA5_91==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+
+                        else if ( (LA5_91==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
+
+                        else if ( (LA5_91==COMMA||LA5_91==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
                          
-                        input.seek(index5_53);
+                        input.seek(index5_91);
                         if ( s>=0 ) return s;
                         break;
-                    case 92 : 
-                        int LA5_28 = input.LA(1);
+                    case 99 : 
+                        int LA5_55 = input.LA(1);
 
                          
-                        int index5_28 = input.index();
+                        int index5_55 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_28==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))))) {s = 48;}
+                        if ( (LA5_55==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 72;}
 
+                        else if ( (LA5_55==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 73;}
+
+                        else if ( (LA5_55==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 74;}
+
+                        else if ( (LA5_55==COMMA||LA5_55==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                        else if ( (LA5_55==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
+
+                        else if ( (LA5_55==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+
                          
-                        input.seek(index5_28);
+                        input.seek(index5_55);
                         if ( s>=0 ) return s;
                         break;
-                    case 93 : 
-                        int LA5_85 = input.LA(1);
+                    case 100 : 
+                        int LA5_38 = input.LA(1);
 
                          
-                        int index5_85 = input.index();
+                        int index5_38 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_85==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 97;}
+                        if ( (LA5_38==COMMA||LA5_38==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
 
-                        else if ( (LA5_85==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
+                        else if ( (LA5_38==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
 
-                        else if ( (LA5_85==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        else if ( (LA5_38==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
 
-                        else if ( ((LA5_85>=VT_COMPILATION_UNIT && LA5_85<=LEFT_PAREN)||(LA5_85>=COLON && LA5_85<=NULL)||(LA5_85>=RIGHT_SQUARE && LA5_85<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                         
+                        input.seek(index5_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 101 : 
+                        int LA5_48 = input.LA(1);
 
                          
-                        input.seek(index5_85);
+                        int index5_48 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
+
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.QUERY))) ) {s = 10;}
+
+                         
+                        input.seek(index5_48);
                         if ( s>=0 ) return s;
                         break;
-                    case 94 : 
-                        int LA5_90 = input.LA(1);
+                    case 102 : 
+                        int LA5_66 = input.LA(1);
 
                          
-                        int index5_90 = input.index();
+                        int index5_66 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_90==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
 
-                        else if ( (LA5_90==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 54;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
-                        else if ( (LA5_90==COMMA||LA5_90==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 13;}
+                         
+                        input.seek(index5_66);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 103 : 
+                        int LA5_84 = input.LA(1);
 
                          
-                        input.seek(index5_90);
+                        int index5_84 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_84==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 95;}
+
+                        else if ( (LA5_84==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
+
+                        else if ( (LA5_84==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
+
+                         
+                        input.seek(index5_84);
                         if ( s>=0 ) return s;
                         break;
-                    case 95 : 
-                        int LA5_21 = input.LA(1);
+                    case 104 : 
+                        int LA5_54 = input.LA(1);
 
                          
-                        int index5_21 = input.index();
+                        int index5_54 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_21==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 43;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
 
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.TEMPLATE))) ) {s = 17;}
+
                          
-                        input.seek(index5_21);
+                        input.seek(index5_54);
                         if ( s>=0 ) return s;
                         break;
-                    case 96 : 
-                        int LA5_55 = input.LA(1);
+                    case 105 : 
+                        int LA5_64 = input.LA(1);
 
                          
-                        int index5_55 = input.index();
+                        int index5_64 = input.index();
                         input.rewind();
                         s = -1;
                         if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))) ) {s = 57;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
 
                          
-                        input.seek(index5_55);
+                        input.seek(index5_64);
                         if ( s>=0 ) return s;
                         break;
-                    case 97 : 
-                        int LA5_61 = input.LA(1);
+                    case 106 : 
+                        int LA5_106 = input.LA(1);
 
                          
-                        int index5_61 = input.index();
+                        int index5_106 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_61==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 79;}
+                        if ( (LA5_106==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 117;}
 
                          
-                        input.seek(index5_61);
+                        input.seek(index5_106);
                         if ( s>=0 ) return s;
                         break;
-                    case 98 : 
-                        int LA5_94 = input.LA(1);
+                    case 107 : 
+                        int LA5_72 = input.LA(1);
 
                          
-                        int index5_94 = input.index();
+                        int index5_72 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA5_94==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 77;}
+                        if ( (LA5_72==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 90;}
 
-                        else if ( (LA5_94==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 85;}
+                         
+                        input.seek(index5_72);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 108 : 
+                        int LA5_13 = input.LA(1);
 
-                        else if ( ((LA5_94>=VT_COMPILATION_UNIT && LA5_94<=SEMICOLON)||(LA5_94>=DOT && LA5_94<=LEFT_PAREN)||(LA5_94>=COLON && LA5_94<=NULL)||(LA5_94>=RIGHT_SQUARE && LA5_94<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+                         
+                        int index5_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_13==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 33;}
 
-                        else if ( (LA5_94==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 82;}
+                         
+                        input.seek(index5_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 109 : 
+                        int LA5_127 = input.LA(1);
 
-                        else if ( (LA5_94==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 83;}
+                         
+                        int index5_127 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_127==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 122;}
 
+                        else if ( (LA5_127==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 121;}
+
+                        else if ( (LA5_127==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
+
+                        else if ( (LA5_127==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
+
+                        else if ( ((LA5_127>=VT_COMPILATION_UNIT && LA5_127<=SEMICOLON)||(LA5_127>=DOT && LA5_127<=LEFT_PAREN)||(LA5_127>=COLON && LA5_127<=NULL)||(LA5_127>=RIGHT_SQUARE && LA5_127<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
                          
-                        input.seek(index5_94);
+                        input.seek(index5_127);
                         if ( s>=0 ) return s;
                         break;
+                    case 110 : 
+                        int LA5_49 = input.LA(1);
+
+                         
+                        int index5_49 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_49==MISC) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 63;}
+
+                        else if ( (LA5_49==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 64;}
+
+                        else if ( (LA5_49==INT) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 65;}
+
+                        else if ( (LA5_49==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 66;}
+
+                        else if ( (LA5_49==STRING) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 67;}
+
+                        else if ( (LA5_49==COLON||LA5_49==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                        else if ( (LA5_49==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 68;}
+
+                         
+                        input.seek(index5_49);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 111 : 
+                        int LA5_69 = input.LA(1);
+
+                         
+                        int index5_69 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))) ) {s = 71;}
+
+                         
+                        input.seek(index5_69);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 112 : 
+                        int LA5_119 = input.LA(1);
+
+                         
+                        int index5_119 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_119==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_119==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))))) {s = 49;}
+
+                        else if ( (LA5_119==COMMA||LA5_119==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                         
+                        input.seek(index5_119);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 113 : 
+                        int LA5_57 = input.LA(1);
+
+                         
+                        int index5_57 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_57==LEFT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.QUERY)))) {s = 10;}
+
+                        else if ( (LA5_57==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 41;}
+
+                        else if ( (LA5_57==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 42;}
+
+                        else if ( (LA5_57==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 20;}
+
+                        else if ( (LA5_57==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 81;}
+
+                         
+                        input.seek(index5_57);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 114 : 
+                        int LA5_28 = input.LA(1);
+
+                         
+                        int index5_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.IMPORT))) ) {s = 15;}
+
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RULE))) ) {s = 11;}
+
+                         
+                        input.seek(index5_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 115 : 
+                        int LA5_12 = input.LA(1);
+
+                         
+                        int index5_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_12==ID) && (((validateIdentifierKey(DroolsSoftKeywords.GLOBAL))||(validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 32;}
+
+                         
+                        input.seek(index5_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 116 : 
+                        int LA5_118 = input.LA(1);
+
+                         
+                        int index5_118 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_118==ID) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 84;}
+
+                        else if ( (LA5_118==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.QUERY))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 110;}
+
+                         
+                        input.seek(index5_118);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 117 : 
+                        int LA5_117 = input.LA(1);
+
+                         
+                        int index5_117 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_117==BOOL) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 125;}
+
+                        else if ( (LA5_117==ID) && (((validateIdentifierKey(DroolsSoftKeywords.RULE))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))))) {s = 56;}
+
+                        else if ( (LA5_117==COMMA||LA5_117==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.RULE)))) {s = 11;}
+
+                        else if ( (LA5_117==EOF) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 18;}
+
+                         
+                        input.seek(index5_117);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 118 : 
+                        int LA5_122 = input.LA(1);
+
+                         
+                        int index5_122 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_122==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
+
+                        else if ( (LA5_122==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 128;}
+
+                        else if ( ((LA5_122>=VT_COMPILATION_UNIT && LA5_122<=LEFT_PAREN)||(LA5_122>=COLON && LA5_122<=NULL)||(LA5_122>=RIGHT_SQUARE && LA5_122<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_122==COMMA) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 102;}
+
+                         
+                        input.seek(index5_122);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 119 : 
+                        int LA5_70 = input.LA(1);
+
+                         
+                        int index5_70 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA5_70==ID) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 88;}
+
+                        else if ( ((LA5_70>=VT_COMPILATION_UNIT && LA5_70<=SEMICOLON)||(LA5_70>=DOT && LA5_70<=COMMA)||(LA5_70>=COLON && LA5_70<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.IMPORT)))) {s = 15;}
+
+                        else if ( (LA5_70==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.IMPORT))||(validateIdentifierKey(DroolsSoftKeywords.FUNCTION))))) {s = 89;}
+
+                         
+                        input.seek(index5_70);
+                        if ( s>=0 ) return s;
+                        break;
             }
             if (backtracking>0) {failed=true; return -1;}
             NoViableAltException nvae =
@@ -17104,9 +17473,9 @@
     static final String DFA12_eofS =
         "\16\uffff";
     static final String DFA12_minS =
-        "\2\126\1\uffff\1\126\1\uffff\1\126\1\155\3\126\2\155\1\133\1\126";
+        "\2\126\1\uffff\1\126\1\uffff\1\126\1\156\3\126\2\156\1\133\1\126";
     static final String DFA12_maxS =
-        "\1\133\1\135\1\uffff\1\154\1\uffff\1\126\1\155\3\154\2\155\2\154";
+        "\1\133\1\135\1\uffff\1\155\1\uffff\1\126\1\156\3\155\2\156\2\155";
     static final String DFA12_acceptS =
         "\2\uffff\1\2\1\uffff\1\1\11\uffff";
     static final String DFA12_specialS =
@@ -17115,17 +17484,17 @@
             "\1\2\2\uffff\1\2\1\uffff\1\1",
             "\1\3\4\uffff\1\2\1\uffff\1\4",
             "",
-            "\1\7\1\5\3\uffff\1\2\2\4\1\2\15\uffff\1\6",
+            "\1\7\1\5\3\uffff\1\2\2\4\1\2\16\uffff\1\6",
             "",
             "\1\10",
             "\1\11",
-            "\2\2\3\uffff\1\2\2\4\1\2\15\uffff\1\12",
-            "\1\4\1\5\3\uffff\1\2\20\uffff\1\13",
-            "\1\4\4\uffff\1\2\2\4\16\uffff\1\6",
+            "\2\2\3\uffff\1\2\2\4\1\2\16\uffff\1\12",
+            "\1\4\1\5\3\uffff\1\2\21\uffff\1\13",
+            "\1\4\4\uffff\1\2\2\4\17\uffff\1\6",
             "\1\14",
             "\1\15",
-            "\1\2\2\4\16\uffff\1\12",
-            "\1\4\4\uffff\1\2\20\uffff\1\13"
+            "\1\2\2\4\17\uffff\1\12",
+            "\1\4\4\uffff\1\2\21\uffff\1\13"
     };
 
     static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
@@ -17166,20 +17535,20 @@
     static final String DFA17_eofS =
         "\6\uffff";
     static final String DFA17_minS =
-        "\2\126\1\uffff\1\155\1\uffff\1\126";
+        "\2\126\1\uffff\1\156\1\uffff\1\126";
     static final String DFA17_maxS =
-        "\1\126\1\154\1\uffff\1\155\1\uffff\1\154";
+        "\1\126\1\155\1\uffff\1\156\1\uffff\1\155";
     static final String DFA17_acceptS =
         "\2\uffff\1\1\1\uffff\1\2\1\uffff";
     static final String DFA17_specialS =
         "\6\uffff}>";
     static final String[] DFA17_transitionS = {
             "\1\1",
-            "\2\2\4\uffff\2\4\16\uffff\1\3",
+            "\2\2\4\uffff\2\4\17\uffff\1\3",
             "",
             "\1\5",
             "",
-            "\1\2\5\uffff\2\4\16\uffff\1\3"
+            "\1\2\5\uffff\2\4\17\uffff\1\3"
     };
 
     static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
@@ -17220,44 +17589,44 @@
     static final String DFA24_eofS =
         "\33\uffff";
     static final String DFA24_minS =
-        "\2\126\3\uffff\1\4\1\126\3\uffff\1\4\1\0\1\uffff\1\0\1\4\2\0\3\4"+
-        "\1\0\2\4\4\0";
+        "\2\126\3\uffff\1\4\1\126\3\uffff\1\4\1\uffff\2\0\1\4\2\0\3\4\1\0"+
+        "\2\4\4\0";
     static final String DFA24_maxS =
-        "\1\156\1\161\3\uffff\1\172\1\156\3\uffff\1\172\1\0\1\uffff\1\0\1"+
-        "\172\2\0\3\172\1\0\2\172\4\0";
+        "\1\157\1\162\3\uffff\1\173\1\157\3\uffff\1\173\1\uffff\2\0\1\173"+
+        "\2\0\3\173\1\0\2\173\4\0";
     static final String DFA24_acceptS =
-        "\2\uffff\1\2\2\1\2\uffff\1\2\2\1\2\uffff\1\1\16\uffff";
+        "\2\uffff\1\2\2\1\2\uffff\1\2\2\1\1\uffff\1\1\17\uffff";
     static final String DFA24_specialS =
-        "\1\0\1\11\3\uffff\1\6\1\10\3\uffff\1\17\1\15\1\uffff\1\14\1\3\1"+
-        "\12\1\4\1\2\1\5\1\13\1\7\1\16\1\1\4\uffff}>";
+        "\1\4\1\12\3\uffff\1\7\1\1\3\uffff\1\0\1\uffff\1\17\1\6\1\13\1\15"+
+        "\1\3\1\16\1\11\1\14\1\2\1\5\1\10\4\uffff}>";
     static final String[] DFA24_transitionS = {
-            "\1\1\27\uffff\1\2",
-            "\1\7\3\uffff\1\11\1\5\2\uffff\1\6\1\10\1\4\15\uffff\1\7\2\uffff"+
+            "\1\1\30\uffff\1\2",
+            "\1\7\3\uffff\1\10\1\5\2\uffff\1\6\1\11\1\4\16\uffff\1\7\2\uffff"+
             "\1\3",
             "",
             "",
             "",
-            "\122\14\1\12\4\14\1\13\37\14",
-            "\1\15\4\uffff\1\7\22\uffff\1\7",
+            "\122\13\1\12\4\13\1\14\40\13",
+            "\1\15\4\uffff\1\7\23\uffff\1\7",
             "",
             "",
             "",
-            "\122\14\1\20\1\21\3\14\1\17\2\14\1\16\15\14\1\22\16\14",
-            "\1\uffff",
+            "\122\13\1\20\1\21\3\13\1\17\2\13\1\16\16\13\1\22\16\13",
             "",
             "\1\uffff",
-            "\122\14\1\23\4\14\1\24\37\14",
             "\1\uffff",
+            "\122\13\1\23\4\13\1\24\40\13",
             "\1\uffff",
-            "\122\14\1\25\44\14",
-            "\151\14\1\26\15\14",
-            "\123\14\1\27\3\14\1\30\20\14\1\31\16\14",
             "\1\uffff",
-            "\123\14\1\21\3\14\1\32\20\14\1\22\16\14",
-            "\127\14\1\32\20\14\1\22\16\14",
+            "\122\13\1\25\45\13",
+            "\152\13\1\26\15\13",
+            "\123\13\1\27\3\13\1\31\21\13\1\30\16\13",
             "\1\uffff",
+            "\123\13\1\21\3\13\1\32\21\13\1\22\16\13",
+            "\127\13\1\32\21\13\1\22\16\13",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
             "\1\uffff"
     };
 
@@ -17297,100 +17666,123 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA24_0 = input.LA(1);
+                        int LA24_10 = input.LA(1);
 
                          
-                        int index24_0 = input.index();
+                        int index24_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA24_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(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))||(validateIdentifierK!
 ey(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 ( (LA24_10==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 14;}
 
-                        else if ( (LA24_0==THEN) ) {s = 2;}
+                        else if ( (LA24_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 15;}
 
+                        else if ( (LA24_10==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 16;}
+
+                        else if ( ((LA24_10>=VT_COMPILATION_UNIT && LA24_10<=SEMICOLON)||(LA24_10>=DOT_STAR && LA24_10<=STRING)||(LA24_10>=COMMA && LA24_10<=RIGHT_PAREN)||(LA24_10>=BOOL && LA24_10<=NULL)||(LA24_10>=RIGHT_SQUARE && LA24_10<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+
+                        else if ( (LA24_10==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
+
+                        else if ( (LA24_10==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
+
                          
-                        input.seek(index24_0);
+                        input.seek(index24_10);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA24_22 = input.LA(1);
+                        int LA24_6 = input.LA(1);
 
                          
-                        int index24_22 = input.index();
+                        int index24_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA24_22>=VT_COMPILATION_UNIT && LA24_22<=STRING)||(LA24_22>=COMMA && LA24_22<=NULL)||(LA24_22>=RIGHT_SQUARE && LA24_22<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
+                        if ( (LA24_6==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 13;}
 
-                        else if ( (LA24_22==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
+                        else if ( (LA24_6==LEFT_PAREN||LA24_6==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.WHEN)))) {s = 7;}
 
-                        else if ( (LA24_22==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 26;}
-
                          
-                        input.seek(index24_22);
+                        input.seek(index24_6);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA24_17 = input.LA(1);
+                        int LA24_20 = input.LA(1);
 
                          
-                        int index24_17 = input.index();
+                        int index24_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA24_17==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 21;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
 
-                        else if ( ((LA24_17>=VT_COMPILATION_UNIT && LA24_17<=SEMICOLON)||(LA24_17>=DOT && LA24_17<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
 
                          
-                        input.seek(index24_17);
+                        input.seek(index24_20);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA24_14 = input.LA(1);
+                        int LA24_16 = input.LA(1);
 
                          
-                        int index24_14 = input.index();
+                        int index24_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA24_14>=VT_COMPILATION_UNIT && LA24_14<=SEMICOLON)||(LA24_14>=DOT && LA24_14<=STRING)||(LA24_14>=COMMA && LA24_14<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
 
-                        else if ( (LA24_14==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 19;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
 
-                        else if ( (LA24_14==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 20;}
-
                          
-                        input.seek(index24_14);
+                        input.seek(index24_16);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA24_16 = input.LA(1);
+                        int LA24_0 = input.LA(1);
 
                          
-                        int index24_16 = input.index();
+                        int index24_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
+                        if ( (LA24_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(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))||(validateIdentifierK!
 ey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {s = 1;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
+                        else if ( (LA24_0==THEN) ) {s = 2;}
 
                          
-                        input.seek(index24_16);
+                        input.seek(index24_0);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA24_18 = input.LA(1);
+                        int LA24_21 = input.LA(1);
 
                          
-                        int index24_18 = input.index();
+                        int index24_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA24_18==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 22;}
+                        if ( ((LA24_21>=VT_COMPILATION_UNIT && LA24_21<=ID)||(LA24_21>=DOT_STAR && LA24_21<=STRING)||(LA24_21>=COMMA && LA24_21<=NULL)||(LA24_21>=RIGHT_SQUARE && LA24_21<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
 
-                        else if ( ((LA24_18>=VT_COMPILATION_UNIT && LA24_18<=LEFT_SQUARE)||(LA24_18>=THEN && LA24_18<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
+                        else if ( (LA24_21==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
 
+                        else if ( (LA24_21==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 26;}
+
+                        else if ( (LA24_21==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
+
                          
-                        input.seek(index24_18);
+                        input.seek(index24_21);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
+                        int LA24_13 = input.LA(1);
+
+                         
+                        int index24_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))) ) {s = 11;}
+
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
+
+                         
+                        input.seek(index24_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
                         int LA24_5 = input.LA(1);
 
                          
@@ -17399,45 +17791,47 @@
                         s = -1;
                         if ( (LA24_5==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 10;}
 
-                        else if ( (LA24_5==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 11;}
+                        else if ( ((LA24_5>=VT_COMPILATION_UNIT && LA24_5<=SEMICOLON)||(LA24_5>=DOT && LA24_5<=STRING)||(LA24_5>=COMMA && LA24_5<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
 
-                        else if ( ((LA24_5>=VT_COMPILATION_UNIT && LA24_5<=SEMICOLON)||(LA24_5>=DOT && LA24_5<=STRING)||(LA24_5>=COMMA && LA24_5<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
+                        else if ( (LA24_5==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 12;}
 
                          
                         input.seek(index24_5);
                         if ( s>=0 ) return s;
                         break;
-                    case 7 : 
-                        int LA24_20 = input.LA(1);
+                    case 8 : 
+                        int LA24_22 = input.LA(1);
 
                          
-                        int index24_20 = input.index();
+                        int index24_22 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
+                        if ( ((LA24_22>=VT_COMPILATION_UNIT && LA24_22<=STRING)||(LA24_22>=COMMA && LA24_22<=NULL)||(LA24_22>=RIGHT_SQUARE && LA24_22<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
+                        else if ( (LA24_22==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
 
+                        else if ( (LA24_22==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 26;}
+
                          
-                        input.seek(index24_20);
+                        input.seek(index24_22);
                         if ( s>=0 ) return s;
                         break;
-                    case 8 : 
-                        int LA24_6 = input.LA(1);
+                    case 9 : 
+                        int LA24_18 = input.LA(1);
 
                          
-                        int index24_6 = input.index();
+                        int index24_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA24_6==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))))) {s = 13;}
+                        if ( (LA24_18==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 22;}
 
-                        else if ( (LA24_6==LEFT_PAREN||LA24_6==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.WHEN)))) {s = 7;}
+                        else if ( ((LA24_18>=VT_COMPILATION_UNIT && LA24_18<=LEFT_SQUARE)||(LA24_18>=THEN && LA24_18<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
 
                          
-                        input.seek(index24_6);
+                        input.seek(index24_18);
                         if ( s>=0 ) return s;
                         break;
-                    case 9 : 
+                    case 10 : 
                         int LA24_1 = input.LA(1);
 
                          
@@ -17454,118 +17848,93 @@
 
                         else if ( (LA24_1==ID||LA24_1==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.WHEN)))) {s = 7;}
 
-                        else if ( (LA24_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 8;}
+                        else if ( (LA24_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 8;}
 
-                        else if ( (LA24_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 9;}
+                        else if ( (LA24_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 9;}
 
                          
                         input.seek(index24_1);
                         if ( s>=0 ) return s;
                         break;
-                    case 10 : 
-                        int LA24_15 = input.LA(1);
+                    case 11 : 
+                        int LA24_14 = input.LA(1);
 
                          
-                        int index24_15 = input.index();
+                        int index24_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
+                        if ( ((LA24_14>=VT_COMPILATION_UNIT && LA24_14<=SEMICOLON)||(LA24_14>=DOT && LA24_14<=STRING)||(LA24_14>=COMMA && LA24_14<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
+                        else if ( (LA24_14==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 19;}
 
+                        else if ( (LA24_14==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 20;}
+
                          
-                        input.seek(index24_15);
+                        input.seek(index24_14);
                         if ( s>=0 ) return s;
                         break;
-                    case 11 : 
+                    case 12 : 
                         int LA24_19 = input.LA(1);
 
                          
                         int index24_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA24_19>=VT_COMPILATION_UNIT && LA24_19<=ID)||(LA24_19>=DOT_STAR && LA24_19<=STRING)||(LA24_19>=COMMA && LA24_19<=NULL)||(LA24_19>=RIGHT_SQUARE && LA24_19<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
+                        if ( (LA24_19==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 23;}
 
-                        else if ( (LA24_19==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 23;}
+                        else if ( (LA24_19==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 24;}
 
-                        else if ( (LA24_19==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 24;}
+                        else if ( (LA24_19==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 25;}
 
-                        else if ( (LA24_19==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 25;}
+                        else if ( ((LA24_19>=VT_COMPILATION_UNIT && LA24_19<=ID)||(LA24_19>=DOT_STAR && LA24_19<=STRING)||(LA24_19>=COMMA && LA24_19<=NULL)||(LA24_19>=RIGHT_SQUARE && LA24_19<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
 
                          
                         input.seek(index24_19);
                         if ( s>=0 ) return s;
                         break;
-                    case 12 : 
-                        int LA24_13 = input.LA(1);
-
-                         
-                        int index24_13 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.ATTRIBUTES))) ) {s = 12;}
-
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
-
-                         
-                        input.seek(index24_13);
-                        if ( s>=0 ) return s;
-                        break;
                     case 13 : 
-                        int LA24_11 = input.LA(1);
+                        int LA24_15 = input.LA(1);
 
                          
-                        int index24_11 = input.index();
+                        int index24_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
 
                         else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
 
                          
-                        input.seek(index24_11);
+                        input.seek(index24_15);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA24_21 = input.LA(1);
+                        int LA24_17 = input.LA(1);
 
                          
-                        int index24_21 = input.index();
+                        int index24_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA24_21>=VT_COMPILATION_UNIT && LA24_21<=ID)||(LA24_21>=DOT_STAR && LA24_21<=STRING)||(LA24_21>=COMMA && LA24_21<=NULL)||(LA24_21>=RIGHT_SQUARE && LA24_21<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
+                        if ( (LA24_17==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 21;}
 
-                        else if ( (LA24_21==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
+                        else if ( ((LA24_17>=VT_COMPILATION_UNIT && LA24_17<=SEMICOLON)||(LA24_17>=DOT && LA24_17<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
 
-                        else if ( (LA24_21==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 26;}
-
-                        else if ( (LA24_21==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
-
                          
-                        input.seek(index24_21);
+                        input.seek(index24_17);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA24_10 = input.LA(1);
+                        int LA24_12 = input.LA(1);
 
                          
-                        int index24_10 = input.index();
+                        int index24_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA24_10==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 14;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
 
-                        else if ( (LA24_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 15;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 7;}
 
-                        else if ( (LA24_10==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 16;}
-
-                        else if ( ((LA24_10>=VT_COMPILATION_UNIT && LA24_10<=SEMICOLON)||(LA24_10>=DOT_STAR && LA24_10<=STRING)||(LA24_10>=COMMA && LA24_10<=RIGHT_PAREN)||(LA24_10>=BOOL && LA24_10<=NULL)||(LA24_10>=RIGHT_SQUARE && LA24_10<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
-
-                        else if ( (LA24_10==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
-
-                        else if ( (LA24_10==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
-
                          
-                        input.seek(index24_10);
+                        input.seek(index24_12);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -17581,43 +17950,43 @@
     static final String DFA30_eofS =
         "\32\uffff";
     static final String DFA30_minS =
-        "\2\126\5\uffff\1\4\2\uffff\1\4\1\uffff\1\0\1\4\2\0\3\4\1\0\2\4\4"+
+        "\2\126\4\uffff\1\4\3\uffff\1\4\1\0\1\uffff\1\4\2\0\3\4\1\0\2\4\4"+
         "\0";
     static final String DFA30_maxS =
-        "\1\156\1\161\5\uffff\1\172\2\uffff\1\172\1\uffff\1\0\1\172\2\0\3"+
-        "\172\1\0\2\172\4\0";
+        "\1\157\1\162\4\uffff\1\173\3\uffff\1\173\1\0\1\uffff\1\173\2\0\3"+
+        "\173\1\0\2\173\4\0";
     static final String DFA30_acceptS =
-        "\2\uffff\1\2\3\1\1\2\1\uffff\2\1\1\uffff\1\1\16\uffff";
+        "\2\uffff\1\2\3\1\1\uffff\2\1\1\2\2\uffff\1\1\15\uffff";
     static final String DFA30_specialS =
-        "\1\7\1\4\5\uffff\1\6\2\uffff\1\15\1\uffff\1\13\1\3\1\1\1\11\1\2"+
-        "\1\5\1\12\1\10\1\14\1\0\4\uffff}>";
+        "\1\15\1\6\4\uffff\1\4\3\uffff\1\0\1\10\1\uffff\1\11\1\13\1\3\1\14"+
+        "\1\7\1\12\1\1\1\2\1\5\4\uffff}>";
     static final String[] DFA30_transitionS = {
-            "\1\1\5\uffff\1\3\21\uffff\1\2",
-            "\1\6\3\uffff\1\10\1\7\2\uffff\1\6\1\11\1\5\15\uffff\1\6\2\uffff"+
-            "\1\4",
+            "\1\1\5\uffff\1\3\22\uffff\1\2",
+            "\1\11\3\uffff\1\10\1\6\2\uffff\1\11\1\7\1\5\16\uffff\1\11\2"+
+            "\uffff\1\4",
             "",
             "",
             "",
             "",
+            "\122\14\1\12\4\14\1\13\40\14",
             "",
-            "\122\13\1\12\4\13\1\14\37\13",
             "",
             "",
-            "\122\13\1\16\1\20\3\13\1\17\2\13\1\15\15\13\1\21\16\13",
+            "\122\14\1\17\1\20\3\14\1\16\2\14\1\15\16\14\1\21\16\14",
+            "\1\uffff",
             "",
+            "\122\14\1\22\4\14\1\23\40\14",
             "\1\uffff",
-            "\122\13\1\22\4\13\1\23\37\13",
             "\1\uffff",
+            "\122\14\1\24\45\14",
+            "\152\14\1\25\15\14",
+            "\123\14\1\26\3\14\1\30\21\14\1\27\16\14",
             "\1\uffff",
-            "\122\13\1\24\44\13",
-            "\151\13\1\25\15\13",
-            "\123\13\1\26\3\13\1\27\20\13\1\30\16\13",
+            "\123\14\1\20\3\14\1\31\21\14\1\21\16\14",
+            "\127\14\1\31\21\14\1\21\16\14",
             "\1\uffff",
-            "\123\13\1\20\3\13\1\31\20\13\1\21\16\13",
-            "\127\13\1\31\20\13\1\21\16\13",
             "\1\uffff",
             "\1\uffff",
-            "\1\uffff",
             "\1\uffff"
     };
 
@@ -17657,169 +18026,179 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA30_21 = input.LA(1);
+                        int LA30_10 = input.LA(1);
 
                          
-                        int index30_21 = input.index();
+                        int index30_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA30_21>=VT_COMPILATION_UNIT && LA30_21<=STRING)||(LA30_21>=COMMA && LA30_21<=NULL)||(LA30_21>=RIGHT_SQUARE && LA30_21<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        if ( (LA30_10==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 13;}
 
-                        else if ( (LA30_21==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
+                        else if ( (LA30_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 14;}
 
-                        else if ( (LA30_21==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 25;}
+                        else if ( ((LA30_10>=VT_COMPILATION_UNIT && LA30_10<=SEMICOLON)||(LA30_10>=DOT_STAR && LA30_10<=STRING)||(LA30_10>=COMMA && LA30_10<=RIGHT_PAREN)||(LA30_10>=BOOL && LA30_10<=NULL)||(LA30_10>=RIGHT_SQUARE && LA30_10<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
+                        else if ( (LA30_10==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 15;}
+
+                        else if ( (LA30_10==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 16;}
+
+                        else if ( (LA30_10==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
+
                          
-                        input.seek(index30_21);
+                        input.seek(index30_10);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA30_14 = input.LA(1);
+                        int LA30_19 = input.LA(1);
 
                          
-                        int index30_14 = input.index();
+                        int index30_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 6;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 9;}
 
                          
-                        input.seek(index30_14);
+                        input.seek(index30_19);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA30_16 = input.LA(1);
+                        int LA30_20 = input.LA(1);
 
                          
-                        int index30_16 = input.index();
+                        int index30_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA30_16==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 20;}
+                        if ( ((LA30_20>=VT_COMPILATION_UNIT && LA30_20<=ID)||(LA30_20>=DOT_STAR && LA30_20<=STRING)||(LA30_20>=COMMA && LA30_20<=NULL)||(LA30_20>=RIGHT_SQUARE && LA30_20<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
-                        else if ( ((LA30_16>=VT_COMPILATION_UNIT && LA30_16<=SEMICOLON)||(LA30_16>=DOT && LA30_16<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        else if ( (LA30_20==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
 
+                        else if ( (LA30_20==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 25;}
+
+                        else if ( (LA30_20==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 16;}
+
                          
-                        input.seek(index30_16);
+                        input.seek(index30_20);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA30_13 = input.LA(1);
+                        int LA30_15 = input.LA(1);
 
                          
-                        int index30_13 = input.index();
+                        int index30_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA30_13>=VT_COMPILATION_UNIT && LA30_13<=SEMICOLON)||(LA30_13>=DOT && LA30_13<=STRING)||(LA30_13>=COMMA && LA30_13<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
 
-                        else if ( (LA30_13==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 9;}
 
-                        else if ( (LA30_13==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 19;}
-
                          
-                        input.seek(index30_13);
+                        input.seek(index30_15);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA30_1 = input.LA(1);
+                        int LA30_6 = input.LA(1);
 
                          
-                        int index30_1 = input.index();
+                        int index30_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA30_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) && validateL!
 T(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {s = 4;}
+                        if ( (LA30_6==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 10;}
 
-                        else if ( (LA30_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {s = 5;}
+                        else if ( (LA30_6==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 11;}
 
-                        else if ( (LA30_1==ID||LA30_1==COLON||LA30_1==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.WHEN)))) {s = 6;}
+                        else if ( ((LA30_6>=VT_COMPILATION_UNIT && LA30_6<=SEMICOLON)||(LA30_6>=DOT && LA30_6<=STRING)||(LA30_6>=COMMA && LA30_6<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
-                        else if ( (LA30_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 7;}
-
-                        else if ( (LA30_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 8;}
-
-                        else if ( (LA30_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 9;}
-
                          
-                        input.seek(index30_1);
+                        input.seek(index30_6);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA30_17 = input.LA(1);
+                        int LA30_21 = input.LA(1);
 
                          
-                        int index30_17 = input.index();
+                        int index30_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA30_17==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 21;}
+                        if ( ((LA30_21>=VT_COMPILATION_UNIT && LA30_21<=STRING)||(LA30_21>=COMMA && LA30_21<=NULL)||(LA30_21>=RIGHT_SQUARE && LA30_21<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
-                        else if ( ((LA30_17>=VT_COMPILATION_UNIT && LA30_17<=LEFT_SQUARE)||(LA30_17>=THEN && LA30_17<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        else if ( (LA30_21==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
 
+                        else if ( (LA30_21==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 25;}
+
                          
-                        input.seek(index30_17);
+                        input.seek(index30_21);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA30_7 = input.LA(1);
+                        int LA30_1 = input.LA(1);
 
                          
-                        int index30_7 = input.index();
+                        int index30_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA30_7==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 10;}
+                        if ( (LA30_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) && validateL!
 T(2, "-") && validateLT(3, DroolsSoftKeywords.EFFECTIVE))))) {s = 4;}
 
-                        else if ( ((LA30_7>=VT_COMPILATION_UNIT && LA30_7<=SEMICOLON)||(LA30_7>=DOT && LA30_7<=STRING)||(LA30_7>=COMMA && LA30_7<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        else if ( (LA30_1==INT) && (((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.DURATION))))) {s = 5;}
 
-                        else if ( (LA30_7==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 12;}
+                        else if ( (LA30_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 6;}
 
+                        else if ( (LA30_1==BOOL) && ((validateIdentifierKey(DroolsSoftKeywords.ENABLED)))) {s = 7;}
+
+                        else if ( (LA30_1==STRING) && ((validateIdentifierKey(DroolsSoftKeywords.DIALECT)))) {s = 8;}
+
+                        else if ( (LA30_1==ID||LA30_1==COLON||LA30_1==THEN) && ((validateIdentifierKey(DroolsSoftKeywords.WHEN)))) {s = 9;}
+
                          
-                        input.seek(index30_7);
+                        input.seek(index30_1);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA30_0 = input.LA(1);
+                        int LA30_17 = input.LA(1);
 
                          
-                        int index30_0 = input.index();
+                        int index30_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA30_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(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))||(validateIdentifierK!
 ey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {s = 1;}
+                        if ( (LA30_17==RIGHT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 21;}
 
-                        else if ( (LA30_0==THEN) ) {s = 2;}
+                        else if ( ((LA30_17>=VT_COMPILATION_UNIT && LA30_17<=LEFT_SQUARE)||(LA30_17>=THEN && LA30_17<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
-                        else if ( (LA30_0==COMMA) ) {s = 3;}
-
                          
-                        input.seek(index30_0);
+                        input.seek(index30_17);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA30_19 = input.LA(1);
+                        int LA30_11 = input.LA(1);
 
                          
-                        int index30_19 = input.index();
+                        int index30_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 6;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 9;}
 
                          
-                        input.seek(index30_19);
+                        input.seek(index30_11);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA30_15 = input.LA(1);
+                        int LA30_13 = input.LA(1);
 
                          
-                        int index30_15 = input.index();
+                        int index30_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
+                        if ( ((LA30_13>=VT_COMPILATION_UNIT && LA30_13<=SEMICOLON)||(LA30_13>=DOT && LA30_13<=STRING)||(LA30_13>=COMMA && LA30_13<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 6;}
+                        else if ( (LA30_13==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 18;}
 
+                        else if ( (LA30_13==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 19;}
+
                          
-                        input.seek(index30_15);
+                        input.seek(index30_13);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
@@ -17829,73 +18208,63 @@
                         int index30_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA30_18>=VT_COMPILATION_UNIT && LA30_18<=ID)||(LA30_18>=DOT_STAR && LA30_18<=STRING)||(LA30_18>=COMMA && LA30_18<=NULL)||(LA30_18>=RIGHT_SQUARE && LA30_18<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        if ( (LA30_18==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 22;}
 
-                        else if ( (LA30_18==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 22;}
+                        else if ( (LA30_18==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 23;}
 
-                        else if ( (LA30_18==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 23;}
+                        else if ( (LA30_18==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 24;}
 
-                        else if ( (LA30_18==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 24;}
+                        else if ( ((LA30_18>=VT_COMPILATION_UNIT && LA30_18<=ID)||(LA30_18>=DOT_STAR && LA30_18<=STRING)||(LA30_18>=COMMA && LA30_18<=NULL)||(LA30_18>=RIGHT_SQUARE && LA30_18<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
                          
                         input.seek(index30_18);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA30_12 = input.LA(1);
+                        int LA30_14 = input.LA(1);
 
                          
-                        int index30_12 = input.index();
+                        int index30_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 11;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE))) ) {s = 12;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 6;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.WHEN))) ) {s = 9;}
 
                          
-                        input.seek(index30_12);
+                        input.seek(index30_14);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA30_20 = input.LA(1);
+                        int LA30_16 = input.LA(1);
 
                          
-                        int index30_20 = input.index();
+                        int index30_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA30_20>=VT_COMPILATION_UNIT && LA30_20<=ID)||(LA30_20>=DOT_STAR && LA30_20<=STRING)||(LA30_20>=COMMA && LA30_20<=NULL)||(LA30_20>=RIGHT_SQUARE && LA30_20<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        if ( (LA30_16==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 20;}
 
-                        else if ( (LA30_20==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
+                        else if ( ((LA30_16>=VT_COMPILATION_UNIT && LA30_16<=SEMICOLON)||(LA30_16>=DOT && LA30_16<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 12;}
 
-                        else if ( (LA30_20==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 25;}
-
-                        else if ( (LA30_20==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 16;}
-
                          
-                        input.seek(index30_20);
+                        input.seek(index30_16);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA30_10 = input.LA(1);
+                        int LA30_0 = input.LA(1);
 
                          
-                        int index30_10 = input.index();
+                        int index30_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA30_10==COLON) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 13;}
+                        if ( (LA30_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.DIALECT))||(validateIdentifierKey(DroolsSoftKeywords.ACTIVATION) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(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))||(validateIdentifierK!
 ey(DroolsSoftKeywords.SALIENCE))||(validateIdentifierKey(DroolsSoftKeywords.RULEFLOW) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.GROUP))||(validateIdentifierKey(DroolsSoftKeywords.ENABLED))||(validateIdentifierKey(DroolsSoftKeywords.AUTO) && validateLT(2, "-") && validateLT(3, DroolsSoftKeywords.FOCUS))))) {s = 1;}
 
-                        else if ( ((LA30_10>=VT_COMPILATION_UNIT && LA30_10<=SEMICOLON)||(LA30_10>=DOT_STAR && LA30_10<=STRING)||(LA30_10>=COMMA && LA30_10<=RIGHT_PAREN)||(LA30_10>=BOOL && LA30_10<=NULL)||(LA30_10>=RIGHT_SQUARE && LA30_10<=MULTI_LINE_COMMENT)) && ((validateIdentifierKey(DroolsSoftKeywords.SALIENCE)))) {s = 11;}
+                        else if ( (LA30_0==THEN) ) {s = 2;}
 
-                        else if ( (LA30_10==ID) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 14;}
+                        else if ( (LA30_0==COMMA) ) {s = 3;}
 
-                        else if ( (LA30_10==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 15;}
-
-                        else if ( (LA30_10==DOT) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 16;}
-
-                        else if ( (LA30_10==LEFT_SQUARE) && (((validateIdentifierKey(DroolsSoftKeywords.WHEN))||(validateIdentifierKey(DroolsSoftKeywords.SALIENCE))))) {s = 17;}
-
                          
-                        input.seek(index30_10);
+                        input.seek(index30_0);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -17907,97 +18276,100 @@
         }
     }
     static final String DFA47_eotS =
-        "\164\uffff";
+        "\172\uffff";
     static final String DFA47_eofS =
-        "\164\uffff";
+        "\172\uffff";
     static final String DFA47_minS =
-        "\3\126\2\0\1\126\1\0\1\126\1\155\3\uffff\1\127\1\126\1\uffff\1\127"+
-        "\1\133\1\126\1\155\1\126\1\127\1\126\1\127\1\133\1\126\2\0\1\126"+
-        "\1\155\2\126\2\0\1\126\1\4\10\126\1\0\2\uffff\1\127\1\133\1\126"+
-        "\1\0\2\126\1\0\1\4\10\126\1\uffff\1\126\1\4\11\0\1\uffff\13\0\1"+
-        "\uffff\4\0\1\uffff\30\0";
+        "\3\126\2\0\1\126\1\0\1\uffff\1\126\1\156\2\uffff\1\127\1\126\1\uffff"+
+        "\1\127\1\133\1\126\1\156\1\126\1\127\1\126\1\127\1\133\1\126\2\0"+
+        "\1\126\1\156\2\126\2\0\1\126\1\0\1\4\11\126\2\uffff\1\127\1\133"+
+        "\1\126\1\0\2\126\1\4\11\126\1\0\1\uffff\1\126\1\uffff\1\4\26\0\1"+
+        "\uffff\17\0\1\uffff\17\0";
     static final String DFA47_maxS =
-        "\2\133\1\154\2\0\1\133\1\0\1\126\1\155\3\uffff\1\154\1\126\1\uffff"+
-        "\2\154\1\126\1\155\1\135\1\154\1\135\3\154\2\0\1\126\1\155\1\135"+
-        "\1\154\2\0\1\126\1\172\1\126\1\154\6\153\1\0\2\uffff\3\154\1\0\1"+
-        "\141\1\126\1\0\1\172\1\126\1\154\6\153\1\uffff\1\154\1\172\11\0"+
-        "\1\uffff\13\0\1\uffff\4\0\1\uffff\30\0";
+        "\2\133\1\155\2\0\1\133\1\0\1\uffff\1\126\1\156\2\uffff\1\155\1\126"+
+        "\1\uffff\2\155\1\126\1\156\1\135\1\155\1\135\3\155\2\0\1\126\1\156"+
+        "\1\135\1\155\2\0\1\126\1\0\1\173\1\126\7\154\1\126\2\uffff\3\155"+
+        "\1\0\1\141\1\126\1\173\1\126\7\154\1\126\1\0\1\uffff\1\155\1\uffff"+
+        "\1\173\26\0\1\uffff\17\0\1\uffff\17\0";
     static final String DFA47_acceptS =
-        "\11\uffff\1\1\2\2\2\uffff\1\3\35\uffff\2\3\20\uffff\1\3\13\uffff"+
-        "\1\3\13\uffff\1\3\4\uffff\1\3\30\uffff";
+        "\7\uffff\1\1\2\uffff\2\2\2\uffff\1\3\36\uffff\2\3\21\uffff\1\3\1"+
+        "\uffff\1\3\27\uffff\1\3\17\uffff\1\3\17\uffff";
     static final String DFA47_specialS =
-        "\2\uffff\1\10\1\6\1\7\1\uffff\1\12\22\uffff\1\1\1\4\4\uffff\1\0"+
-        "\1\5\12\uffff\1\3\5\uffff\1\2\2\uffff\1\11\77\uffff}>";
+        "\2\uffff\1\5\1\0\1\7\1\uffff\1\11\22\uffff\1\3\1\12\4\uffff\1\2"+
+        "\1\10\1\uffff\1\6\17\uffff\1\4\14\uffff\1\1\72\uffff}>";
     static final String[] DFA47_transitionS = {
             "\1\2\4\uffff\1\1",
             "\1\3\4\uffff\1\4",
-            "\1\11\1\7\3\uffff\1\6\2\uffff\1\5\15\uffff\1\10",
+            "\1\7\1\10\3\uffff\1\6\2\uffff\1\5\16\uffff\1\11",
             "\1\uffff",
             "\1\uffff",
             "\1\14\4\uffff\1\15",
             "\1\uffff",
+            "",
             "\1\17",
             "\1\20",
             "",
             "",
-            "",
-            "\1\21\3\uffff\1\23\20\uffff\1\22",
+            "\1\21\3\uffff\1\23\21\uffff\1\22",
             "\1\24",
             "",
-            "\1\7\3\uffff\1\25\20\uffff\1\10",
-            "\1\25\20\uffff\1\10",
+            "\1\10\3\uffff\1\25\21\uffff\1\11",
+            "\1\25\21\uffff\1\11",
             "\1\26",
             "\1\27",
             "\1\30\4\uffff\1\31\1\uffff\1\32",
-            "\1\33\3\uffff\1\35\20\uffff\1\34",
+            "\1\33\3\uffff\1\35\21\uffff\1\34",
             "\1\36\4\uffff\1\37\1\uffff\1\40",
-            "\1\21\3\uffff\1\23\20\uffff\1\22",
-            "\1\23\20\uffff\1\22",
-            "\1\44\1\43\3\uffff\1\53\2\uffff\1\41\5\uffff\1\45\1\46\1\47"+
-            "\1\50\1\51\1\52\2\uffff\1\42",
+            "\1\21\3\uffff\1\23\21\uffff\1\22",
+            "\1\23\21\uffff\1\22",
+            "\1\45\1\44\3\uffff\1\42\2\uffff\1\41\5\uffff\1\46\1\47\1\50"+
+            "\1\51\1\52\1\53\1\54\2\uffff\1\43",
             "\1\uffff",
             "\1\uffff",
-            "\1\56",
             "\1\57",
-            "\1\60\4\uffff\1\61\1\uffff\1\62",
-            "\1\67\1\66\3\uffff\1\64\2\uffff\1\63\5\uffff\1\70\1\71\1\72"+
-            "\1\73\1\74\1\75\2\uffff\1\65",
+            "\1\60",
+            "\1\61\4\uffff\1\62\1\uffff\1\63",
+            "\1\67\1\66\3\uffff\1\77\2\uffff\1\64\5\uffff\1\70\1\71\1\72"+
+            "\1\73\1\74\1\75\1\76\2\uffff\1\65",
             "\1\uffff",
             "\1\uffff",
-            "\1\77",
-            "\150\100\1\101\1\102\15\100",
-            "\1\103",
-            "\1\106\3\uffff\1\107\1\104\3\uffff\2\107\11\uffff\2\107\1\105",
-            "\1\110\3\uffff\1\107\1\111\3\uffff\2\107\11\uffff\2\107",
-            "\1\110\3\uffff\1\107\1\111\3\uffff\2\107\11\uffff\2\107",
-            "\1\110\3\uffff\1\107\1\111\3\uffff\2\107\11\uffff\2\107",
-            "\1\110\3\uffff\1\107\1\111\3\uffff\2\107\11\uffff\2\107",
-            "\1\110\3\uffff\1\107\1\111\3\uffff\2\107\11\uffff\2\107",
-            "\1\110\3\uffff\1\107\1\111\3\uffff\2\107\11\uffff\2\107",
+            "\1\101",
             "\1\uffff",
+            "\151\103\1\104\1\105\15\103",
+            "\1\106",
+            "\1\107\3\uffff\1\111\1\112\3\uffff\2\111\11\uffff\1\110\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\115",
             "",
             "",
-            "\1\33\3\uffff\1\35\20\uffff\1\34",
-            "\1\35\20\uffff\1\34",
-            "\1\116\1\115\3\uffff\1\125\2\uffff\1\113\5\uffff\1\117\1\120"+
-            "\1\121\1\122\1\123\1\124\2\uffff\1\114",
+            "\1\33\3\uffff\1\35\21\uffff\1\34",
+            "\1\35\21\uffff\1\34",
+            "\1\121\1\120\3\uffff\1\131\2\uffff\1\116\5\uffff\1\122\1\123"+
+            "\1\124\1\125\1\126\1\127\1\130\2\uffff\1\117",
             "\1\uffff",
-            "\1\127\6\uffff\1\131\3\uffff\1\130",
-            "\1\132",
+            "\1\133\6\uffff\1\135\3\uffff\1\134",
+            "\1\136",
+            "\151\137\1\140\1\141\15\137",
+            "\1\142",
+            "\1\143\3\uffff\1\144\1\145\3\uffff\2\144\11\uffff\1\146\2\144",
+            "\1\147\3\uffff\1\144\1\150\3\uffff\2\144\12\uffff\2\144",
+            "\1\147\3\uffff\1\144\1\150\3\uffff\2\144\12\uffff\2\144",
+            "\1\147\3\uffff\1\144\1\150\3\uffff\2\144\12\uffff\2\144",
+            "\1\147\3\uffff\1\144\1\150\3\uffff\2\144\12\uffff\2\144",
+            "\1\147\3\uffff\1\144\1\150\3\uffff\2\144\12\uffff\2\144",
+            "\1\147\3\uffff\1\144\1\150\3\uffff\2\144\12\uffff\2\144",
+            "\1\151",
             "\1\uffff",
-            "\150\134\1\135\1\136\15\134",
-            "\1\137",
-            "\1\140\3\uffff\1\141\1\142\3\uffff\2\141\11\uffff\2\141\1\143",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
             "",
-            "\1\150\1\147\3\uffff\1\157\1\163\1\32\3\uffff\1\162\1\161\1"+
-            "\160\1\151\1\152\1\153\1\154\1\155\1\156\2\uffff\1\146",
-            "\150\100\1\101\1\102\15\100",
+            "\1\155\1\154\3\uffff\1\165\1\171\1\32\3\uffff\1\170\1\167\1"+
+            "\166\1\156\1\157\1\160\1\161\1\162\1\163\1\164\2\uffff\1\153",
+            "",
+            "\151\103\1\104\1\105\15\103",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -18007,7 +18379,6 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -18019,12 +18390,13 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
             "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -18036,6 +18408,7 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -18048,6 +18421,8 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
             "\1\uffff"
     };
 
@@ -18087,108 +18462,114 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA47_31 = input.LA(1);
+                        int LA47_3 = input.LA(1);
 
                          
-                        int index47_31 = input.index();
+                        int index47_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 62;}
+                        else if ( (true) ) {s = 10;}
 
                          
-                        input.seek(index47_31);
+                        input.seek(index47_3);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA47_25 = input.LA(1);
+                        int LA47_63 = input.LA(1);
 
                          
-                        int index47_25 = input.index();
+                        int index47_63 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 44;}
+                        else if ( (true) ) {s = 106;}
 
                          
-                        input.seek(index47_25);
+                        input.seek(index47_63);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA47_49 = input.LA(1);
+                        int LA47_31 = input.LA(1);
 
                          
-                        int index47_49 = input.index();
+                        int index47_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 86;}
+                        else if ( (true) ) {s = 64;}
 
                          
-                        input.seek(index47_49);
+                        input.seek(index47_31);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA47_43 = input.LA(1);
+                        int LA47_25 = input.LA(1);
 
                          
-                        int index47_43 = input.index();
+                        int index47_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 74;}
+                        else if ( (true) ) {s = 45;}
 
                          
-                        input.seek(index47_43);
+                        input.seek(index47_25);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA47_26 = input.LA(1);
+                        int LA47_50 = input.LA(1);
 
                          
-                        int index47_26 = input.index();
+                        int index47_50 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 45;}
+                        else if ( (true) ) {s = 90;}
 
                          
-                        input.seek(index47_26);
+                        input.seek(index47_50);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA47_32 = input.LA(1);
+                        int LA47_2 = input.LA(1);
 
                          
-                        int index47_32 = input.index();
+                        int index47_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (LA47_2==COLON) ) {s = 5;}
 
-                        else if ( (true) ) {s = 45;}
+                        else if ( (LA47_2==LEFT_PAREN) ) {s = 6;}
 
+                        else if ( (LA47_2==ID) && (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierK!
 ey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))))) {s = 7;}
+
+                        else if ( (LA47_2==DOT) ) {s = 8;}
+
+                        else if ( (LA47_2==LEFT_SQUARE) ) {s = 9;}
+
                          
-                        input.seek(index47_32);
+                        input.seek(index47_2);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA47_3 = input.LA(1);
+                        int LA47_34 = input.LA(1);
 
                          
-                        int index47_3 = input.index();
+                        int index47_34 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 10;}
+                        else if ( (true) ) {s = 66;}
 
                          
-                        input.seek(index47_3);
+                        input.seek(index47_34);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
@@ -18198,7 +18579,7 @@
                         int index47_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
                         else if ( (true) ) {s = 11;}
 
@@ -18207,54 +18588,48 @@
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA47_2 = input.LA(1);
+                        int LA47_32 = input.LA(1);
 
                          
-                        int index47_2 = input.index();
+                        int index47_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA47_2==COLON) ) {s = 5;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (LA47_2==LEFT_PAREN) ) {s = 6;}
+                        else if ( (true) ) {s = 46;}
 
-                        else if ( (LA47_2==DOT) ) {s = 7;}
-
-                        else if ( (LA47_2==LEFT_SQUARE) ) {s = 8;}
-
-                        else if ( (LA47_2==ID) && (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred6()&&(validateIdentifierK!
 ey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))))) {s = 9;}
-
                          
-                        input.seek(index47_2);
+                        input.seek(index47_32);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA47_52 = input.LA(1);
+                        int LA47_6 = input.LA(1);
 
                          
-                        int index47_52 = input.index();
+                        int index47_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred6()) ) {s = 9;}
+                        if ( (((synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||synpred6()||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL))))) ) {s = 7;}
 
-                        else if ( (true) ) {s = 91;}
+                        else if ( (true) ) {s = 14;}
 
                          
-                        input.seek(index47_52);
+                        input.seek(index47_6);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA47_6 = input.LA(1);
+                        int LA47_26 = input.LA(1);
 
                          
-                        int index47_6 = input.index();
+                        int index47_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((synpred6()||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred6()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS))))) ) {s = 9;}
+                        if ( (synpred6()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 14;}
+                        else if ( (true) ) {s = 46;}
 
                          
-                        input.seek(index47_6);
+                        input.seek(index47_26);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -18266,31 +18641,31 @@
         }
     }
     static final String DFA48_eotS =
-        "\165\uffff";
+        "\173\uffff";
     static final String DFA48_eofS =
-        "\165\uffff";
+        "\173\uffff";
     static final String DFA48_minS =
-        "\3\126\2\0\1\126\1\0\1\uffff\1\126\1\155\2\uffff\1\127\1\126\1\uffff"+
-        "\1\127\1\133\1\126\1\155\1\126\1\127\1\126\1\127\1\133\1\126\2\0"+
-        "\1\126\1\155\2\126\2\0\1\126\1\4\10\126\1\0\2\uffff\1\127\1\133"+
-        "\1\126\1\0\2\126\1\4\10\126\1\0\2\uffff\1\126\1\4\11\0\1\uffff\13"+
-        "\0\1\uffff\16\0\1\uffff\16\0";
+        "\3\126\2\0\1\126\1\0\1\uffff\1\126\1\156\2\uffff\1\127\1\126\1\uffff"+
+        "\1\127\1\133\1\126\1\156\1\126\1\127\1\126\1\127\1\133\1\126\2\0"+
+        "\1\126\1\156\2\126\2\0\1\126\1\4\11\126\1\0\2\uffff\1\127\1\133"+
+        "\1\126\1\0\2\126\1\4\11\126\1\0\2\uffff\1\126\1\4\12\0\1\uffff\14"+
+        "\0\1\uffff\17\0\1\uffff\17\0";
     static final String DFA48_maxS =
-        "\2\133\1\154\2\0\1\133\1\0\1\uffff\1\126\1\155\2\uffff\1\154\1\126"+
-        "\1\uffff\2\154\1\126\1\155\1\135\1\154\1\135\3\154\2\0\1\126\1\155"+
-        "\1\135\1\154\2\0\1\126\1\172\1\126\1\154\6\153\1\0\2\uffff\3\154"+
-        "\1\0\1\141\1\126\1\172\1\126\1\154\6\153\1\0\2\uffff\1\154\1\172"+
-        "\11\0\1\uffff\13\0\1\uffff\16\0\1\uffff\16\0";
+        "\2\133\1\155\2\0\1\133\1\0\1\uffff\1\126\1\156\2\uffff\1\155\1\126"+
+        "\1\uffff\2\155\1\126\1\156\1\135\1\155\1\135\3\155\2\0\1\126\1\156"+
+        "\1\135\1\155\2\0\1\126\1\173\1\126\7\154\1\126\1\0\2\uffff\3\155"+
+        "\1\0\1\141\1\126\1\173\1\126\7\154\1\126\1\0\2\uffff\1\155\1\173"+
+        "\12\0\1\uffff\14\0\1\uffff\17\0\1\uffff\17\0";
     static final String DFA48_acceptS =
-        "\7\uffff\1\1\2\uffff\2\2\2\uffff\1\3\35\uffff\2\3\20\uffff\2\3\13"+
-        "\uffff\1\3\13\uffff\1\3\16\uffff\1\3\16\uffff";
+        "\7\uffff\1\1\2\uffff\2\2\2\uffff\1\3\36\uffff\2\3\21\uffff\2\3\14"+
+        "\uffff\1\3\14\uffff\1\3\17\uffff\1\3\17\uffff";
     static final String DFA48_specialS =
-        "\2\uffff\1\10\1\3\1\1\1\uffff\1\7\22\uffff\1\2\1\6\4\uffff\1\4\1"+
-        "\11\12\uffff\1\12\5\uffff\1\5\13\uffff\1\0\67\uffff}>";
+        "\2\uffff\1\5\1\2\1\1\1\uffff\1\7\22\uffff\1\0\1\6\4\uffff\1\3\1"+
+        "\11\13\uffff\1\12\5\uffff\1\4\14\uffff\1\10\73\uffff}>";
     static final String[] DFA48_transitionS = {
             "\1\2\4\uffff\1\1",
             "\1\4\4\uffff\1\3",
-            "\1\7\1\10\3\uffff\1\6\2\uffff\1\5\15\uffff\1\11",
+            "\1\7\1\10\3\uffff\1\6\2\uffff\1\5\16\uffff\1\11",
             "\1\uffff",
             "\1\uffff",
             "\1\14\4\uffff\1\15",
@@ -18300,64 +18675,66 @@
             "\1\20",
             "",
             "",
-            "\1\21\3\uffff\1\23\20\uffff\1\22",
+            "\1\21\3\uffff\1\23\21\uffff\1\22",
             "\1\24",
             "",
-            "\1\10\3\uffff\1\25\20\uffff\1\11",
-            "\1\25\20\uffff\1\11",
+            "\1\10\3\uffff\1\25\21\uffff\1\11",
+            "\1\25\21\uffff\1\11",
             "\1\26",
             "\1\27",
             "\1\30\4\uffff\1\31\1\uffff\1\32",
-            "\1\33\3\uffff\1\35\20\uffff\1\34",
+            "\1\33\3\uffff\1\35\21\uffff\1\34",
             "\1\36\4\uffff\1\37\1\uffff\1\40",
-            "\1\21\3\uffff\1\23\20\uffff\1\22",
-            "\1\23\20\uffff\1\22",
-            "\1\44\1\43\3\uffff\1\53\2\uffff\1\41\5\uffff\1\45\1\46\1\47"+
-            "\1\50\1\51\1\52\2\uffff\1\42",
+            "\1\21\3\uffff\1\23\21\uffff\1\22",
+            "\1\23\21\uffff\1\22",
+            "\1\44\1\43\3\uffff\1\54\2\uffff\1\41\5\uffff\1\45\1\46\1\47"+
+            "\1\50\1\51\1\52\1\53\2\uffff\1\42",
             "\1\uffff",
             "\1\uffff",
-            "\1\56",
             "\1\57",
-            "\1\60\4\uffff\1\61\1\uffff\1\62",
-            "\1\66\1\65\3\uffff\1\75\2\uffff\1\63\5\uffff\1\67\1\70\1\71"+
-            "\1\72\1\73\1\74\2\uffff\1\64",
+            "\1\60",
+            "\1\61\4\uffff\1\62\1\uffff\1\63",
+            "\1\67\1\66\3\uffff\1\77\2\uffff\1\64\5\uffff\1\70\1\71\1\72"+
+            "\1\73\1\74\1\75\1\76\2\uffff\1\65",
             "\1\uffff",
             "\1\uffff",
-            "\1\100",
-            "\150\101\1\102\1\103\15\101",
-            "\1\104",
-            "\1\105\3\uffff\1\107\1\110\3\uffff\2\107\11\uffff\2\107\1\106",
-            "\1\111\3\uffff\1\107\1\112\3\uffff\2\107\11\uffff\2\107",
-            "\1\111\3\uffff\1\107\1\112\3\uffff\2\107\11\uffff\2\107",
-            "\1\111\3\uffff\1\107\1\112\3\uffff\2\107\11\uffff\2\107",
-            "\1\111\3\uffff\1\107\1\112\3\uffff\2\107\11\uffff\2\107",
-            "\1\111\3\uffff\1\107\1\112\3\uffff\2\107\11\uffff\2\107",
-            "\1\111\3\uffff\1\107\1\112\3\uffff\2\107\11\uffff\2\107",
+            "\1\102",
+            "\151\103\1\104\1\105\15\103",
+            "\1\106",
+            "\1\107\3\uffff\1\111\1\112\3\uffff\2\111\11\uffff\1\110\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\113\3\uffff\1\111\1\114\3\uffff\2\111\12\uffff\2\111",
+            "\1\115",
             "\1\uffff",
             "",
             "",
-            "\1\33\3\uffff\1\35\20\uffff\1\34",
-            "\1\35\20\uffff\1\34",
-            "\1\117\1\116\3\uffff\1\126\2\uffff\1\114\5\uffff\1\120\1\121"+
-            "\1\122\1\123\1\124\1\125\2\uffff\1\115",
+            "\1\33\3\uffff\1\35\21\uffff\1\34",
+            "\1\35\21\uffff\1\34",
+            "\1\123\1\122\3\uffff\1\120\2\uffff\1\117\5\uffff\1\124\1\125"+
+            "\1\126\1\127\1\130\1\131\1\132\2\uffff\1\121",
             "\1\uffff",
-            "\1\130\6\uffff\1\132\3\uffff\1\131",
-            "\1\133",
-            "\150\134\1\135\1\136\15\134",
+            "\1\134\6\uffff\1\136\3\uffff\1\135",
             "\1\137",
-            "\1\140\3\uffff\1\141\1\142\3\uffff\2\141\11\uffff\2\141\1\143",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
-            "\1\144\3\uffff\1\141\1\145\3\uffff\2\141\11\uffff\2\141",
+            "\151\140\1\141\1\142\15\140",
+            "\1\143",
+            "\1\144\3\uffff\1\145\1\146\3\uffff\2\145\11\uffff\1\147\2\145",
+            "\1\150\3\uffff\1\145\1\151\3\uffff\2\145\12\uffff\2\145",
+            "\1\150\3\uffff\1\145\1\151\3\uffff\2\145\12\uffff\2\145",
+            "\1\150\3\uffff\1\145\1\151\3\uffff\2\145\12\uffff\2\145",
+            "\1\150\3\uffff\1\145\1\151\3\uffff\2\145\12\uffff\2\145",
+            "\1\150\3\uffff\1\145\1\151\3\uffff\2\145\12\uffff\2\145",
+            "\1\150\3\uffff\1\145\1\151\3\uffff\2\145\12\uffff\2\145",
+            "\1\152",
             "\1\uffff",
             "",
             "",
-            "\1\151\1\150\3\uffff\1\160\1\164\1\32\3\uffff\1\163\1\162\1"+
-            "\161\1\152\1\153\1\154\1\155\1\156\1\157\2\uffff\1\147",
-            "\150\101\1\102\1\103\15\101",
+            "\1\156\1\155\3\uffff\1\166\1\172\1\32\3\uffff\1\171\1\170\1"+
+            "\167\1\157\1\160\1\161\1\162\1\163\1\164\1\165\2\uffff\1\154",
+            "\151\103\1\104\1\105\15\103",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -18367,6 +18744,7 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -18379,6 +18757,7 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -18394,6 +18773,7 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -18408,6 +18788,7 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
+            "\1\uffff",
             "\1\uffff"
     };
 
@@ -18447,18 +18828,18 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA48_61 = input.LA(1);
+                        int LA48_25 = input.LA(1);
 
                          
-                        int index48_61 = input.index();
+                        int index48_25 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 102;}
+                        else if ( (true) ) {s = 45;}
 
                          
-                        input.seek(index48_61);
+                        input.seek(index48_25);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
@@ -18477,63 +18858,69 @@
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA48_25 = input.LA(1);
+                        int LA48_3 = input.LA(1);
 
                          
-                        int index48_25 = input.index();
+                        int index48_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 44;}
+                        else if ( (true) ) {s = 10;}
 
                          
-                        input.seek(index48_25);
+                        input.seek(index48_3);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA48_3 = input.LA(1);
+                        int LA48_31 = input.LA(1);
 
                          
-                        int index48_3 = input.index();
+                        int index48_31 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 10;}
+                        else if ( (true) ) {s = 64;}
 
                          
-                        input.seek(index48_3);
+                        input.seek(index48_31);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA48_31 = input.LA(1);
+                        int LA48_50 = input.LA(1);
 
                          
-                        int index48_31 = input.index();
+                        int index48_50 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 62;}
+                        else if ( (true) ) {s = 91;}
 
                          
-                        input.seek(index48_31);
+                        input.seek(index48_50);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA48_49 = input.LA(1);
+                        int LA48_2 = input.LA(1);
 
                          
-                        int index48_49 = input.index();
+                        int index48_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred7()) ) {s = 7;}
+                        if ( (LA48_2==COLON) ) {s = 5;}
 
-                        else if ( (true) ) {s = 87;}
+                        else if ( (LA48_2==LEFT_PAREN) ) {s = 6;}
 
+                        else if ( (LA48_2==ID) && (((synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(!
 DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))))) {s = 7;}
+
+                        else if ( (LA48_2==DOT) ) {s = 8;}
+
+                        else if ( (LA48_2==LEFT_SQUARE) ) {s = 9;}
+
                          
-                        input.seek(index48_49);
+                        input.seek(index48_2);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
@@ -18545,7 +18932,7 @@
                         s = -1;
                         if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 45;}
+                        else if ( (true) ) {s = 46;}
 
                          
                         input.seek(index48_26);
@@ -18558,7 +18945,7 @@
                         int index48_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((synpred7()||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL))))) ) {s = 7;}
+                        if ( ((synpred7()||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EVAL)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.FORALL)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT))))) ) {s = 7;}
 
                         else if ( (true) ) {s = 14;}
 
@@ -18567,24 +18954,18 @@
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA48_2 = input.LA(1);
+                        int LA48_63 = input.LA(1);
 
                          
-                        int index48_2 = input.index();
+                        int index48_63 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA48_2==COLON) ) {s = 5;}
+                        if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (LA48_2==LEFT_PAREN) ) {s = 6;}
+                        else if ( (true) ) {s = 107;}
 
-                        else if ( (LA48_2==ID) && (((synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.NOT)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(!
 DroolsSoftKeywords.EXISTS)))||(synpred7()&&(validateIdentifierKey(DroolsSoftKeywords.EXISTS)))))) {s = 7;}
-
-                        else if ( (LA48_2==DOT) ) {s = 8;}
-
-                        else if ( (LA48_2==LEFT_SQUARE) ) {s = 9;}
-
                          
-                        input.seek(index48_2);
+                        input.seek(index48_63);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
@@ -18596,25 +18977,25 @@
                         s = -1;
                         if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 63;}
+                        else if ( (true) ) {s = 65;}
 
                          
                         input.seek(index48_32);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA48_43 = input.LA(1);
+                        int LA48_44 = input.LA(1);
 
                          
-                        int index48_43 = input.index();
+                        int index48_44 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7()) ) {s = 7;}
 
-                        else if ( (true) ) {s = 75;}
+                        else if ( (true) ) {s = 78;}
 
                          
-                        input.seek(index48_43);
+                        input.seek(index48_44);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -18632,18 +19013,18 @@
     static final String DFA53_minS =
         "\1\126\1\133\2\4\1\0\1\126\1\0\4\uffff";
     static final String DFA53_maxS =
-        "\1\126\1\133\2\172\1\0\1\135\1\0\4\uffff";
+        "\1\126\1\133\2\173\1\0\1\135\1\0\4\uffff";
     static final String DFA53_acceptS =
-        "\7\uffff\1\1\1\2\1\1\1\2";
+        "\7\uffff\1\1\2\2\1\1";
     static final String DFA53_specialS =
-        "\4\uffff\1\2\1\0\1\1\4\uffff}>";
+        "\4\uffff\1\1\1\0\1\2\4\uffff}>";
     static final String[] DFA53_transitionS = {
             "\1\1",
             "\1\2",
-            "\127\3\1\4\1\3\1\5\35\3",
-            "\127\3\1\6\1\3\1\5\35\3",
+            "\127\3\1\4\1\3\1\5\36\3",
+            "\127\3\1\6\1\3\1\5\36\3",
             "\1\uffff",
-            "\1\11\5\uffff\1\11\1\12",
+            "\1\12\5\uffff\1\12\1\11",
             "\1\uffff",
             "",
             "",
@@ -18693,42 +19074,42 @@
                         int index53_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA53_5==ID||LA53_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.INIT)))) {s = 9;}
+                        if ( (LA53_5==RIGHT_PAREN) ) {s = 9;}
 
-                        else if ( (LA53_5==RIGHT_PAREN) ) {s = 10;}
+                        else if ( (LA53_5==ID||LA53_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.INIT)))) {s = 10;}
 
                          
                         input.seek(index53_5);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA53_6 = input.LA(1);
+                        int LA53_4 = input.LA(1);
 
                          
-                        int index53_6 = input.index();
+                        int index53_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.INIT))) ) {s = 9;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.INIT))) ) {s = 7;}
 
-                        else if ( (true) ) {s = 10;}
+                        else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index53_6);
+                        input.seek(index53_4);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA53_4 = input.LA(1);
+                        int LA53_6 = input.LA(1);
 
                          
-                        int index53_4 = input.index();
+                        int index53_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.INIT))) ) {s = 7;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.INIT))) ) {s = 10;}
 
-                        else if ( (true) ) {s = 8;}
+                        else if ( (true) ) {s = 9;}
 
                          
-                        input.seek(index53_4);
+                        input.seek(index53_6);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -18746,18 +19127,18 @@
     static final String DFA57_minS =
         "\1\126\1\133\2\4\1\0\1\126\1\0\4\uffff";
     static final String DFA57_maxS =
-        "\1\126\1\133\2\172\1\0\1\135\1\0\4\uffff";
+        "\1\126\1\133\2\173\1\0\1\135\1\0\4\uffff";
     static final String DFA57_acceptS =
-        "\7\uffff\1\1\2\2\1\1";
+        "\7\uffff\1\1\1\2\1\1\1\2";
     static final String DFA57_specialS =
-        "\1\5\1\6\1\2\1\3\1\1\1\4\1\0\4\uffff}>";
+        "\1\4\1\2\1\1\1\0\1\5\1\6\1\3\4\uffff}>";
     static final String[] DFA57_transitionS = {
             "\1\1",
             "\1\2",
-            "\127\3\1\4\1\3\1\5\35\3",
-            "\127\3\1\6\1\3\1\5\35\3",
+            "\127\3\1\4\1\3\1\5\36\3",
+            "\127\3\1\6\1\3\1\5\36\3",
             "\1\uffff",
-            "\1\12\5\uffff\1\12\1\11",
+            "\1\11\5\uffff\1\11\1\12",
             "\1\uffff",
             "",
             "",
@@ -18801,108 +19182,108 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA57_6 = input.LA(1);
+                        int LA57_3 = input.LA(1);
 
                          
-                        int index57_6 = input.index();
+                        int index57_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 10;}
+                        if ( (LA57_3==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 9;}
+                        else if ( ((LA57_3>=VT_COMPILATION_UNIT && LA57_3<=STRING)||LA57_3==COMMA||(LA57_3>=COLON && LA57_3<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
 
+                        else if ( (LA57_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 6;}
+
                          
-                        input.seek(index57_6);
+                        input.seek(index57_3);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA57_4 = input.LA(1);
+                        int LA57_2 = input.LA(1);
 
                          
-                        int index57_4 = input.index();
+                        int index57_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 7;}
+                        if ( ((LA57_2>=VT_COMPILATION_UNIT && LA57_2<=STRING)||LA57_2==COMMA||(LA57_2>=COLON && LA57_2<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
 
-                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 8;}
+                        else if ( (LA57_2==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 4;}
 
+                        else if ( (LA57_2==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
+
                          
-                        input.seek(index57_4);
+                        input.seek(index57_2);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA57_2 = input.LA(1);
+                        int LA57_1 = input.LA(1);
 
                          
-                        int index57_2 = input.index();
+                        int index57_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( ((LA57_2>=VT_COMPILATION_UNIT && LA57_2<=STRING)||LA57_2==COMMA||(LA57_2>=COLON && LA57_2<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
+                        if ( (LA57_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 2;}
 
-                        else if ( (LA57_2==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 4;}
-
-                        else if ( (LA57_2==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
-
                          
-                        input.seek(index57_2);
+                        input.seek(index57_1);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA57_3 = input.LA(1);
+                        int LA57_6 = input.LA(1);
 
                          
-                        int index57_3 = input.index();
+                        int index57_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA57_3==RIGHT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 5;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 9;}
 
-                        else if ( ((LA57_3>=VT_COMPILATION_UNIT && LA57_3<=STRING)||LA57_3==COMMA||(LA57_3>=COLON && LA57_3<=MULTI_LINE_COMMENT)) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 3;}
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 10;}
 
-                        else if ( (LA57_3==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 6;}
-
                          
-                        input.seek(index57_3);
+                        input.seek(index57_6);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA57_5 = input.LA(1);
+                        int LA57_0 = input.LA(1);
 
                          
-                        int index57_5 = input.index();
+                        int index57_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA57_5==RIGHT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) {s = 9;}
+                        if ( (LA57_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 1;}
 
-                        else if ( (LA57_5==ID||LA57_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) {s = 10;}
-
                          
-                        input.seek(index57_5);
+                        input.seek(index57_0);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA57_0 = input.LA(1);
+                        int LA57_4 = input.LA(1);
 
                          
-                        int index57_0 = input.index();
+                        int index57_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA57_0==ID) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 1;}
+                        if ( ((validateIdentifierKey(DroolsSoftKeywords.REVERSE))) ) {s = 7;}
 
+                        else if ( ((validateIdentifierKey(DroolsSoftKeywords.RESULT))) ) {s = 8;}
+
                          
-                        input.seek(index57_0);
+                        input.seek(index57_4);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA57_1 = input.LA(1);
+                        int LA57_5 = input.LA(1);
 
                          
-                        int index57_1 = input.index();
+                        int index57_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA57_1==LEFT_PAREN) && (((validateIdentifierKey(DroolsSoftKeywords.REVERSE))||(validateIdentifierKey(DroolsSoftKeywords.RESULT))))) {s = 2;}
+                        if ( (LA57_5==ID||LA57_5==COMMA) && ((validateIdentifierKey(DroolsSoftKeywords.REVERSE)))) {s = 9;}
 
+                        else if ( (LA57_5==RIGHT_PAREN) && ((validateIdentifierKey(DroolsSoftKeywords.RESULT)))) {s = 10;}
+
                          
-                        input.seek(index57_1);
+                        input.seek(index57_5);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -18914,58 +19295,60 @@
         }
     }
     static final String DFA74_eotS =
-        "\43\uffff";
+        "\45\uffff";
     static final String DFA74_eofS =
-        "\43\uffff";
+        "\45\uffff";
     static final String DFA74_minS =
-        "\1\134\1\uffff\2\126\6\uffff\1\0\1\126\1\uffff\1\0\1\4\1\0\1\4\1"+
-        "\0\1\4\5\uffff\1\4\12\0";
+        "\1\134\1\uffff\2\126\7\uffff\1\0\1\126\1\uffff\1\0\1\126\2\0\1\4"+
+        "\6\uffff\1\155\1\4\2\0\1\4\7\0";
     static final String DFA74_maxS =
-        "\1\142\1\uffff\1\151\1\154\6\uffff\1\0\1\154\1\uffff\1\0\1\172\1"+
-        "\0\1\172\1\0\1\172\5\uffff\1\172\12\0";
+        "\1\142\1\uffff\1\152\1\155\7\uffff\1\0\1\155\1\uffff\1\0\1\126\2"+
+        "\0\1\173\6\uffff\1\155\1\173\2\0\1\173\7\0";
     static final String DFA74_acceptS =
-        "\1\uffff\1\2\2\uffff\6\1\2\uffff\1\1\6\uffff\5\1\13\uffff";
+        "\1\uffff\1\2\2\uffff\7\1\2\uffff\1\1\5\uffff\6\1\14\uffff";
     static final String DFA74_specialS =
-        "\2\uffff\1\5\1\0\6\uffff\1\6\1\2\1\uffff\1\4\1\uffff\1\3\1\uffff"+
-        "\1\1\21\uffff}>";
+        "\2\uffff\1\7\1\6\7\uffff\1\1\1\2\1\uffff\1\3\1\uffff\1\0\1\4\11"+
+        "\uffff\1\10\1\5\10\uffff}>";
     static final String[] DFA74_transitionS = {
             "\2\1\3\uffff\1\2\1\1",
             "",
-            "\1\3\4\uffff\1\12\10\uffff\1\4\1\5\1\6\1\7\1\10\1\11",
-            "\1\13\1\1\2\uffff\1\14\1\15\2\uffff\1\1\2\14\3\uffff\6\1\2\14"+
-            "\1\16",
+            "\1\3\4\uffff\1\13\10\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12",
+            "\1\14\1\1\2\uffff\1\15\1\16\2\uffff\1\1\2\15\3\uffff\6\1\1\17"+
+            "\2\15\1\1",
             "",
             "",
             "",
             "",
             "",
             "",
+            "",
             "\1\uffff",
-            "\1\17\1\23\2\uffff\1\21\1\20\1\26\1\27\1\uffff\2\21\1\25\1\24"+
-            "\7\uffff\2\21\1\22",
+            "\1\20\1\24\2\uffff\1\21\1\22\1\27\1\30\1\uffff\2\21\1\26\1\25"+
+            "\7\uffff\1\1\2\21\1\23",
             "",
             "\1\uffff",
-            "\150\30\1\31\1\32\15\30",
+            "\1\31",
             "\1\uffff",
-            "\122\36\1\33\3\36\1\34\1\35\1\36\1\37\1\36\2\34\11\36\2\34\17"+
+            "\1\uffff",
+            "\122\36\1\32\3\36\1\35\1\33\1\36\1\34\1\36\2\35\12\36\2\35\17"+
             "\36",
-            "\1\uffff",
-            "\150\40\1\41\1\42\15\40",
             "",
             "",
             "",
             "",
             "",
-            "\150\30\1\31\1\32\15\30",
+            "",
+            "\1\37",
+            "\123\36\1\41\3\36\1\44\1\42\1\43\17\36\1\40\16\36",
             "\1\uffff",
             "\1\uffff",
+            "\127\36\1\44\1\42\1\43\36\36",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\1\uffff",
             "\1\uffff"
     };
 
@@ -19005,101 +19388,133 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA74_3 = input.LA(1);
+                        int LA74_16 = input.LA(1);
 
                          
-                        int index74_3 = input.index();
+                        int index74_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA74_3==DOT||LA74_3==COLON||(LA74_3>=EQUAL && LA74_3<=NOT_EQUAL)) ) {s = 1;}
+                        if ( (synpred11()) ) {s = 24;}
 
-                        else if ( (LA74_3==ID) ) {s = 11;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( (LA74_3==STRING||(LA74_3>=BOOL && LA74_3<=INT)||(LA74_3>=FLOAT && LA74_3<=NULL)) && (synpred11())) {s = 12;}
-
-                        else if ( (LA74_3==LEFT_PAREN) ) {s = 13;}
-
-                        else if ( (LA74_3==LEFT_SQUARE) ) {s = 14;}
-
                          
-                        input.seek(index74_3);
+                        input.seek(index74_16);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA74_17 = input.LA(1);
+                        int LA74_11 = input.LA(1);
 
                          
-                        int index74_17 = input.index();
+                        int index74_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred11()) ) {s = 23;}
+                        if ( (synpred11()) ) {s = 13;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index74_17);
+                        input.seek(index74_11);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA74_11 = input.LA(1);
+                        int LA74_12 = input.LA(1);
 
                          
-                        int index74_11 = input.index();
+                        int index74_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA74_11==ID) ) {s = 15;}
+                        if ( (LA74_12==ID) ) {s = 16;}
 
-                        else if ( (LA74_11==LEFT_PAREN) ) {s = 16;}
+                        else if ( (LA74_12==STRING||(LA74_12>=BOOL && LA74_12<=INT)||(LA74_12>=FLOAT && LA74_12<=NULL)) ) {s = 17;}
 
-                        else if ( (LA74_11==STRING||(LA74_11>=BOOL && LA74_11<=INT)||(LA74_11>=FLOAT && LA74_11<=NULL)) ) {s = 17;}
+                        else if ( (LA74_12==LEFT_PAREN) ) {s = 18;}
 
-                        else if ( (LA74_11==LEFT_SQUARE) ) {s = 18;}
+                        else if ( (LA74_12==LEFT_SQUARE) && (synpred11())) {s = 19;}
 
-                        else if ( (LA74_11==DOT) && (synpred11())) {s = 19;}
+                        else if ( (LA74_12==DOT) && (synpred11())) {s = 20;}
 
-                        else if ( (LA74_11==DOUBLE_AMPER) && (synpred11())) {s = 20;}
+                        else if ( (LA74_12==DOUBLE_AMPER) && (synpred11())) {s = 21;}
 
-                        else if ( (LA74_11==DOUBLE_PIPE) && (synpred11())) {s = 21;}
+                        else if ( (LA74_12==DOUBLE_PIPE) && (synpred11())) {s = 22;}
 
-                        else if ( (LA74_11==COMMA) && (synpred11())) {s = 22;}
+                        else if ( (LA74_12==COMMA) && (synpred11())) {s = 23;}
 
-                        else if ( (LA74_11==RIGHT_PAREN) && (synpred11())) {s = 23;}
+                        else if ( (LA74_12==RIGHT_PAREN) && (synpred11())) {s = 24;}
 
+                        else if ( (LA74_12==GRAVE_ACCENT) ) {s = 1;}
+
                          
-                        input.seek(index74_11);
+                        input.seek(index74_12);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA74_15 = input.LA(1);
+                        int LA74_14 = input.LA(1);
 
                          
-                        int index74_15 = input.index();
+                        int index74_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred11()) ) {s = 23;}
+                        if ( (synpred11()) ) {s = 24;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index74_15);
+                        input.seek(index74_14);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA74_13 = input.LA(1);
+                        int LA74_17 = input.LA(1);
 
                          
-                        int index74_13 = input.index();
+                        int index74_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred11()) ) {s = 23;}
+                        if ( (synpred11()) ) {s = 24;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index74_13);
+                        input.seek(index74_17);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
+                        int LA74_28 = input.LA(1);
+
+                         
+                        int index74_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred11()) ) {s = 24;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index74_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA74_3 = input.LA(1);
+
+                         
+                        int index74_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA74_3==DOT||LA74_3==COLON||(LA74_3>=EQUAL && LA74_3<=NOT_EQUAL)||LA74_3==LEFT_SQUARE) ) {s = 1;}
+
+                        else if ( (LA74_3==ID) ) {s = 12;}
+
+                        else if ( (LA74_3==STRING||(LA74_3>=BOOL && LA74_3<=INT)||(LA74_3>=FLOAT && LA74_3<=NULL)) && (synpred11())) {s = 13;}
+
+                        else if ( (LA74_3==LEFT_PAREN) ) {s = 14;}
+
+                        else if ( (LA74_3==GRAVE_ACCENT) ) {s = 15;}
+
+                         
+                        input.seek(index74_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
                         int LA74_2 = input.LA(1);
 
                          
@@ -19120,25 +19535,27 @@
 
                         else if ( (LA74_2==NOT_EQUAL) && (synpred11())) {s = 9;}
 
-                        else if ( (LA74_2==LEFT_PAREN) ) {s = 10;}
+                        else if ( (LA74_2==GRAVE_ACCENT) && (synpred11())) {s = 10;}
 
+                        else if ( (LA74_2==LEFT_PAREN) ) {s = 11;}
+
                          
                         input.seek(index74_2);
                         if ( s>=0 ) return s;
                         break;
-                    case 6 : 
-                        int LA74_10 = input.LA(1);
+                    case 8 : 
+                        int LA74_27 = input.LA(1);
 
                          
-                        int index74_10 = input.index();
+                        int index74_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred11()) ) {s = 12;}
+                        if ( (synpred11()) ) {s = 24;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index74_10);
+                        input.seek(index74_27);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -19150,42 +19567,45 @@
         }
     }
     static final String DFA75_eotS =
-        "\103\uffff";
+        "\102\uffff";
     static final String DFA75_eofS =
-        "\103\uffff";
+        "\102\uffff";
     static final String DFA75_minS =
-        "\1\134\1\uffff\2\126\6\uffff\2\126\1\4\1\uffff\1\4\1\126\1\0\6\uffff"+
-        "\2\0\2\4\5\uffff\3\4\16\0\1\uffff\21\0";
+        "\1\134\1\uffff\2\126\7\uffff\2\126\1\uffff\1\4\2\126\1\0\7\uffff"+
+        "\2\0\1\4\6\uffff\1\4\2\0\2\4\13\0\1\uffff\17\0";
     static final String DFA75_maxS =
-        "\1\142\1\uffff\1\151\1\154\6\uffff\1\151\1\154\1\172\1\uffff\1\172"+
-        "\1\154\1\0\6\uffff\2\0\2\172\5\uffff\3\172\16\0\1\uffff\21\0";
+        "\1\142\1\uffff\1\152\1\155\7\uffff\1\152\1\155\1\uffff\1\173\1\126"+
+        "\1\155\1\0\7\uffff\2\0\1\173\6\uffff\1\173\2\0\2\173\13\0\1\uffff"+
+        "\17\0";
     static final String DFA75_acceptS =
-        "\1\uffff\1\2\2\uffff\6\1\3\uffff\1\1\3\uffff\6\1\4\uffff\5\1\21"+
-        "\uffff\1\1\21\uffff";
+        "\1\uffff\1\2\2\uffff\7\1\2\uffff\1\1\4\uffff\7\1\3\uffff\6\1\20"+
+        "\uffff\1\1\17\uffff";
     static final String DFA75_specialS =
-        "\2\uffff\1\4\1\6\6\uffff\1\7\1\2\3\uffff\1\5\1\1\6\uffff\1\3\1\0"+
-        "\52\uffff}>";
+        "\2\uffff\1\0\1\5\7\uffff\1\10\1\11\3\uffff\1\4\1\1\7\uffff\1\7\1"+
+        "\2\10\uffff\1\6\1\3\35\uffff}>";
     static final String[] DFA75_transitionS = {
             "\2\1\3\uffff\1\1\1\2",
             "",
-            "\1\3\4\uffff\1\12\10\uffff\1\4\1\5\1\6\1\7\1\10\1\11",
-            "\1\13\1\1\2\uffff\1\15\1\14\2\uffff\1\1\2\15\3\uffff\6\1\2\15"+
-            "\1\16",
+            "\1\3\4\uffff\1\13\10\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12",
+            "\1\14\1\1\2\uffff\1\15\1\16\2\uffff\1\1\2\15\3\uffff\6\1\1\17"+
+            "\2\15\1\1",
             "",
             "",
             "",
             "",
             "",
             "",
-            "\1\17\4\uffff\1\20\10\uffff\1\21\1\22\1\23\1\24\1\25\1\26",
-            "\1\27\1\33\2\uffff\1\30\1\31\1\36\1\37\1\uffff\2\30\1\34\1\35"+
-            "\7\uffff\2\30\1\32",
-            "\122\52\1\40\3\52\1\50\1\47\1\52\1\51\1\52\2\50\3\52\1\41\1"+
-            "\42\1\43\1\44\1\45\1\46\2\50\17\52",
             "",
-            "\150\53\1\54\1\55\15\53",
-            "\1\60\1\1\2\uffff\1\61\1\56\2\uffff\1\1\2\61\3\uffff\6\1\2\61"+
-            "\1\57",
+            "\1\20\4\uffff\1\21\10\uffff\1\22\1\23\1\24\1\25\1\26\1\27\1"+
+            "\30",
+            "\1\31\1\35\2\uffff\1\32\1\33\1\40\1\41\1\uffff\2\32\1\36\1\37"+
+            "\7\uffff\1\1\2\32\1\34",
+            "",
+            "\122\55\1\42\3\55\1\54\1\43\1\55\1\44\1\55\2\54\3\55\1\45\1"+
+            "\46\1\47\1\50\1\51\1\52\1\53\2\54\17\55",
+            "\1\56",
+            "\1\57\1\1\2\uffff\1\62\1\61\2\uffff\1\1\2\62\3\uffff\6\1\1\60"+
+            "\2\62\1\1",
             "\1\uffff",
             "",
             "",
@@ -19193,24 +19613,25 @@
             "",
             "",
             "",
+            "",
             "\1\uffff",
             "\1\uffff",
-            "\122\66\1\62\3\66\1\65\1\63\1\66\1\64\1\66\2\65\11\66\2\65\17"+
-            "\66",
-            "\150\67\1\70\1\71\15\67",
+            "\122\67\1\63\3\67\1\66\1\64\1\67\1\65\1\67\2\66\12\67\2\66\17"+
+            "\67",
             "",
             "",
             "",
             "",
             "",
-            "\122\52\1\76\1\73\2\52\1\77\1\100\1\74\1\75\1\52\2\77\11\52"+
-            "\2\77\1\72\16\52",
-            "\122\52\1\101\3\52\1\77\1\102\1\52\1\51\1\52\2\77\11\52\2\77"+
-            "\17\52",
-            "\122\52\1\101\3\52\1\77\1\102\1\52\1\51\1\52\2\77\11\52\2\77"+
-            "\17\52",
+            "",
+            "\122\55\1\70\1\74\2\55\1\71\1\72\1\75\1\76\1\55\2\71\11\55\1"+
+            "\77\2\71\1\73\16\55",
             "\1\uffff",
             "\1\uffff",
+            "\122\55\1\100\3\55\1\71\1\101\1\55\1\44\1\55\2\71\12\55\2\71"+
+            "\17\55",
+            "\122\55\1\100\3\55\1\71\1\101\1\55\1\44\1\55\2\71\12\55\2\71"+
+            "\17\55",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -19222,7 +19643,6 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\1\uffff",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -19238,8 +19658,6 @@
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
-            "\1\uffff",
-            "\1\uffff",
             "\1\uffff"
     };
 
@@ -19279,173 +19697,209 @@
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA75_24 = input.LA(1);
+                        int LA75_2 = input.LA(1);
 
                          
-                        int index75_24 = input.index();
+                        int index75_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred12()) ) {s = 49;}
+                        if ( (LA75_2==ID) ) {s = 3;}
 
-                        else if ( (true) ) {s = 1;}
+                        else if ( (LA75_2==EQUAL) && (synpred12())) {s = 4;}
 
+                        else if ( (LA75_2==GREATER) && (synpred12())) {s = 5;}
+
+                        else if ( (LA75_2==GREATER_EQUAL) && (synpred12())) {s = 6;}
+
+                        else if ( (LA75_2==LESS) && (synpred12())) {s = 7;}
+
+                        else if ( (LA75_2==LESS_EQUAL) && (synpred12())) {s = 8;}
+
+                        else if ( (LA75_2==NOT_EQUAL) && (synpred12())) {s = 9;}
+
+                        else if ( (LA75_2==GRAVE_ACCENT) && (synpred12())) {s = 10;}
+
+                        else if ( (LA75_2==LEFT_PAREN) ) {s = 11;}
+
                          
-                        input.seek(index75_24);
+                        input.seek(index75_2);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA75_16 = input.LA(1);
+                        int LA75_17 = input.LA(1);
 
                          
-                        int index75_16 = input.index();
+                        int index75_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred12()) ) {s = 49;}
+                        if ( (synpred12()) ) {s = 50;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_16);
+                        input.seek(index75_17);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA75_11 = input.LA(1);
+                        int LA75_26 = input.LA(1);
 
                          
-                        int index75_11 = input.index();
+                        int index75_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA75_11==ID) ) {s = 23;}
+                        if ( (synpred12()) ) {s = 50;}
 
-                        else if ( (LA75_11==STRING||(LA75_11>=BOOL && LA75_11<=INT)||(LA75_11>=FLOAT && LA75_11<=NULL)) ) {s = 24;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( (LA75_11==LEFT_PAREN) ) {s = 25;}
-
-                        else if ( (LA75_11==LEFT_SQUARE) ) {s = 26;}
-
-                        else if ( (LA75_11==DOT) && (synpred12())) {s = 27;}
-
-                        else if ( (LA75_11==DOUBLE_PIPE) && (synpred12())) {s = 28;}
-
-                        else if ( (LA75_11==DOUBLE_AMPER) && (synpred12())) {s = 29;}
-
-                        else if ( (LA75_11==COMMA) && (synpred12())) {s = 30;}
-
-                        else if ( (LA75_11==RIGHT_PAREN) && (synpred12())) {s = 31;}
-
                          
-                        input.seek(index75_11);
+                        input.seek(index75_26);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA75_23 = input.LA(1);
+                        int LA75_36 = input.LA(1);
 
                          
-                        int index75_23 = input.index();
+                        int index75_36 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred12()) ) {s = 49;}
+                        if ( (synpred12()) ) {s = 50;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_23);
+                        input.seek(index75_36);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA75_2 = input.LA(1);
+                        int LA75_16 = input.LA(1);
 
                          
-                        int index75_2 = input.index();
+                        int index75_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA75_2==ID) ) {s = 3;}
+                        if ( (LA75_16==DOT||LA75_16==COLON||(LA75_16>=EQUAL && LA75_16<=NOT_EQUAL)||LA75_16==LEFT_SQUARE) ) {s = 1;}
 
-                        else if ( (LA75_2==EQUAL) && (synpred12())) {s = 4;}
+                        else if ( (LA75_16==ID) ) {s = 47;}
 
-                        else if ( (LA75_2==GREATER) && (synpred12())) {s = 5;}
+                        else if ( (LA75_16==GRAVE_ACCENT) ) {s = 48;}
 
-                        else if ( (LA75_2==GREATER_EQUAL) && (synpred12())) {s = 6;}
+                        else if ( (LA75_16==LEFT_PAREN) ) {s = 49;}
 
-                        else if ( (LA75_2==LESS) && (synpred12())) {s = 7;}
+                        else if ( (LA75_16==STRING||(LA75_16>=BOOL && LA75_16<=INT)||(LA75_16>=FLOAT && LA75_16<=NULL)) && (synpred12())) {s = 50;}
 
-                        else if ( (LA75_2==LESS_EQUAL) && (synpred12())) {s = 8;}
+                         
+                        input.seek(index75_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA75_3 = input.LA(1);
 
-                        else if ( (LA75_2==NOT_EQUAL) && (synpred12())) {s = 9;}
+                         
+                        int index75_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA75_3==DOT||LA75_3==COLON||(LA75_3>=EQUAL && LA75_3<=NOT_EQUAL)||LA75_3==LEFT_SQUARE) ) {s = 1;}
 
-                        else if ( (LA75_2==LEFT_PAREN) ) {s = 10;}
+                        else if ( (LA75_3==ID) ) {s = 12;}
 
+                        else if ( (LA75_3==STRING||(LA75_3>=BOOL && LA75_3<=INT)||(LA75_3>=FLOAT && LA75_3<=NULL)) && (synpred12())) {s = 13;}
+
+                        else if ( (LA75_3==LEFT_PAREN) ) {s = 14;}
+
+                        else if ( (LA75_3==GRAVE_ACCENT) ) {s = 15;}
+
                          
-                        input.seek(index75_2);
+                        input.seek(index75_3);
                         if ( s>=0 ) return s;
                         break;
-                    case 5 : 
-                        int LA75_15 = input.LA(1);
+                    case 6 : 
+                        int LA75_35 = input.LA(1);
 
                          
-                        int index75_15 = input.index();
+                        int index75_35 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA75_15==DOT||LA75_15==COLON||(LA75_15>=EQUAL && LA75_15<=NOT_EQUAL)) ) {s = 1;}
+                        if ( (synpred12()) ) {s = 50;}
 
-                        else if ( (LA75_15==LEFT_PAREN) ) {s = 46;}
+                        else if ( (true) ) {s = 1;}
 
-                        else if ( (LA75_15==LEFT_SQUARE) ) {s = 47;}
+                         
+                        input.seek(index75_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA75_25 = input.LA(1);
 
-                        else if ( (LA75_15==ID) ) {s = 48;}
+                         
+                        int index75_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred12()) ) {s = 50;}
 
-                        else if ( (LA75_15==STRING||(LA75_15>=BOOL && LA75_15<=INT)||(LA75_15>=FLOAT && LA75_15<=NULL)) && (synpred12())) {s = 49;}
+                        else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_15);
+                        input.seek(index75_25);
                         if ( s>=0 ) return s;
                         break;
-                    case 6 : 
-                        int LA75_3 = input.LA(1);
+                    case 8 : 
+                        int LA75_11 = input.LA(1);
 
                          
-                        int index75_3 = input.index();
+                        int index75_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA75_3==DOT||LA75_3==COLON||(LA75_3>=EQUAL && LA75_3<=NOT_EQUAL)) ) {s = 1;}
+                        if ( (LA75_11==ID) ) {s = 16;}
 
-                        else if ( (LA75_3==ID) ) {s = 11;}
+                        else if ( (LA75_11==LEFT_PAREN) ) {s = 17;}
 
-                        else if ( (LA75_3==LEFT_PAREN) ) {s = 12;}
+                        else if ( (LA75_11==EQUAL) && (synpred12())) {s = 18;}
 
-                        else if ( (LA75_3==STRING||(LA75_3>=BOOL && LA75_3<=INT)||(LA75_3>=FLOAT && LA75_3<=NULL)) && (synpred12())) {s = 13;}
+                        else if ( (LA75_11==GREATER) && (synpred12())) {s = 19;}
 
-                        else if ( (LA75_3==LEFT_SQUARE) ) {s = 14;}
+                        else if ( (LA75_11==GREATER_EQUAL) && (synpred12())) {s = 20;}
 
+                        else if ( (LA75_11==LESS) && (synpred12())) {s = 21;}
+
+                        else if ( (LA75_11==LESS_EQUAL) && (synpred12())) {s = 22;}
+
+                        else if ( (LA75_11==NOT_EQUAL) && (synpred12())) {s = 23;}
+
+                        else if ( (LA75_11==GRAVE_ACCENT) && (synpred12())) {s = 24;}
+
                          
-                        input.seek(index75_3);
+                        input.seek(index75_11);
                         if ( s>=0 ) return s;
                         break;
-                    case 7 : 
-                        int LA75_10 = input.LA(1);
+                    case 9 : 
+                        int LA75_12 = input.LA(1);
 
                          
-                        int index75_10 = input.index();
+                        int index75_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA75_10==ID) ) {s = 15;}
+                        if ( (LA75_12==ID) ) {s = 25;}
 
-                        else if ( (LA75_10==LEFT_PAREN) ) {s = 16;}
+                        else if ( (LA75_12==STRING||(LA75_12>=BOOL && LA75_12<=INT)||(LA75_12>=FLOAT && LA75_12<=NULL)) ) {s = 26;}
 
-                        else if ( (LA75_10==EQUAL) && (synpred12())) {s = 17;}
+                        else if ( (LA75_12==LEFT_PAREN) ) {s = 27;}
 
-                        else if ( (LA75_10==GREATER) && (synpred12())) {s = 18;}
+                        else if ( (LA75_12==GRAVE_ACCENT) ) {s = 1;}
 
-                        else if ( (LA75_10==GREATER_EQUAL) && (synpred12())) {s = 19;}
+                        else if ( (LA75_12==LEFT_SQUARE) && (synpred12())) {s = 28;}
 
-                        else if ( (LA75_10==LESS) && (synpred12())) {s = 20;}
+                        else if ( (LA75_12==DOT) && (synpred12())) {s = 29;}
 
-                        else if ( (LA75_10==LESS_EQUAL) && (synpred12())) {s = 21;}
+                        else if ( (LA75_12==DOUBLE_PIPE) && (synpred12())) {s = 30;}
 
-                        else if ( (LA75_10==NOT_EQUAL) && (synpred12())) {s = 22;}
+                        else if ( (LA75_12==DOUBLE_AMPER) && (synpred12())) {s = 31;}
 
+                        else if ( (LA75_12==COMMA) && (synpred12())) {s = 32;}
+
+                        else if ( (LA75_12==RIGHT_PAREN) && (synpred12())) {s = 33;}
+
                          
-                        input.seek(index75_10);
+                        input.seek(index75_12);
                         if ( s>=0 ) return s;
                         break;
             }
@@ -19494,7 +19948,7 @@
     public static final BitSet FOLLOW_function_key_in_function704 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_data_type_in_function706 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_function_id_in_function709 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_parameters_in_function711 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_parameters_in_function711 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
     public static final BitSet FOLLOW_curly_chunk_in_function713 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ID_in_function_id743 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_query_key_in_query761 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
@@ -19512,8 +19966,8 @@
     public static final BitSet FOLLOW_RIGHT_PAREN_in_parameters854 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_data_type_in_param_definition878 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_argument_in_param_definition881 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument892 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument894 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_argument892 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument894 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
     public static final BitSet FOLLOW_template_key_in_template907 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
     public static final BitSet FOLLOW_template_id_in_template909 = new BitSet(new long[]{0x0000000000000000L,0x0000000000600000L});
     public static final BitSet FOLLOW_SEMICOLON_in_template911 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
@@ -19527,9 +19981,9 @@
     public static final BitSet FOLLOW_SEMICOLON_in_template_slot987 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ID_in_slot_id1012 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_rule_key_in_rule1030 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
-    public static final BitSet FOLLOW_rule_id_in_rule1032 = new BitSet(new long[]{0x0000000000000000L,0x0000400000400000L});
-    public static final BitSet FOLLOW_rule_attributes_in_rule1034 = new BitSet(new long[]{0x0000000000000000L,0x0000400000400000L});
-    public static final BitSet FOLLOW_when_part_in_rule1037 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_rule_id_in_rule1032 = new BitSet(new long[]{0x0000000000000000L,0x0000800000400000L});
+    public static final BitSet FOLLOW_rule_attributes_in_rule1034 = new BitSet(new long[]{0x0000000000000000L,0x0000800000400000L});
+    public static final BitSet FOLLOW_when_part_in_rule1037 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
     public static final BitSet FOLLOW_rhs_chunk_in_rule1040 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_when_key_in_when_part1069 = new BitSet(new long[]{0x0000000000000002L,0x0000000048400000L});
     public static final BitSet FOLLOW_COLON_in_when_part1071 = new BitSet(new long[]{0x0000000000000002L,0x0000000008400000L});
@@ -19661,7 +20115,7 @@
     public static final BitSet FOLLOW_paren_chunk_in_from_source2372 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
     public static final BitSet FOLLOW_expression_chain_in_from_source2379 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_DOT_in_expression_chain2411 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_expression_chain2413 = new BitSet(new long[]{0x0000000000000002L,0x0000100008800000L});
+    public static final BitSet FOLLOW_ID_in_expression_chain2413 = new BitSet(new long[]{0x0000000000000002L,0x0000200008800000L});
     public static final BitSet FOLLOW_square_chunk_in_expression_chain2433 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
     public static final BitSet FOLLOW_paren_chunk_in_expression_chain2455 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
     public static final BitSet FOLLOW_expression_chain_in_expression_chain2466 = new BitSet(new long[]{0x0000000000000002L});
@@ -19697,155 +20151,159 @@
     public static final BitSet FOLLOW_or_constr_in_unary_constr2770 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
     public static final BitSet FOLLOW_RIGHT_PAREN_in_unary_constr2772 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_label_in_field_constraint2786 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint2788 = new BitSet(new long[]{0x0000000000000002L,0x000003F808400000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint2788 = new BitSet(new long[]{0x0000000000000002L,0x000007F808400000L});
     public static final BitSet FOLLOW_or_restr_connective_in_field_constraint2792 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ARROW_in_field_constraint2798 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
     public static final BitSet FOLLOW_paren_chunk_in_field_constraint2800 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_field_constraint2854 = new BitSet(new long[]{0x0000000000000000L,0x000003F008400000L});
+    public static final BitSet FOLLOW_accessor_path_in_field_constraint2854 = new BitSet(new long[]{0x0000000000000000L,0x000007F008400000L});
     public static final BitSet FOLLOW_or_restr_connective_in_field_constraint2856 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_ID_in_label2880 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
     public static final BitSet FOLLOW_COLON_in_label2882 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective2898 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
-    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective2906 = new BitSet(new long[]{0x0000000000000000L,0x000003F008400000L});
+    public static final BitSet FOLLOW_DOUBLE_PIPE_in_or_restr_connective2906 = new BitSet(new long[]{0x0000000000000000L,0x000007F008400000L});
     public static final BitSet FOLLOW_and_restr_connective_in_or_restr_connective2909 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
     public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective2924 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
-    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective2932 = new BitSet(new long[]{0x0000000000000000L,0x000003F008400000L});
+    public static final BitSet FOLLOW_DOUBLE_AMPER_in_and_restr_connective2932 = new BitSet(new long[]{0x0000000000000000L,0x000007F008400000L});
     public static final BitSet FOLLOW_constraint_expression_in_and_restr_connective2935 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
     public static final BitSet FOLLOW_compound_operator_in_constraint_expression2957 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_simple_operator_in_constraint_expression2962 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression2967 = new BitSet(new long[]{0x0000000000000000L,0x000003F008400000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_constraint_expression2967 = new BitSet(new long[]{0x0000000000000000L,0x000007F008400000L});
     public static final BitSet FOLLOW_or_restr_connective_in_constraint_expression2970 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
     public static final BitSet FOLLOW_RIGHT_PAREN_in_constraint_expression2972 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_EQUAL_in_simple_operator2984 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_GREATER_in_simple_operator2990 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator2996 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_LESS_in_simple_operator3002 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator3008 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator3014 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_not_key_in_simple_operator3020 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator3023 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator3026 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator3029 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator3032 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator3035 = new BitSet(new long[]{0x0000000000000000L,0x00001C018C400000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator3038 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_contains_key_in_simple_operator3045 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_excludes_key_in_simple_operator3051 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_matches_key_in_simple_operator3057 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_soundslike_key_in_simple_operator3063 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_memberof_key_in_simple_operator3069 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_ID_in_simple_operator3075 = new BitSet(new long[]{0x0000000000000000L,0x00001C018C400000L});
-    public static final BitSet FOLLOW_square_chunk_in_simple_operator3078 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_expression_value_in_simple_operator3083 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator3098 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_not_key_in_compound_operator3103 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_in_key_in_compound_operator3105 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator3110 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator3113 = new BitSet(new long[]{0x0000000000000000L,0x0000000030000000L});
-    public static final BitSet FOLLOW_COMMA_in_compound_operator3117 = new BitSet(new long[]{0x0000000000000000L,0x00000C018C400000L});
-    public static final BitSet FOLLOW_expression_value_in_compound_operator3120 = new BitSet(new long[]{0x0000000000000000L,0x0000000030000000L});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator3125 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_path_in_expression_value3136 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_literal_constraint_in_expression_value3141 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_in_expression_value3147 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_EQUAL_in_simple_operator2984 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_GREATER_in_simple_operator2990 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_GREATER_EQUAL_in_simple_operator2996 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_LESS_in_simple_operator3002 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_LESS_EQUAL_in_simple_operator3008 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_NOT_EQUAL_in_simple_operator3014 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_not_key_in_simple_operator3020 = new BitSet(new long[]{0x0000000000000000L,0x0000040000400000L});
+    public static final BitSet FOLLOW_contains_key_in_simple_operator3023 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_soundslike_key_in_simple_operator3026 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_matches_key_in_simple_operator3029 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_memberof_key_in_simple_operator3032 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator3036 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_GRAVE_ACCENT_in_simple_operator3041 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator3044 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator3047 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_contains_key_in_simple_operator3053 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_excludes_key_in_simple_operator3059 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_matches_key_in_simple_operator3065 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_soundslike_key_in_simple_operator3071 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_memberof_key_in_simple_operator3077 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator3083 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_GRAVE_ACCENT_in_simple_operator3089 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_simple_operator3092 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_simple_operator3095 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_expression_value_in_simple_operator3099 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator3114 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_not_key_in_compound_operator3119 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_in_key_in_compound_operator3121 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_compound_operator3126 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator3129 = new BitSet(new long[]{0x0000000000000000L,0x0000000030000000L});
+    public static final BitSet FOLLOW_COMMA_in_compound_operator3133 = new BitSet(new long[]{0x0000000000000000L,0x000018018C400000L});
+    public static final BitSet FOLLOW_expression_value_in_compound_operator3136 = new BitSet(new long[]{0x0000000000000000L,0x0000000030000000L});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_compound_operator3141 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_path_in_expression_value3152 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_literal_constraint_in_expression_value3157 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_in_expression_value3163 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_set_in_literal_constraint0 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_pattern_type3189 = new BitSet(new long[]{0x0000000000000002L,0x0000100000800000L});
-    public static final BitSet FOLLOW_DOT_in_pattern_type3193 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_pattern_type3195 = new BitSet(new long[]{0x0000000000000002L,0x0000100000800000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type3200 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_ID_in_data_type3226 = new BitSet(new long[]{0x0000000000000002L,0x0000100000800000L});
-    public static final BitSet FOLLOW_DOT_in_data_type3230 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_data_type3232 = new BitSet(new long[]{0x0000000000000002L,0x0000100000800000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type3237 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition3263 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition3265 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path3276 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-    public static final BitSet FOLLOW_DOT_in_accessor_path3280 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_accessor_element_in_accessor_path3282 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
-    public static final BitSet FOLLOW_ID_in_accessor_element3306 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_square_chunk_in_accessor_element3308 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk3337 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data3356 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_rhs_chunk_data3360 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_END_in_rhs_chunk_data3366 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
-    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data3368 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk3385 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data3404 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_curly_chunk_data3407 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data3421 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data3426 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk3442 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data3462 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_paren_chunk_data3465 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data3479 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data3484 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk3501 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data3520 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_set_in_square_chunk_data3523 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data3537 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x07FFFFFFFFFFFFFFL});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data3542 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key3561 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_effective_key3563 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_date_effective_key3565 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key3591 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_date_expires_key3593 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_date_expires_key3595 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key3621 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key3623 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key3625 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_lock_on_active_key3627 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_lock_on_active_key3629 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key3655 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_no_loop_key3657 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_no_loop_key3659 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key3685 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_auto_focus_key3687 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_auto_focus_key3689 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key3715 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_activation_group_key3717 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_activation_group_key3719 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key3745 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_agenda_group_key3747 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_agenda_group_key3749 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key3775 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key3777 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_ruleflow_group_key3779 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_duration_key3804 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_package_key3826 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_import_key3848 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_dialect_key3870 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_salience_key3892 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_enabled_key3914 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_attributes_key3936 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_when_key3958 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_rule_key3980 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_template_key4002 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_query_key4024 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_declare_key4046 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_function_key4068 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_global_key4090 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_eval_key4112 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_contains_key4134 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_matches_key4156 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_excludes_key4178 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_soundslike_key4200 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_memberof_key4222 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_not_key4244 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_in_key4266 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_or_key4288 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_and_key4310 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_exists_key4332 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_forall_key4354 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_from_key4376 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key4399 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
-    public static final BitSet FOLLOW_MISC_in_entry_point_key4401 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_ID_in_entry_point_key4403 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_accumulate_key4428 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_init_key4450 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_action_key4472 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_reverse_key4494 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_result_key4516 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_collect_key4538 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_pattern_type3205 = new BitSet(new long[]{0x0000000000000002L,0x0000200000800000L});
+    public static final BitSet FOLLOW_DOT_in_pattern_type3209 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type3211 = new BitSet(new long[]{0x0000000000000002L,0x0000200000800000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type3216 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type3242 = new BitSet(new long[]{0x0000000000000002L,0x0000200000800000L});
+    public static final BitSet FOLLOW_DOT_in_data_type3246 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_data_type3248 = new BitSet(new long[]{0x0000000000000002L,0x0000200000800000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type3253 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition3279 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition3281 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path3292 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+    public static final BitSet FOLLOW_DOT_in_accessor_path3296 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_accessor_element_in_accessor_path3298 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+    public static final BitSet FOLLOW_ID_in_accessor_element3322 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_square_chunk_in_accessor_element3324 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_rhs_chunk_data_in_rhs_chunk3353 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_THEN_in_rhs_chunk_data3372 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_rhs_chunk_data3376 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_END_in_rhs_chunk_data3382 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+    public static final BitSet FOLLOW_SEMICOLON_in_rhs_chunk_data3384 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk3401 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_CURLY_in_curly_chunk_data3420 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_curly_chunk_data3423 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_curly_chunk_data_in_curly_chunk_data3437 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_CURLY_in_curly_chunk_data3442 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk3458 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_PAREN_in_paren_chunk_data3478 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_paren_chunk_data3481 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_paren_chunk_data_in_paren_chunk_data3495 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_PAREN_in_paren_chunk_data3500 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk3517 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_square_chunk_data3536 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_set_in_square_chunk_data3539 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_square_chunk_data_in_square_chunk_data3553 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0FFFFFFFFFFFFFFFL});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_square_chunk_data3558 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key3577 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_effective_key3579 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_date_effective_key3581 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key3607 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_date_expires_key3609 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_date_expires_key3611 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key3637 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key3639 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key3641 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_lock_on_active_key3643 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_lock_on_active_key3645 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key3671 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_no_loop_key3673 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_no_loop_key3675 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key3701 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_auto_focus_key3703 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_auto_focus_key3705 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key3731 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_activation_group_key3733 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_activation_group_key3735 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key3761 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_agenda_group_key3763 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_agenda_group_key3765 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key3791 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_ruleflow_group_key3793 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_ruleflow_group_key3795 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_duration_key3820 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_package_key3842 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_import_key3864 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_dialect_key3886 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_salience_key3908 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_enabled_key3930 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_attributes_key3952 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_when_key3974 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_rule_key3996 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_template_key4018 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_query_key4040 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_declare_key4062 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_function_key4084 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_global_key4106 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_eval_key4128 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_contains_key4150 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_matches_key4172 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_excludes_key4194 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_soundslike_key4216 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_memberof_key4238 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_not_key4260 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_in_key4282 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_or_key4304 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_and_key4326 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_exists_key4348 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_forall_key4370 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_from_key4392 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key4415 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+    public static final BitSet FOLLOW_MISC_in_entry_point_key4417 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_ID_in_entry_point_key4419 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_accumulate_key4444 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_init_key4466 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_action_key4488 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_reverse_key4510 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_result_key4532 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_ID_in_collect_key4554 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_LEFT_PAREN_in_synpred11491 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_or_key_in_synpred11493 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_or_key_in_synpred21540 = new BitSet(new long[]{0x0000000000000002L});

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-06-05 16:54:38 UTC (rev 20341)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/java/org/drools/lang/DescrBuilderTree.java	2008-06-05 17:09:22 UTC (rev 20342)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-06-03 17:01:56
+// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/DescrBuilderTree.g 2008-06-05 13:52:43
 
 	package org.drools.lang;
 
@@ -33,7 +33,7 @@
 
 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_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_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_WHEN", "VK_RULE",!
  "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_FROM", "VK_ACCUMULATE", "VK_INIT", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_COLLECT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "COLON", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "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", "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_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_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_WHEN", "VK_RULE",!
  "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_FROM", "VK_ACCUMULATE", "VK_INIT", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_COLLECT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "COLON", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "GRAVE_ACCENT", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
     public static final int COMMA=92;
     public static final int VT_PATTERN_TYPE=37;
@@ -41,25 +41,25 @@
     public static final int VK_DIALECT=52;
     public static final int VK_FUNCTION=63;
     public static final int END=89;
-    public static final int HexDigit=117;
+    public static final int HexDigit=118;
     public static final int VK_ATTRIBUTES=55;
     public static final int VT_EXPRESSION_CHAIN=28;
     public static final int VK_ACCUMULATE=79;
-    public static final int MISC=113;
+    public static final int MISC=114;
     public static final int VT_AND_PREFIX=21;
     public static final int VK_QUERY=61;
-    public static final int THEN=110;
+    public static final int THEN=111;
     public static final int VK_AUTO_FOCUS=47;
     public static final int DOT=87;
     public static final int VK_IMPORT=58;
     public static final int VT_SLOT=14;
     public static final int VT_PACKAGE_ID=38;
-    public static final int LEFT_SQUARE=108;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=120;
+    public static final int LEFT_SQUARE=109;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=121;
     public static final int VT_DATA_TYPE=36;
     public static final int VK_MATCHES=67;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=111;
+    public static final int LEFT_CURLY=112;
     public static final int LEFT_PAREN=91;
     public static final int DOUBLE_AMPER=98;
     public static final int VT_QUERY_ID=9;
@@ -69,13 +69,14 @@
     public static final int VK_SOUNDSLIKE=69;
     public static final int VK_SALIENCE=53;
     public static final int VT_FIELD=33;
-    public static final int WS=115;
+    public static final int WS=116;
     public static final int STRING=90;
     public static final int VK_AND=75;
     public static final int VT_ACCESSOR_ELEMENT=35;
     public static final int VK_GLOBAL=64;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=25;
     public static final int VK_REVERSE=82;
+    public static final int GRAVE_ACCENT=106;
     public static final int VK_DURATION=51;
     public static final int VT_SQUARE_CHUNK=18;
     public static final int VK_FORALL=77;
@@ -83,7 +84,7 @@
     public static final int VT_PAREN_CHUNK=19;
     public static final int VK_ENABLED=54;
     public static final int VK_RESULT=83;
-    public static final int UnicodeEscape=118;
+    public static final int UnicodeEscape=119;
     public static final int VK_PACKAGE=59;
     public static final int VT_RULE_ID=11;
     public static final int EQUAL=100;
@@ -91,17 +92,17 @@
     public static final int SEMICOLON=85;
     public static final int VK_TEMPLATE=60;
     public static final int VT_AND_IMPLICIT=20;
-    public static final int NULL=107;
+    public static final int NULL=108;
     public static final int COLON=94;
-    public static final int MULTI_LINE_COMMENT=122;
+    public static final int MULTI_LINE_COMMENT=123;
     public static final int VT_RULE_ATTRIBUTES=15;
-    public static final int RIGHT_SQUARE=109;
+    public static final int RIGHT_SQUARE=110;
     public static final int VK_AGENDA_GROUP=49;
     public static final int VT_FACT_OR=31;
     public static final int VK_NOT=72;
     public static final int VK_DATE_EXPIRES=44;
     public static final int ARROW=99;
-    public static final int FLOAT=106;
+    public static final int FLOAT=107;
     public static final int VT_SLOT_ID=13;
     public static final int VT_CURLY_CHUNK=17;
     public static final int VT_OR_PREFIX=22;
@@ -109,7 +110,7 @@
     public static final int LESS=103;
     public static final int VT_PATTERN=29;
     public static final int VK_DATE_EFFECTIVE=43;
-    public static final int EscapeSequence=116;
+    public static final int EscapeSequence=117;
     public static final int VK_EXISTS=76;
     public static final int INT=96;
     public static final int VT_BIND_FIELD=32;
@@ -120,11 +121,11 @@
     public static final int VT_FACT_BINDING=30;
     public static final int ID=86;
     public static final int NOT_EQUAL=105;
-    public static final int RIGHT_CURLY=112;
+    public static final int RIGHT_CURLY=113;
     public static final int VK_ENTRY_POINT=71;
     public static final int VT_AND_INFIX=23;
+    public static final int VT_PARAM_LIST=42;
     public static final int BOOL=95;
-    public static final int VT_PARAM_LIST=42;
     public static final int VT_FROM_SOURCE=27;
     public static final int VK_CONTAINS=66;
     public static final int VK_LOCK_ON_ACTIVE=45;
@@ -144,17 +145,17 @@
     public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
     public static final int VT_IMPORT_ID=39;
-    public static final int EOL=114;
+    public static final int EOL=115;
     public static final int VK_INIT=80;
     public static final int VK_ACTIVATION_GROUP=48;
-    public static final int OctalEscape=119;
+    public static final int OctalEscape=120;
     public static final int VK_ACTION=81;
     public static final int VK_FROM=78;
     public static final int VK_EXCLUDES=68;
     public static final int RIGHT_PAREN=93;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=62;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=121;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=122;
 
         public DescrBuilderTree(TreeNodeStream input) {
             super(input);
@@ -3016,7 +3017,7 @@
                         int alt35=2;
                         int LA35_0 = input.LA(1);
 
-                        if ( (LA35_0==VT_FACT||LA35_0==VT_PAREN_CHUNK||(LA35_0>=VT_FACT_BINDING && LA35_0<=VT_ACCESSOR_PATH)||(LA35_0>=VK_EVAL && LA35_0<=VK_MEMBEROF)||LA35_0==VK_IN||LA35_0==ID||LA35_0==STRING||(LA35_0>=BOOL && LA35_0<=DOUBLE_AMPER)||(LA35_0>=EQUAL && LA35_0<=NULL)) ) {
+                        if ( (LA35_0==VT_FACT||LA35_0==VT_PAREN_CHUNK||(LA35_0>=VT_FACT_BINDING && LA35_0<=VT_ACCESSOR_PATH)||(LA35_0>=VK_EVAL && LA35_0<=VK_MEMBEROF)||LA35_0==VK_IN||LA35_0==ID||LA35_0==STRING||(LA35_0>=BOOL && LA35_0<=DOUBLE_AMPER)||(LA35_0>=EQUAL && LA35_0<=NOT_EQUAL)||(LA35_0>=FLOAT && LA35_0<=NULL)) ) {
                             alt35=1;
                         }
 
@@ -3098,7 +3099,7 @@
                     int alt36=2;
                     int LA36_0 = input.LA(1);
 
-                    if ( (LA36_0==VT_FACT||LA36_0==VT_PAREN_CHUNK||(LA36_0>=VT_FACT_BINDING && LA36_0<=VT_ACCESSOR_PATH)||(LA36_0>=VK_EVAL && LA36_0<=VK_MEMBEROF)||LA36_0==VK_IN||LA36_0==ID||LA36_0==STRING||(LA36_0>=BOOL && LA36_0<=DOUBLE_AMPER)||(LA36_0>=EQUAL && LA36_0<=NULL)) ) {
+                    if ( (LA36_0==VT_FACT||LA36_0==VT_PAREN_CHUNK||(LA36_0>=VT_FACT_BINDING && LA36_0<=VT_ACCESSOR_PATH)||(LA36_0>=VK_EVAL && LA36_0<=VK_MEMBEROF)||LA36_0==VK_IN||LA36_0==ID||LA36_0==STRING||(LA36_0>=BOOL && LA36_0<=DOUBLE_AMPER)||(LA36_0>=EQUAL && LA36_0<=NOT_EQUAL)||(LA36_0>=FLOAT && LA36_0<=NULL)) ) {
                         alt36=1;
                     }
                     switch (alt36) {
@@ -3526,7 +3527,7 @@
                         int alt45=2;
                         int LA45_0 = input.LA(1);
 
-                        if ( (LA45_0==VT_FACT||LA45_0==VT_PAREN_CHUNK||(LA45_0>=VT_FACT_BINDING && LA45_0<=VT_ACCESSOR_PATH)||(LA45_0>=VK_EVAL && LA45_0<=VK_MEMBEROF)||LA45_0==VK_IN||LA45_0==ID||LA45_0==STRING||(LA45_0>=BOOL && LA45_0<=DOUBLE_AMPER)||(LA45_0>=EQUAL && LA45_0<=NULL)) ) {
+                        if ( (LA45_0==VT_FACT||LA45_0==VT_PAREN_CHUNK||(LA45_0>=VT_FACT_BINDING && LA45_0<=VT_ACCESSOR_PATH)||(LA45_0>=VK_EVAL && LA45_0<=VK_MEMBEROF)||LA45_0==VK_IN||LA45_0==ID||LA45_0==STRING||(LA45_0>=BOOL && LA45_0<=DOUBLE_AMPER)||(LA45_0>=EQUAL && LA45_0<=NOT_EQUAL)||(LA45_0>=FLOAT && LA45_0<=NULL)) ) {
                             alt45=1;
                         }
 
@@ -4105,9 +4106,9 @@
     public static final BitSet FOLLOW_param_definition_in_parameters581 = new BitSet(new long[]{0x0000001000000008L,0x0000000000400000L});
     public static final BitSet FOLLOW_data_type_in_param_definition603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_argument_in_param_definition608 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument628 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument631 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument635 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_argument628 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_argument631 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_argument635 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
     public static final BitSet FOLLOW_VK_SALIENCE_in_rule_attribute659 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_INT_in_rule_attribute664 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_rule_attribute668 = new BitSet(new long[]{0x0000000000000008L});
@@ -4192,19 +4193,19 @@
     public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern1386 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_lhs_pattern1390 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_in_fact_expression1413 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression1417 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1422 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression1417 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1422 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression1436 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1440 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1440 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1444 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression1456 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1460 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1460 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1464 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1475 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_field_element_in_fact_expression1479 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_field_element_in_fact_expression1479 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1483 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1494 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1498 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1498 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1502 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EVAL_in_fact_expression1513 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1517 = new BitSet(new long[]{0x0000000000000008L});
@@ -4221,32 +4222,32 @@
     public static final BitSet FOLLOW_LESS_EQUAL_in_fact_expression1610 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1614 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_CONTAINS_in_fact_expression1626 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1630 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1630 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1635 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EXCLUDES_in_fact_expression1647 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1651 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1651 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1656 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_MATCHES_in_fact_expression1668 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1672 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1672 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1677 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_SOUNDSLIKE_in_fact_expression1689 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1693 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1693 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1698 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_MEMBEROF_in_fact_expression1710 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1714 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1714 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1719 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_fact_expression1731 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1735 = new BitSet(new long[]{0x00000007C00C0040L,0x00000FF78440027EL});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1740 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1735 = new BitSet(new long[]{0x00000007C00C0040L,0x00001BF78440027EL});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression1740 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1745 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_IN_in_fact_expression1756 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1760 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1766 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression1760 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1766 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression1781 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1785 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1785 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1789 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression1799 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1803 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1803 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1807 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1818 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_accessor_element_in_fact_expression1823 = new BitSet(new long[]{0x0000000800000008L});
@@ -4262,12 +4263,12 @@
     public static final BitSet FOLLOW_ID_in_accessor_element1943 = new BitSet(new long[]{0x0000000000040008L});
     public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_accessor_element1947 = new BitSet(new long[]{0x0000000000040008L});
     public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type1968 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type1972 = new BitSet(new long[]{0x0000000000000008L,0x0000100000400000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type1976 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type1980 = new BitSet(new long[]{0x0000000000000008L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type1972 = new BitSet(new long[]{0x0000000000000008L,0x0000200000400000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_pattern_type1976 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_pattern_type1980 = new BitSet(new long[]{0x0000000000000008L,0x0000200000000000L});
     public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type2002 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type2006 = new BitSet(new long[]{0x0000000000000008L,0x0000100000400000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2010 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
-    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2014 = new BitSet(new long[]{0x0000000000000008L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type2006 = new BitSet(new long[]{0x0000000000000008L,0x0000200000400000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_data_type2010 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_RIGHT_SQUARE_in_data_type2014 = new BitSet(new long[]{0x0000000000000008L,0x0000200000000000L});
 
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DRL.g
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2008-06-05 16:54:38 UTC (rev 20341)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/main/resources/org/drools/lang/DRL.g	2008-06-05 17:09:22 UTC (rev 20342)
@@ -693,13 +693,14 @@
 	|	LESS^
 	|	LESS_EQUAL^
 	|	NOT_EQUAL^
-	|	not_key (contains_key^|soundslike_key^|matches_key^|memberof_key^|ID^ square_chunk?)
+	|	not_key (contains_key^|soundslike_key^|matches_key^|memberof_key^| ID^ | GRAVE_ACCENT! ID^ square_chunk)
 	|	contains_key^
 	|	excludes_key^
 	|	matches_key^
 	|	soundslike_key^
 	|	memberof_key^
-	|	ID^ square_chunk?)
+	|	ID^
+	|	GRAVE_ACCENT! ID^ square_chunk)
 	expression_value
 	;
 
@@ -1054,6 +1055,10 @@
 END	:	'end'
 	;
 
+GRAVE_ACCENT
+	:	'`'
+	;
+
 SEMICOLON
 	:	';'
 	;

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2008-06-05 16:54:38 UTC (rev 20341)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/java/org/drools/lang/Tree2TestDRL.java	2008-06-05 17:09:22 UTC (rev 20342)
@@ -1,4 +1,4 @@
-// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g 2008-05-19 18:02:46
+// $ANTLR 3.0.1 /Users/porcelli/Documents/dev/drools/drools-compiler/src/main/resources/org/drools/lang/Tree2TestDRL.g 2008-06-05 13:52:46
 
 	package org.drools.lang;
 
@@ -10,7 +10,7 @@
 
 public class Tree2TestDRL 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_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_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_WHEN", "VK_RULE",!
  "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_FROM", "VK_ACCUMULATE", "VK_INIT", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_COLLECT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "COLON", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "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", "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_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_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_WHEN", "VK_RULE",!
  "VK_IMPORT", "VK_PACKAGE", "VK_TEMPLATE", "VK_QUERY", "VK_DECLARE", "VK_FUNCTION", "VK_GLOBAL", "VK_EVAL", "VK_CONTAINS", "VK_MATCHES", "VK_EXCLUDES", "VK_SOUNDSLIKE", "VK_MEMBEROF", "VK_ENTRY_POINT", "VK_NOT", "VK_IN", "VK_OR", "VK_AND", "VK_EXISTS", "VK_FORALL", "VK_FROM", "VK_ACCUMULATE", "VK_INIT", "VK_ACTION", "VK_REVERSE", "VK_RESULT", "VK_COLLECT", "SEMICOLON", "ID", "DOT", "DOT_STAR", "END", "STRING", "LEFT_PAREN", "COMMA", "RIGHT_PAREN", "COLON", "BOOL", "INT", "DOUBLE_PIPE", "DOUBLE_AMPER", "ARROW", "EQUAL", "GREATER", "GREATER_EQUAL", "LESS", "LESS_EQUAL", "NOT_EQUAL", "GRAVE_ACCENT", "FLOAT", "NULL", "LEFT_SQUARE", "RIGHT_SQUARE", "THEN", "LEFT_CURLY", "RIGHT_CURLY", "MISC", "EOL", "WS", "EscapeSequence", "HexDigit", "UnicodeEscape", "OctalEscape", "SH_STYLE_SINGLE_LINE_COMMENT", "C_STYLE_SINGLE_LINE_COMMENT", "MULTI_LINE_COMMENT"
     };
     public static final int COMMA=92;
     public static final int VT_PATTERN_TYPE=37;
@@ -18,25 +18,25 @@
     public static final int VK_DIALECT=52;
     public static final int VK_FUNCTION=63;
     public static final int END=89;
-    public static final int HexDigit=117;
+    public static final int HexDigit=118;
     public static final int VK_ATTRIBUTES=55;
     public static final int VT_EXPRESSION_CHAIN=28;
     public static final int VK_ACCUMULATE=79;
-    public static final int MISC=113;
+    public static final int MISC=114;
     public static final int VT_AND_PREFIX=21;
     public static final int VK_QUERY=61;
-    public static final int THEN=110;
+    public static final int THEN=111;
     public static final int VK_AUTO_FOCUS=47;
     public static final int DOT=87;
     public static final int VK_IMPORT=58;
     public static final int VT_SLOT=14;
     public static final int VT_PACKAGE_ID=38;
-    public static final int LEFT_SQUARE=108;
-    public static final int SH_STYLE_SINGLE_LINE_COMMENT=120;
+    public static final int LEFT_SQUARE=109;
+    public static final int SH_STYLE_SINGLE_LINE_COMMENT=121;
     public static final int VT_DATA_TYPE=36;
     public static final int VK_MATCHES=67;
     public static final int VT_FACT=6;
-    public static final int LEFT_CURLY=111;
+    public static final int LEFT_CURLY=112;
     public static final int LEFT_PAREN=91;
     public static final int DOUBLE_AMPER=98;
     public static final int VT_QUERY_ID=9;
@@ -46,13 +46,14 @@
     public static final int VK_SOUNDSLIKE=69;
     public static final int VK_SALIENCE=53;
     public static final int VT_FIELD=33;
-    public static final int WS=115;
+    public static final int WS=116;
     public static final int STRING=90;
     public static final int VK_AND=75;
     public static final int VT_ACCESSOR_ELEMENT=35;
     public static final int VK_GLOBAL=64;
     public static final int VT_ACCUMULATE_INIT_CLAUSE=25;
     public static final int VK_REVERSE=82;
+    public static final int GRAVE_ACCENT=106;
     public static final int VK_DURATION=51;
     public static final int VT_SQUARE_CHUNK=18;
     public static final int VK_FORALL=77;
@@ -60,7 +61,7 @@
     public static final int VT_PAREN_CHUNK=19;
     public static final int VK_ENABLED=54;
     public static final int VK_RESULT=83;
-    public static final int UnicodeEscape=118;
+    public static final int UnicodeEscape=119;
     public static final int VK_PACKAGE=59;
     public static final int VT_RULE_ID=11;
     public static final int EQUAL=100;
@@ -68,17 +69,17 @@
     public static final int SEMICOLON=85;
     public static final int VK_TEMPLATE=60;
     public static final int VT_AND_IMPLICIT=20;
-    public static final int NULL=107;
+    public static final int NULL=108;
     public static final int COLON=94;
-    public static final int MULTI_LINE_COMMENT=122;
+    public static final int MULTI_LINE_COMMENT=123;
     public static final int VT_RULE_ATTRIBUTES=15;
-    public static final int RIGHT_SQUARE=109;
+    public static final int RIGHT_SQUARE=110;
     public static final int VK_AGENDA_GROUP=49;
     public static final int VT_FACT_OR=31;
     public static final int VK_NOT=72;
     public static final int VK_DATE_EXPIRES=44;
     public static final int ARROW=99;
-    public static final int FLOAT=106;
+    public static final int FLOAT=107;
     public static final int VT_SLOT_ID=13;
     public static final int VT_CURLY_CHUNK=17;
     public static final int VT_OR_PREFIX=22;
@@ -86,7 +87,7 @@
     public static final int LESS=103;
     public static final int VT_PATTERN=29;
     public static final int VK_DATE_EFFECTIVE=43;
-    public static final int EscapeSequence=116;
+    public static final int EscapeSequence=117;
     public static final int VK_EXISTS=76;
     public static final int INT=96;
     public static final int VT_BIND_FIELD=32;
@@ -97,11 +98,11 @@
     public static final int VT_FACT_BINDING=30;
     public static final int ID=86;
     public static final int NOT_EQUAL=105;
-    public static final int RIGHT_CURLY=112;
+    public static final int RIGHT_CURLY=113;
     public static final int VK_ENTRY_POINT=71;
     public static final int VT_AND_INFIX=23;
+    public static final int VT_PARAM_LIST=42;
     public static final int BOOL=95;
-    public static final int VT_PARAM_LIST=42;
     public static final int VT_FROM_SOURCE=27;
     public static final int VK_CONTAINS=66;
     public static final int VK_LOCK_ON_ACTIVE=45;
@@ -121,17 +122,17 @@
     public static final int EOF=-1;
     public static final int VT_CONSTRAINTS=7;
     public static final int VT_IMPORT_ID=39;
-    public static final int EOL=114;
+    public static final int EOL=115;
     public static final int VK_INIT=80;
     public static final int VK_ACTIVATION_GROUP=48;
-    public static final int OctalEscape=119;
+    public static final int OctalEscape=120;
     public static final int VK_ACTION=81;
     public static final int VK_FROM=78;
     public static final int VK_EXCLUDES=68;
     public static final int RIGHT_PAREN=93;
     public static final int VT_TEMPLATE_ID=10;
     public static final int VK_DECLARE=62;
-    public static final int C_STYLE_SINGLE_LINE_COMMENT=121;
+    public static final int C_STYLE_SINGLE_LINE_COMMENT=122;
 
         public Tree2TestDRL(TreeNodeStream input) {
             super(input);
@@ -2412,7 +2413,7 @@
                         int alt31=2;
                         int LA31_0 = input.LA(1);
 
-                        if ( (LA31_0==VT_FACT||LA31_0==VT_PAREN_CHUNK||(LA31_0>=VT_FACT_BINDING && LA31_0<=VT_ACCESSOR_PATH)||(LA31_0>=VK_EVAL && LA31_0<=VK_MEMBEROF)||LA31_0==VK_IN||LA31_0==ID||LA31_0==STRING||(LA31_0>=BOOL && LA31_0<=DOUBLE_AMPER)||(LA31_0>=EQUAL && LA31_0<=NULL)) ) {
+                        if ( (LA31_0==VT_FACT||LA31_0==VT_PAREN_CHUNK||(LA31_0>=VT_FACT_BINDING && LA31_0<=VT_ACCESSOR_PATH)||(LA31_0>=VK_EVAL && LA31_0<=VK_MEMBEROF)||LA31_0==VK_IN||LA31_0==ID||LA31_0==STRING||(LA31_0>=BOOL && LA31_0<=DOUBLE_AMPER)||(LA31_0>=EQUAL && LA31_0<=NOT_EQUAL)||(LA31_0>=FLOAT && LA31_0<=NULL)) ) {
                             alt31=1;
                         }
 
@@ -2501,7 +2502,7 @@
                         int alt33=2;
                         int LA33_0 = input.LA(1);
 
-                        if ( (LA33_0==VT_FACT||LA33_0==VT_PAREN_CHUNK||(LA33_0>=VT_FACT_BINDING && LA33_0<=VT_ACCESSOR_PATH)||(LA33_0>=VK_EVAL && LA33_0<=VK_MEMBEROF)||LA33_0==VK_IN||LA33_0==ID||LA33_0==STRING||(LA33_0>=BOOL && LA33_0<=DOUBLE_AMPER)||(LA33_0>=EQUAL && LA33_0<=NULL)) ) {
+                        if ( (LA33_0==VT_FACT||LA33_0==VT_PAREN_CHUNK||(LA33_0>=VT_FACT_BINDING && LA33_0<=VT_ACCESSOR_PATH)||(LA33_0>=VK_EVAL && LA33_0<=VK_MEMBEROF)||LA33_0==VK_IN||LA33_0==ID||LA33_0==STRING||(LA33_0>=BOOL && LA33_0<=DOUBLE_AMPER)||(LA33_0>=EQUAL && LA33_0<=NOT_EQUAL)||(LA33_0>=FLOAT && LA33_0<=NULL)) ) {
                             alt33=1;
                         }
 
@@ -2868,7 +2869,7 @@
                     int alt41=2;
                     int LA41_0 = input.LA(1);
 
-                    if ( (LA41_0==VT_FACT||LA41_0==VT_PAREN_CHUNK||(LA41_0>=VT_FACT_BINDING && LA41_0<=VT_ACCESSOR_PATH)||(LA41_0>=VK_EVAL && LA41_0<=VK_MEMBEROF)||LA41_0==VK_IN||LA41_0==ID||LA41_0==STRING||(LA41_0>=BOOL && LA41_0<=DOUBLE_AMPER)||(LA41_0>=EQUAL && LA41_0<=NULL)) ) {
+                    if ( (LA41_0==VT_FACT||LA41_0==VT_PAREN_CHUNK||(LA41_0>=VT_FACT_BINDING && LA41_0<=VT_ACCESSOR_PATH)||(LA41_0>=VK_EVAL && LA41_0<=VK_MEMBEROF)||LA41_0==VK_IN||LA41_0==ID||LA41_0==STRING||(LA41_0>=BOOL && LA41_0<=DOUBLE_AMPER)||(LA41_0>=EQUAL && LA41_0<=NOT_EQUAL)||(LA41_0>=FLOAT && LA41_0<=NULL)) ) {
                         alt41=1;
                     }
                     switch (alt41) {
@@ -3387,8 +3388,8 @@
     public static final BitSet FOLLOW_param_definition_in_parameters257 = new BitSet(new long[]{0x0000001000000008L,0x0000000000400000L});
     public static final BitSet FOLLOW_data_type_in_param_definition270 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_argument_in_param_definition273 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_ID_in_argument284 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
-    public static final BitSet FOLLOW_dimension_definition_in_argument286 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_argument284 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_dimension_definition_in_argument286 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
     public static final BitSet FOLLOW_VK_TEMPLATE_in_template300 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_TEMPLATE_ID_in_template302 = new BitSet(new long[]{0x0000000000004000L});
     public static final BitSet FOLLOW_template_slot_in_template304 = new BitSet(new long[]{0x0000000000004000L,0x0000000002000000L});
@@ -3482,25 +3483,25 @@
     public static final BitSet FOLLOW_VT_PATTERN_in_lhs_pattern780 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_lhs_pattern782 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_DOUBLE_PIPE_in_fact_expression795 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression797 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression797 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression799 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_DOUBLE_AMPER_in_fact_expression806 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression808 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression808 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression810 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_BINDING_in_fact_expression817 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression819 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression819 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression821 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FACT_in_fact_expression828 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_pattern_type_in_fact_expression830 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression832 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_pattern_type_in_fact_expression830 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression832 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_VT_FACT_OR_in_fact_expression840 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression842 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression842 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression844 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EVAL_in_fact_expression851 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression853 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_IN_in_fact_expression860 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression862 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression865 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression862 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression865 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_EQUAL_in_fact_expression873 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression875 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_GREATER_in_fact_expression882 = new BitSet(new long[]{0x0000000000000004L});
@@ -3514,29 +3515,29 @@
     public static final BitSet FOLLOW_NOT_EQUAL_in_fact_expression918 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression920 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_CONTAINS_in_fact_expression927 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression929 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression929 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression932 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_EXCLUDES_in_fact_expression939 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression941 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression941 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression944 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_MATCHES_in_fact_expression951 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression953 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression953 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression956 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_SOUNDSLIKE_in_fact_expression963 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression965 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression965 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression968 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VK_MEMBEROF_in_fact_expression975 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression977 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression977 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression980 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_ID_in_fact_expression987 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VK_NOT_in_fact_expression989 = new BitSet(new long[]{0x00000007C00C0040L,0x00000FF78440027EL});
-    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression992 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VK_NOT_in_fact_expression989 = new BitSet(new long[]{0x00000007C00C0040L,0x00001BF78440027EL});
+    public static final BitSet FOLLOW_VT_SQUARE_CHUNK_in_fact_expression992 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression995 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_BIND_FIELD_in_fact_expression1002 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1004 = new BitSet(new long[]{0x00000007C0080040L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_VT_LABEL_in_fact_expression1004 = new BitSet(new long[]{0x00000007C0080040L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1006 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_FIELD_in_fact_expression1013 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_fact_expression_in_fact_expression1015 = new BitSet(new long[]{0x00000007C0080048L,0x00000FF78440027EL});
+    public static final BitSet FOLLOW_fact_expression_in_fact_expression1015 = new BitSet(new long[]{0x00000007C0080048L,0x00001BF78440027EL});
     public static final BitSet FOLLOW_fact_expression_in_fact_expression1017 = new BitSet(new long[]{0x0000000000000008L});
     public static final BitSet FOLLOW_VT_ACCESSOR_PATH_in_fact_expression1025 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_accessor_element_in_fact_expression1027 = new BitSet(new long[]{0x0000000800000008L});
@@ -3547,12 +3548,12 @@
     public static final BitSet FOLLOW_NULL_in_fact_expression1054 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_PAREN_CHUNK_in_fact_expression1059 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_PATTERN_TYPE_in_pattern_type1071 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_pattern_type1073 = new BitSet(new long[]{0x0000000000000008L,0x0000100000400000L});
-    public static final BitSet FOLLOW_dimension_definition_in_pattern_type1076 = new BitSet(new long[]{0x0000000000000008L,0x0000100000000000L});
+    public static final BitSet FOLLOW_ID_in_pattern_type1073 = new BitSet(new long[]{0x0000000000000008L,0x0000200000400000L});
+    public static final BitSet FOLLOW_dimension_definition_in_pattern_type1076 = new BitSet(new long[]{0x0000000000000008L,0x0000200000000000L});
     public static final BitSet FOLLOW_VT_DATA_TYPE_in_data_type1090 = new BitSet(new long[]{0x0000000000000004L});
-    public static final BitSet FOLLOW_ID_in_data_type1092 = new BitSet(new long[]{0x0000000000000008L,0x0000100000400000L});
-    public static final BitSet FOLLOW_dimension_definition_in_data_type1095 = new BitSet(new long[]{0x0000000000000008L,0x0000100000000000L});
-    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition1108 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_ID_in_data_type1092 = new BitSet(new long[]{0x0000000000000008L,0x0000200000400000L});
+    public static final BitSet FOLLOW_dimension_definition_in_data_type1095 = new BitSet(new long[]{0x0000000000000008L,0x0000200000000000L});
+    public static final BitSet FOLLOW_LEFT_SQUARE_in_dimension_definition1108 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
     public static final BitSet FOLLOW_RIGHT_SQUARE_in_dimension_definition1110 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_VT_ACCESSOR_ELEMENT_in_accessor_element1122 = new BitSet(new long[]{0x0000000000000004L});
     public static final BitSet FOLLOW_ID_in_accessor_element1124 = new BitSet(new long[]{0x0000000000040008L});

Modified: labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl
===================================================================
--- labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl	2008-06-05 16:54:38 UTC (rev 20341)
+++ labs/jbossrules/branches/parser-rewrite/drools-compiler/src/test/resources/org/drools/lang/pluggable_operators.drl	2008-06-05 17:09:22 UTC (rev 20342)
@@ -3,9 +3,9 @@
 rule "test pluggable operators"
 when
     $a : EventA()
-    $b : EventB( this after[1,10] $a )
+    $b : EventB( this ` after[1,10] $a )
     $c : EventC( this finishes $b )
     $d : EventD( this not starts $a )
-    $e : EventE( this not before [1, 10] $b )
+    $e : EventE( this not ` before [1, 10] $b )
 then
 end
\ No newline at end of file




More information about the jboss-svn-commits mailing list